实验内容:
1、周期信号的傅里叶级数与GIBBS现象
给定如一个周期信号如图所示:
Q2-1: 分别手工计算x1(t) 的傅里叶级数的系数。
信号x1(t) 在其主周期内的数学表达式为:
计算x1(t) 的傅里叶级数的系数的计算过程如下:
解:首先,我们根据前面所给出的公式,计算该信号的傅里叶级数的系数。
()
在MATLAB命令窗口,依次键入:
>> k = -10:10;
>> ak = sin(0.2*(k+eps)*pi)./((k+eps)*pi)
用MATLAB帮助你计算出你手工计算的傅里叶级数的系数ak从-10到10共21个系数。
从命令窗口上抄写x1(t)的21个系数如下:
Columns 1 through 4
0.0000 -0.0208 -0.0378 -0.0432
Columns 5 through 8
-0.0312 0.0000 0.0468 0.1009
Columns 9 through 12
0.1514 0.1871 0.2000 0.1871
Columns 13 through 16
0.1514 0.1009 0.0468 0.0000
Columns 17 through 20
-0.0312 -0.0432 -0.0378 -0.0208
Columns21
0.00000
Q2-2:仿照程序Program2_1,编写程序Q2_2,以计算x1(t)的傅里叶级数的系数。
程序Q2_2如下:
>> %Q2-2
>> clear,close all,
>> T=2;dt=0.00001;t=-2:dt:2;
>> x1=u(t+0.2)-u(t-0.2-dt);
>> x=0;
>> for m=-1:1
x=x+u(t+0.2-m*T)-u(t-0.2-m*T-dt);
end
>> w0=2*pi/T;
>> N=10;
>> L=2*N+1;
>> for k=-N:N;
ak(N+1+k)=(1/T)*x1*exp(-j*k*w0*t')*dt;
end
>> phi=angle(ak);
执行程序Q2_2所得到的x1(t)的傅里叶级数的ak从-10到10共21个系数如下:
Columns 1 through 3
0.0000 + 0.0000i -0.0208 - 0.0000i -0.0378 - 0.0000i
Columns 4 through 6
-0.0433 - 0.0000i -0.0312 - 0.0000i -0.0000 - 0.0000i
Columns 7 through 9
0.0468 + 0.0000i 0.1009 + 0.0000i 0.1514 + 0.0000i
Columns 10 through 12
0.1871 + 0.0000i 0.2000 0.1871 - 0.0000i
Columns 13 through 15
0.1514 - 0.0000i 0.1009 - 0.0000i 0.0468 - 0.0000i
Columns 16 through 18
-0.0000 + 0.0000i -0.0312 + 0.0000i -0.0433 + 0.0000i
Columns 19 through 21
-0.0378 + 0.0000i -0.0208 + 0.0000i 0.0000 - 0.0000i
与你手工计算的ak相比较,是否相同,如有不同,是何原因造成的?
答:手工计算与编程计算相比不同,有点误差。原因可能是:手工计算时经常采用四舍五入法取近似值,所以可能造成一定误差。
Q2-3:仿照程序Program2_2,编写程序Q2_3,计算并绘制出原始信号x1(t) 的波形图,用有限项级数合成的y1(t) 的波形图,以及x1(t) 的幅度频谱和相位频谱的谱线图。
编写程序Q2_3如下:
>> %Q2-3
>> clear,close all,
>> T=2;dt=0.00001;t=-2:dt:2;
>> x1=u(t+0.2)-u(t-0.2-dt);x=0;
>> for m=-1:1
x=x+u(t+0.2-m*T)-u(t-0.2-m*T-dt);
end
>> w0=2*pi/T;N=10; L=2*N+1;
>> for k=-N:1:N;
ak(N+1+k)=(1/T)*x1*exp(-j*k*w0*t')*dt;
end
>> phi=angle(ak);
>> y=0;for q=1:L;
y=y+ak(q)*exp(j*(-(L-1)/2+q-1)*2*pi*t/T);
end;
>> subplot(221),
>> plot(t,x),title('The original signal x(t)'),axis([-2,2,-0.2,1.2]),
> >subplot(223),
>> plot(t,y),title('The synthesis signal y(t)'),
>> axis([-2,2,-0.2,1.2]),xlabel('Time t'),
>> subplot(222)
>>k=-N:N;stem(k,abs(ak),'k.'),
title('The amplitude |ak| of x(t)'),axis([-N,N,-0.1,0.6])
>> subplot(224)
>>stem(k,phi,'r.'),
title('The phase phi(k) of x(t)'),axis([-N,N,-2,2]),xlabel('Index k')
执行程序Q2_3,输入N = 10所得到的图形如下:
反复执行程序Q2_3,输入不同的N值,观察合成的信号波形中,是否会产生Gibbs现象?为什么?;
答:会产生。可能是因为图像数据在各个边界不连续造成的。
Q2-4:回答如下问题:
1、从信号分解的角度,谈谈你对周期信号的傅里叶级数的理解。
答:并非任意的周期信号都能进行傅里叶级数的展开,被展开的函数必须满足狄里赫利条件:在一周期内,如果有间断点存在,则间断点的数目应是有限个;在一周期内,极大值和极小值的数目应是有限个;在一周期内,信号时绝对可积的。
一般来说,任意周期信号都可以分解为无限多项傅里叶级数,但在实际应用中,经常采用有限项来代替无限项级数。所以,所选项数越多,有限项级数愈逼近原函数,也就是其方均误差愈小。
2、从信号分解的角度,谈谈你对傅里叶变换及其物理意义的理解,谈谈你对信号频谱概念的理解。
答:傅里叶变换是把各种形式的信号用正弦信号表示,因此非正弦信号进行傅里叶变换,会得到与原信号频率不同的成分——都是原信号频率的整数倍。这些高频信号是用来修饰频率与原信号相同的正弦信号,使之趋近于原信号;而其物理意义可以理解为:傅立叶变换将原来难以处理的时域信号转换成了易于分析的频域信号(信号的频谱),可以利用一些工具对这些频域信号进行处理、加工。最后还可以利用傅立叶反变换将这些频域信号转换成时域信号;对一个时域信号进行傅里叶变换,就可以得到的信号的频谱,信号的频谱由两部分构成:幅度谱和相位谱。 下载本文