syms t n k y
if nargin<4;Nf = input('please input 所需展开的最高谐波次数:'); end T = 5;
if nargin<5;Nn = 32;end y = time_fun_s(t); A0 = 2*int(y,t,0,T)/T;
As = int(2*y*cos(2*pi*n*t/T)/T,t,0,T); Bs = int(2*y*sin(2*pi*n*t/T)/T,t,0,T); A_sym(1) = double(vpa(A0,Nn)); for k = 1:Nf
A_sym(k+1) = double(vpa(subs(As,n,k),Nn)); B_sym(k+1) = double(vpa(subs(Bs,n,k),Nn)); end
if nargout == 0 S1 = fliplr(A_sym) S1(1,k+1)=A_sym(1); S2=fliplr(1/2*S1) S3=fliplr(1/2*B_sym) S3(1,k+1) = 0; S4=fliplr(S3) S5 = S2-i*S4; N = Nf*2*pi/T; k2 = 0:2*pi/T:N; subplot 211
x = squ_timefun(t,T); T = 5;t =-2*T:0.01:2*T; plot(t,x)
title('周期方波脉冲') axis([-10,10,-1.2,1.2]) line([-10,10],[0,0]) subplot 212 stem(k2,abs(S5));
title('周期方波脉冲的单边频谱') axis([0,60,0,0.6]) end
%---------------------------------- function y = time_fun_s(t)
syms a a1
T = 5;a = T/2;
y1 = sym('Heaviside(t)')*2-sym('Heaviside(t-a1)'); y = y1-sym('Heaviside(t+a1)');
y = subs(y,a1,a); y = simple(y);
%------------------------------------------------------------------------
function x = squ_timefun(t,T) T =5;t=-2*T:0.01:2*T;duty =50; x = square(t,duty);
程序运行结果如图3所示
周期方波脉冲10.50-0.5-1-10-8-6-4-20246810周期方波脉冲的单边频谱0.40.200102030405060
图3
②已知周期三角波脉冲如图4所示,周期T=5,其幅度为±1,试用Matlab绘出该信号的频谱。 源程序如下:
function [A_sym,B_sym]=CTFSsjbshb(T,Nf)
syms t n k y
if nargin<4;Nf = input('please input所需展开的最高谐波次数:'); end T = 5;
if nargin<5;Nn = 32;end y = time_fun_s1(t); A0 = 2*int(y,t,0,T)/T;
As = int(2*y*cos(2*pi*n*t/T)/T,t,0,T); Bs = int(2*y*sin(2*pi*n*t/T)/T,t,0,T); A_sym(1) = double(vpa(A0,Nn)); for k = 1:Nf
A_sym(k+1) = double(vpa(subs(As,n,k),Nn)); B_sym(k+1) = double(vpa(subs(Bs,n,k),Nn)); end
if nargout == 0 S1 = fliplr(A_sym) S1(1,k+1)=A_sym(1);
S2=fliplr(1/2*S1) S3=fliplr(1/2*B_sym) S3(1,k+1) = 0; S4=fliplr(S3) S5 = S2-i*S4; S6 = fliplr(S5); N = Nf*2*pi/T; k2 = -N:2*pi/T:N; S7 = [S6,S5(2:end)]; subplot 211
x = sjb_timefun(t,T); T = 5;t =-2*T:0.01:2*T; plot(t,x)
title('连续时间函数——周期三角波脉冲') axis([-10,10,-1.2,1.2]) line([-10,10],[0,0]) subplot 212 stem(k2,abs(S7));
title('连续时间函数周期三角脉冲的双边幅度谱') axis([-80,80,0,0.25]) end
%--------------------------------------------------------------------------------------
function y = time_fun_s1(t)
syms a a1 T = 5;a = T/2; y1 =
sym('Heaviside(t+a1)')*(2*t/a1+1)+sym('Heaviside(t-a1)')*(2*t/a1-1); y = y1-sym('Heaviside(t)')*(4*t/a1); y = subs(y,a1,a); y = simple(y);
%---------------------------------------------------------------------------------------
function x = sjb_timefun(t,T)
T =5;t = -2*T:0.01:2*T; x = sawtooth(t-2*T/3,0.5);
程序运行结果如图4所示
连续时间函数——周期三角波脉冲10.50-0.5-1-10-8-6-4-20246810连续时间函数周期三角脉冲的双边幅度谱0.20.150.10.050-80-60-40-20020406080
图4
(3)非周期信号频谱分析的Matlab实现 利用Matlab绘出信号f?t??源程序如下:
syms t v w x;
x = 1/2*exp(-2*t)*sym('Heaviside(t)'); F = fourier(x); subplot 211; ezplot(x); subplot 212; ezplot(abs(F))
% function f = Heaviside(t) %f = (t>0);
12e?2tu?t?及其频谱图。
运行结果如图5所示:
1/2 exp(-2 t) heaviside(t)0.40.2000.51t1/2/abs(2+i w)0.250.20.150.1-6-4-20w2461.52
图5
5 实验要求
(1)在Matlab中输入程序,验证实验结果,并将实验结果存入指定存储区域。 (2)将以上过程写入实验报告中,并思考以下问题。
①周期信号的频谱的物理含义是什么?
周期信号的频谱分析核心是把信号分解为不同频率的虚指数之和 ②周期信号频谱有何特点?其谱线间隔和什么有关?
离散频谱特性:所有周期信号的频谱都是由间隔为wo的谱线组成
幅度衰减特性:随着谐波now增大,幅度频谱|cn|不断衰减,并最终趋于0.
谱线间隔wo和To有关,To越大,谱线间隔wo越小,谱线越密,反之,To越小,wo越大,谱线越疏。
③非周期信号频谱有何特点,其物理含义是什么? 非周期信号为连续谱。

