资源描述:
《计算离散傅立叶变换矩阵DFT课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验七:离散傅里叶变换及FFT的应用信息工程学院网络工程系强文萍1、掌握离散傅立叶变换(DFT)的计算方法及意义;2、掌握实数序列的DFT系数的对称特点;3、学习利用DFT计算程序计算IDFT的方法;4、利用FFT对信号进行频谱分析。5、分析DFT计算模拟信号中出现的问题一、实验目的二、实验仪器微型计算机MATLAB软件三、实验原理有限长序列x(n)的离散傅里叶变换(DFT):正变换反变换三、实验原理N=12;n=0:N-1;xn=cos(n*pi/6);k=0:N-1;WN=exp(-j*2*pi/N);nk=n'*k;WNnk=WN.^nk
2、;Xk=xn*WNnk;figure(1);stem(n,xn);figure(2);stem(k,abs(Xk));例1:求序列的12点离散傅里叶变换(DFT)1.利用矩阵乘法计算三、实验原理WN=exp(-j*2*pi/N);nk=n'*k;WNnk=WN.^(-nk);xn=(Xk*WNnk)/N;figure(3);Subplot(211);stem(k,abs(Xk));Subplot(212);Stem(n,real(xn));求上述频域序列X(K)的12点离散傅里叶反变换(IDFT)计算离散傅立叶变换矩阵(DFT)w=dftmtx
3、(n)其中n为采样点,返回W阵DFT正变换:DFT反变换:2.利用傅里叶变换矩阵计算Xk=xn*w其中conj是求复数的共轭三、实验原理例2若x(n)=8(0.4)n是一个N=20的有限长序列,利用MATLAB计算它的DFT,并画出图形。N=20;n=0:N-1;xn=8*((0.4).^n);w=dftmtx(20);Xk=xn*w;subplot(3,1,1)stem(n,xn),title('xn')subplot(3,1,2)stem(abs(Xk));title('Xk')w1=conj(w)/N;xn1=Xk*w1;Subplot(
4、3,1,3)stem(n,abs(xn1));title('xn1')实验程序:三、实验原理三、实验原理有限长序列x(n)的快速傅里叶变换(FFT):MATLAB为计算数据的离散快速傅立叶变换,提供了一系列丰富的数学函数,主要有fft、Ifft、fft2、Ifft2,fftn、ifftn和fftshift、Ifftshift等。当所处理的数据的长度为2的幂次时,采用基-2算法进行计算,计算速度会显著增加。要尽可能使所要处理的数据长度为2的幂次或者用添零的方式来添补数据使之成为2的幂次。三、实验原理fft和ifft函数调用方式:Y=fft(X)参
5、数说明:如果X是向量,则采用傅立叶变换来求解X的离散傅立叶变换;如果X是矩阵,则计算该矩阵每一列的离散傅立叶变换;三、实验原理参数说明:N是进行离散傅立叶变换的X的数据长度,可以通过对X进行补零或截取来实现。函数ifft的参数应用与函数fft完全相同。调用方式:Y=fft(X,N)Y=fft(X,N)X=ifft(Y,N)例3如果是一个16点的有限序列,用MATLAB求其DFT的结果,并画出其结果图。三、实验原理N=16;n=0:1:N-1;xn=sin(n*pi/8)+sin(n*pi/4);k=0:1:N-1;WN=exp(-j*2*pi/
6、N);nk=n'*k;WNnk=WN.^nk;Xk=xn*WNnk;subplot(3,1,1);stem(n,xn);%x(n)subplot(3,1,2);stem(k,abs(Xk));%X(k)WNnk1=WN.^(-nk);xn1=(Xk*WNnk1)./N;subplot(3,1,3);%X(k)的反变换stem(n,real(xn1));解1:三、实验原理N=16;n=0:1:N-1;xn=sin(n*pi/8)+sin(n*pi/4);Xk=fft(xn,N);subplot(3,1,1);stem(n,xn);subplot(
7、3,1,2);k=n;stem(k,abs(Xk));n1=ifft(Xk,N);subplot(3,1,3);stem(n,real(xn1));解2:用fft()和ifft()函数三、实验原理例4对连续的单一频率周期信号按采样频率采样,截取长度N分别选N=20和N=16,观察其DFT结果的幅度谱。时域离散离散序列即k=8。三、实验原理k=8;n1=[0:1:19];xa1=sin(2*pi*n1/k);subplot(2,2,1)plot(n1,xa1);title('20点序列');xlabel('t/T');ylabel('x(n)')
8、;xk1=fft(xa1);xk1=abs(xk1);subplot(2,2,2)stem(n1,xk1);title('20点DFT');xlabe