MATLAB在离散傅立叶变换(DFT)中的应用一、序列的移位和周期延拓运算。已知)()8.0()(8nRnxn,利用MATLAB生成并图示序列),(),(mnxnx和)())((8nRnxN),())((8nRmnxN其中为周期的延拓。以表示8)())((,0,248nxnxNmN解:MATLAB程序清单如下:N=24;M=8;m=3;%设移位值为3n=0:N-1;xn=0.8.^n.*(n=0&nM);%产生序列x(n)subplot(3,1,1);stem(n,xn,'.');grid;axis([0length(xn),01]);title('序列x(n)');xc=xn(mod(n,8)+1);%产生序列x(n)的周期延拓,求余后加1是因为%MATLAB矢量的下标从1开始subplot(3,1,2);stem(n,xc,'.');grid;axis([0length(xc),01]);title('序列x(n)的周期延拓序列');xm=[xn(m+1:M)xn(1:m)];%产生圆周移位序列xm=x((n+m))NRN(n)xm=[xmzeros(1,N-length(xm))];subplot(3,1,3);stem(n,xm,'.');grid;axis([0length(xm),01]);title('圆周移位序列x(n+m)');二、利用MATLAB验证N点DFT的物理意义。jjjweenxDFTeXDTFTnRnx11)]([)()(),()(44其离散时间傅立叶变换已知有限长序列试绘制出)(jeX幅度频谱和相位频谱,并分别计算N=8和N=16时的DFT。解:MATLAB程序清单如下:clf%清除所有的图形窗口N1=8;N2=16;%设置两种DFT的长度n=0:N1-1;k1=n;k2=0:N2-1;w=(0:2047)*2*pi/2048;Xw=(1-exp(-j*4*w))./(1-exp(-j*w));%对x(n)的频谱采样2048点xn=[n=0&n4];%产生序列x(n)Xk1=fft(xn,N1);%计算序列x(n)的8点DFTXk2=fft(xn,N2);%计算序列x(n)的16点DFTsubplot(3,1,1);plot(w/pi,abs(Xw));%绘制序列x(n)的DTFT的幅频曲线grid;title('序列x(n)的幅频曲线|X(e^{j\omega})|');subplot(3,1,2);stem(k1*2/N1,abs(Xk1),'.');grid;title('序列x(n)的8点DFT');subplot(3,1,3);stem(k2,abs(Xk2),'.');grid;title('序列x(n)的16点DFT');%也可以利用MATLAB中的hold命令,将上述3个图形绘制在一个图中,程序如下:clf%清除所有的图形窗口N1=8;N2=16;%设置两种DFT的长度n=0:N1-1;k1=n;k2=0:N2-1;w=(0:2047)*2*pi/2048;Xw=(1-exp(-j*4*w))./(1-exp(-j*w));%对x(n)的频谱采样2048点xn=[n=0&n4];%产生序列x(n)Xk1=fft(xn,N1);%计算序列x(n)的8点DFTXk2=fft(xn,N2);%计算序列x(n)的16点DFTplot(w/pi,abs(Xw));%绘制序列x(n)的DTFT的幅频曲线hold%保持当前的图形窗口H1=stem(k1*2/N1,abs(Xk1),'o');set(H1,'color','r')H2=stem(k2*2/N2,abs(Xk2),'*');set(H2,'color','k');%legend('|X(e^{j\omega})|','X_1(k)','X_2(k)');上机练习题:已知一个12点的离散序列}1,2,3,4,5,6,6,5,4,3,2,1{)(nx,要求:(1)利用MATLAB计算序列的12点离散傅立叶变换(DFT))(kX,并绘出它的幅度和相位图;(2)利用MATLAB计算序列的离散时间傅立叶变换(DTFT)),(jeX并绘出它的幅度和相位图;(3)利用MATLAB的hold命令,将上述两张幅度频谱图合成一张,进行比较,以验证)(kX是)(jeX的抽样。三、验证DFT的共轭对称性分别以]5,4,3,2,1,0[)(],32,21,31,0,31,21,2,1[)(21nxjjjjjjnx两个序列为例,验证序列的DFT的对称性质。程序略。四、利用MATLAB验证两个序列的线性卷积和圆周卷积的关系已知两个有限长序列:()()2(1)3(2)4(3)5(4)xnnnnnn()()2(1)(2)2(3)hnnnnn编写一个计算两个任意有限长序列的圆周卷积matlab程序,计算这两个序列以下几种情况的圆周卷积,并与这两个序列的线性卷积结果相比较:①()xn⑤()hn②()xn⑥()hn②()xn⑨()hn③()xn⑩()hn程序略。五、利用快速卷积法计算两个序列的卷积已知序列)(9.0)(),()4.0sin()(2015nRnhnRnnxn试利用快速卷积法计算这两个序列的卷积)(*)()(nhnxny。解:快速卷积法的计算框图如下所示:L程序清单如下:Nx=15;Nh=20;n1=1:Nx-1;n2=0:Nh-1;xn=sin(0.4*n1).*(n1=0&n1Nx);%产生序列x(n)hn=0.9.^n2.*(n2=0&n2Nh);%产生序列h(n)L=pow2(nextpow2(Nx+Nh-1));%计算对序列x(n)和h(n)卷积后得到序列yn的长度Xk=fft(xn,L);%对序列x(n)作L点DFTHk=fft(hn,L);%对序列h(n)作L点DFTyn=ifft(Xk.*Hk);h(n)x(n)L点FFTL点IFFTL点FFTy(n)