文档详情

实验四离散傅里叶变换及其快速算法.doc

发布:2018-05-16约3.45千字共7页下载文档
文本预览下载声明
实验四 离散傅里叶变换掌握快速傅立叶变换的应用方法; 实验仪器:电脑一台,MATLAB6.5或更高级版本软件一套。 实验 (一)离散傅里叶变换 离散傅立叶级数变换是周期序列,仍不便于计算机计算。但离散傅立叶级数虽是周期序列,却只有个独立的数值,所以它的许多特性可以通过有限长序列延拓来得到。对于一个长度为的有限长序列,也即只在个点上有非零值,其余皆为零,即 把序列以N为周期进行周期延拓得到周期序列,则有: 所以,有限长序列的离散傅立叶变换(DFT)为: 逆变换为: 若将DFT变换的定义写成矩阵形式,则得到: X=A﹒ Dftmtx 函数:用来计算DFT变换矩阵A的函数 【实例4-1】 A=dftmtx(4) Ai=conj(dftmtx(4))/4 运行结果 A = 1.0000 1.0000 1.0000 1.0000 1.0000 0 - 1.0000i -1.0000 0 + 1.0000i 1.0000 -1.0000 1.0000 -1.0000 1.0000 0 + 1.0000i -1.0000 0 - 1.0000i Ai = 0.2500 0.2500 0.2500 0.2500 0.2500 0 + 0.2500i -0.2500 0 - 0.2500i 0.2500 -0.2500 0.2500 -0.2500 0.2500 0 - 0.2500i -0.2500 0 + 0.2500i 【实例4-2】如果是一个N=16的有限序列,用MATLAB求其DFT的结果,并画出其结果图,如图-1所示。 % 程序 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/N); nk=n*k; WNnk=WN.^nk; Xk=xn*WNnk; subplot(2,1,1) stem(n,xn); subplot(2,1,2) stem(k,abs(Xk));Xk = Columns 1 through 5 0.0000 -0.0000 - 8.0000i -0.0000 - 8.0000i 0.0000 - 0.0000i 0.0000 - 0.0000i Columns 6 through 10 -0.0000 - 0.0000i 0.0000 - 0.0000i 0.0000 - 0.0000i 0.0000 - 0.0000i 0.0000 - 0.0000i Columns 11 through 15 0.0000 - 0.0000i 0.0000 - 0.0000i 0.0000 - 0.0000i 0.0000 - 0.0000i 0.0000 + 8.0000i Column 16 0.0000 + 8.0000i 图 4-1 有限长序列的DFT结果图 思考:当N=8,16,24,48,分别执行程序得出什么结论?FFT将DFT的计算逐次分解成较小点数的DFT。按时间抽取Decimation-In-Time(DIT)FFT算法把输入序列按其值为偶数或是奇数分解成越来越短的序列。按频域抽取(Decimation-In-Frequency(DIF)FFT算法是把输出序列按其值是偶数或是奇数来分解成越来越短的序列。本实验重点是针对的DIT FFT或DIF FFT。 MATLAB为计算数据的离散快速傅立叶变换,提供了一系列丰富的数学函数,主要有fft、ifft、fft2 、ifft2, fftn、ifftn和fftshift、ifftshift等。当所处理的数据的长度为2的幂次时,采用基-2算法进行计算,计算速度会显著增加。所以,要尽可能使所要处理的数据长度为2的幂次或者用添零的方式来添补数据使之成为2的幂次。 MATLAB实现程序: clea
显示全部
相似文档