实验三:线性系统的频域分析
一、实验目的:
1、掌握傅立叶级数(FT),学会分析连续时间周期信号的频谱及MATLAB实现;
2、掌握傅立叶变换F(jw),了解傅立叶变换的性质以及MATLAB实现。
3、掌握信号抽样与恢复的原理,能够用MATLAB实现一般信号的采样与恢复。
二、实验内容:
1、练习并验证实验指导书上实验十----十四的内容。
2、画出书中P121(121页)的方波图形进行傅立叶级数展开,对其波的分解与
合成进行验证,并注意吉伯斯现象。
3、利用符号法中傅立叶变换函数:fourier(f,t,w) ifourier(F,w,t)对下列
函数进行正反傅氏变换
(1)求单位阶跃函数的微积分、正反傅氏变换Heaviside(t)
(2)求单位冲击函数的微积分、正反傅氏变换Dirac(t)
(3)求门宽为2的门函数的傅氏变换
4、利用数值法用定义求门宽为2的门函数的傅氏变换,画出频谱图,并对此信
号进行移时与移频,观察频谱的变化。与3中的(3)进行比较
5、编制一个抑制载波双边带幅度调制的程序,调制信号为正弦信号,频率为
10Hz,载频为100Hz,要求画出调制信号,已调信号的时域图形和频域图形。已
知调制函数:modulate(x, fc, fs, ‘am’) fft(f,N)
6、分别对抽样信号Sa(t)进行临界采样、过采样和欠采样、并由采样信号恢
复原信号,计算二者的误差并比较三种情况下的采样误差。
三、实验数据处理与结果分析:
*注:在运行以下的所有的程序时,其存储同根目录下已经存在 u(t)的M文件函数,程序如下: function f=u(t) f=(t>0);
1.画出书中P121(121页)的方波图形进行傅立叶级数展开,对其波的分解与
合成进行验证,并注意吉伯斯现象.
编写程序如下:
波的分解部分:
t=0:0.01:2*pi;
y=zeros(10,max(size(t)));
x=zeros(10,max(size(t))); for k=1:2:9 x1=sin(k*t)/k; x(k, : )=x(k, : )+x1; y((k+1)/2, : )=x(k, : );
end
plot(t,y(1:9, : )); grid on;
合成部分:
t=-1:0.001:1; omega=2*pi;
y=square(2*pi*t,50); plot(t,y),grid on
xlabel('t'),ylabel('周期方波信号') axis([-1 1 -1.5 1.5]) n_max=[1,3,5,11,47]; N=length(n_max); for k=1:N
n=1:2:n_max(k); b=4./(pi*n);
x=0;
x=x+b*sin(omega*n'*t); figure; plot(t,y); hold on; plot(t,x); hold off;
xlabel('t'),ylabel('部分和波形') axis([-1 1 -1.5 1.5]),grid on
title(['最大谐波数
=',num2str(n_max(k))]) end
原周期信号
最大谐波数=1:
最大谐波数=3:
最大谐波数=11:
最大谐波数=47时:
从上面的一系列图中可以看出,随着fourier级数的项数增多,部分和与周期方波信号的误差越来越小,在N=47时,部分和的波形与周期方波信号的波形很接近,但是在信号的跳点附近,总是存在一个过冲,这就是Gibbs现象。
2、利用符号法中傅立叶变换函数:fourier(f,t,w) ifourier(F,w,t)对下列函数进行正反傅氏变换
(1)求单位阶跃函数的微积分、正反傅氏变换Heaviside(t)
(2)求单位冲击函数的微积分、正反傅氏变换Dirac(t)
(3)求门宽为2的门函数的傅氏变换
(1)syms t w
f=sym('Heaviside(t)')
b=diff(f,t)
c=int(f,t)
F=fourier(f,t,w)
f=ifourier(F,w,t)
f1=simple(f)
在command window中看到的结果:
f =Heaviside(t)
b =Dirac(t)
c =Heaviside(t)*t
F =pi*Dirac(w)-i/w
f =1/2+1/2*Heaviside(t)-1/2*Heaviside(-t)
f1 =Heaviside(t)
(2)syms t w s
f=sym('Dirac(t)') a=int(f,t)
F=fourier(f,t,w) f=ifourier(F,w,t) f1=simple(f) L=laplace(f,t,s) f=ilaplace(L,s,t)
在command window 中看到的结果: f =Dirac(t)
a =Heaviside(t) F =1
f =Dirac(t) f1 =Dirac(t) (3)syms f
f=sym('Heaviside(t+1)-Heaviside(t-1)') F=fourier(f) ezplot(abs(F));
在command window 中看到的结果:
f =Heaviside(t+1)-Heaviside(t-1) F =2/w*sin(w) 绘出其频谱图形:
3、利用数值法用定义求门宽为2的门函数的傅氏变换,画出频谱图,并对此信
号进行移时与移频,观察频谱的变化。与3中的(3)进行比较程序如下:
dt=0.02;
t=-2:dt:2;
f=stepfun(t,-1)-stepfun(t,1);
W1=2*pi*5
N=2000;
k=-N:N;
W=k*W1/N;
F=dt*f*exp(-j*t'*W);
F=abs(F);
P=angle(F);
subplot(311);
plot(W,F);
xlabel('w');ylabel('F(jw)');title('频谱图F');
%频移
f1=f.*exp(-j*10*t);
F1=dt*f1*exp(-j*t'*W);
F1=abs(F1);
P1=angle(F1);
subplot(312);
plot(W,F1);
xlabel('w');ylabel('F1(jw)');title('频谱图F1');
%时移
f2=stepfun(t,1)-stepfun(t,3);
F2=dt*f2*exp(-j*t'*W);
F2=abs(F2);
P2=angle(F2);
subplot(313);
plot(W,F2);
xlabel('w');ylabel('F2(jw)');title('频谱图F2');
得到的是幅频图,对比上一题中(3)用公式法做的幅频特性图,二者相同。F1和F2分别是验证Fourier变换的频移性质和时移性质。符合理论性质。
4、编制一个抑制载波双边带幅度调制的程序,调制信号为正弦信号,频率为10Hz,载频为100Hz,要求画出调制信号,已调信号的时域图形和频域图形。
编写程序如下:
Fm=10;
Fc=100;
Fs=1000;
N=1000;
k=0:N-1;
t=k/Fs;
x=abs(sin(2.0*pi*Fm*t)); xf=abs(fft(x,N));
y2=modulate(x,Fc,Fs,'am');
subplot(211);plot(t(1:200),y2(1:200));
xlabel('时间(s )');ylabel('幅度');title('调幅信号'); yf=abs(fft(y2,N)); subplot(212); stem(yf(1:200));
xlabel('频率(H
)');ylabel('幅值');
理论上,DSB 信号的调制时在包络过零变化时会有相位180°的跳变,从上面第一幅图可以看出这种跳变。频谱图也与DSB 条幅波信号频谱相同。
5、分别对抽样信号Sa (t )进行临界采样、过采样和欠采样、并由采样信号恢 复原信号,计算二者的误差并比较三种情况下的采样误差。 临界采样程序:
wm=1;
wc=wm; Ts=pi/wm; fs=1/Ts; ws=2*pi*fs; n=-100:100; nTs=n*Ts;
f=sinc(nTs/pi); Dt=0.005; t=-15:Dt:15;
fa=f*Ts*wc/pi*sinc((wc/pi)*(ones(length(nTs),1)*t-nTs'*ones(1,length(t)))); t1=-15:0.5:15; f1=sinc(t1/pi); subplot(3,1,1); stem(t1,f1); subplot(3,1,2);
plot(t,fa)
e=abs(fa-sinc(t/pi));%误差 subplot(3,1,3); plot(t,e)
欠采样程序:
wm=1; wc=wm;
Ts=0.7*pi/wm; fs=1/Ts;
ws=2*pi*fs; n=-100:100; nTs=n*Ts;
f=sinc(nTs/pi); Dt=0.005; t=-15:Dt:15;
fa=f*Ts*wc/pi*sinc((wc/pi)*(ones(length(nTs),1)*t-nTs'*ones(1,length(t)))); t1=-15:0.5:15; f1=sinc(t1/pi); subplot(3,1,1); stem(t1,f1); subplot(3,1,2);
plot(t,fa)
e=abs(fa-sinc(t/pi));%误差 subplot(3,1,3); plot(t,e)
过采样程序:
wm=1; wc=wm;
Ts=1.5*pi/wm;
fs=1/Ts;
ws=2*pi*fs;
n=-100:100;
nTs=n*Ts;
f=sinc(nTs/pi);
Dt=0.005;
t=-15:Dt:15;
fa=f*Ts*wc/pi*sinc((wc/pi)*(ones(length(nTs),1)*t-nTs'*ones(1,length(t)))); t1=-15:0.5:15;
f1=sinc(t1/pi);
subplot(3,1,1);
stem(t1,f1);
subplot(3,1,2);
plot(t,fa)
e=abs(fa-sinc(t/pi));%误差
subplot(3,1,3);
plot(t,e)
四、实验总结:
本次实验的主要任务是连续时间系统的频域分析,通过前一阶段对MATLAB 实验内容的学习,这次实验我操作熟练了许多。我掌握了周期信号图形的傅里叶级数展开,会对其波进行分解和谐波的合成,在合成的过程中还观察到了Gibbs现象。对于不是周期性的信号,在本次实验中,对其进行傅里叶变换,得到F(jw),并对傅里叶变换一些性质进行验证,进一步深化了信号的时域和频域的关系。对于信号的抽样,我们由Nyquist抽样定理知道时域信号的抽样间隔,我还分别写出过采样、临界采样、欠采样三种情况的程序,并对其频谱进行了比较,验证了抽样定理的正确性。这次实验让我对课本上实验的内容有了进一步的巩固,更好地掌握了所学习的知识,以后仍需对这些软件多加练习。