FFT变换及其应用

实验报告 实验课程 数字信号处理 实验内容 实验5 FFT变换及其应用 院 (系) 计算机学院 专 业 通信工程 班 级 111班 2013年 6 月26日 一、 实验目的 1. 在理论学习的基础上,通过本实验,加深对FFT的理解,熟悉FFT子程序。

2. 熟悉应用FFT对典型信号进行频谱分析的方法。

3. 了解应用FFT进行信号频谱分析过程中可能出现的问题以便在实际中正确应用FFT。

二、 实验原理 在各种信号序列中,有限长序列信号处理占有很重要地位,对有限长序列,我们可以使用离散Fouier变换DFT。这一变换不但可以很好的反映序列的频谱特性,而且易于用快速算法在计算机上实现,当序列xn的长度为N时,它的DFT定义为 反变换为 有限长序列的DFT是其Z变换在单位圆上的等距采样,或者说是序列Fourier变换的等距采样,因此可以用于序列的谱分析。

FFT并不是与DFT不同的另一种变换,而是为了减少DFT运算次数的一种快速算法。它是对变换式进行一次次分解,使其成为若干小点数的组合,从而减少运算量。常用的FFT是以2为基数的,其长度 。它的效率高,程序简单,使用非常方便,当要变换的序列长度不等于2的整数次方时,为了使用以2为基数的FFT,可以用末位补零的方法,使其长度延长至2的整数次方。

一在运用DFT进行频谱分析的过程中可能产生三种误差 1混叠 序列的频谱被采样信号的周期延拓,当采样速率不满足奈奎斯特定理时,就会发生频谱混叠,使得采样后的信号序列频谱不能真实的反映原信号的频谱。避免混叠现象的唯一方法是保证采样速率足够高,使频谱混叠现象不致出现,即在确定采样频率之前,必须对频谱的性质有所了解,在一般情况下,为了保证高于折叠频率的分量不会出现,在采样前先用低通模拟滤波器对信号进行滤波。

2泄漏 实际中我们往往用截短的序列来近似很长的甚至是无限长的序列,这样可以使用较短的DFT来对信号进行频谱分析,这种截短等价于给原信号序列乘以一个矩形窗函数,也相当于在频域将信号的频谱和矩形窗函数的频谱卷积,所得的频谱是原序列频谱的扩展。泄漏不能与混叠完全分开,因为泄漏导致频谱的扩展,从而造成混叠。为了减少泄漏的影响,可以选择适当的窗函数使频谱的扩散减至最小。

3栅栏效应 DFT是对单位圆上Z变换的均匀采样,所以它不可能将频谱视为一个连续函数,就一定意义上看,用DFT来观察频谱就好像通过一个栅栏来观看一个图景一样,只能在离散点上看到真实的频谱,这样就有可能发生一些频谱的峰点或谷点被“尖桩的栅栏”所拦住,不能别我们观察到。

减小栅栏效应的一个方法就是借助于在原序列的末端填补一些零值,从而变动DFT的点数,这一方法实际上是人为地改变了对真实频谱采样的点数和位置,相当于搬动了每一根“尖桩栅栏”的位置,从而使得频谱的峰点或谷点暴露出来。

三、 实验内容及步骤 1用FFT计算连续时间信号的频谱。

分析该信号峰值为1,在t50其幅度小于0.0067,所以若选择LN*T50,则信号的主要部分将被覆盖,因信号有效长度不够导致的频谱泄漏可以忽略,可先在L50中选定几组采样组合T12,N125;T21,N250;T30.5,N3100;T40.1,N4500,作图查看采样频率在采样时间T为多少时,频谱混叠现象基本可以忽略。原理检查信号折叠频率处的幅度值,越小越好,一般可以将之与幅频特性曲线中的最大值相比较,若比值小于1则混叠可以忽略,当然为0更好(实际不可能)。然后固定采样时间T0.1,缩短信号取样长度,观察信号频谱什么时候出现明显泄漏,可固定T0.1,分别取N20,50,500,800观察。最后,可以将T0.1,N500与T0.1,N500后300点为补零点的频谱对比,试分析得出的结果。

1、L50中选定几组采样组合T12,N125;T21,N250;T30.5,N3100;T40.1,N4500,作图查看采样频率在采样时间T为多少时,频谱混叠现象基本可以忽略。

程序代码 T[2 1 0.5 0.1]; N[25 50 100 500]; for step114 n0Nstep-1; xexp-0.1*n*Tstep; subplot2,4,step; stemn,x; title[时域信号T,num2strTstep,,N,num2strNstep,]; xlabel时间; ylabel振幅; grid; subplot2,4,step4; hTstep*fftshiftfftx; D2*pi/Nstep*Tstep; kfloor-Nstep-1/2Nstep-1/2; plotk*D,absh; gabsh1/abshfixNstep/2; titleLine1 幅频特性; titleLine2[振幅 混叠系数η,num2strg,]; title[titleLine2;titleLine2]; 分成两行显示 xlabel模拟频率; ylabeltitleLine2; titletitleLine1; if step4 sp请输入幅频特性横轴显示范围; axis[-5 5 0 12]; elseif step2 axis[235 265 0 12]; end grid end str[]; dispstr; disp所有图形绘制完毕; str[]; dispstr; 矩阵赋值方法x[1 2 3]或x[1,2,3]是赋值一行,x[1;
2;
3]是赋值一列, x[1,2,3;4,5,6]是赋值两行三列矩阵。一个两行三列矩阵x,取数要用如x2,3方式取 字符串数组也类似,但字符串数组是以单个字符而非引号内的串为最小 存储单位,如str[abc,def;xyz,dgf]是两行六列的字符矩阵而非字符串矩阵 注意每行的字符数必须一样,否则矩阵失衡。x2,是取矩阵第二行 实验结果截图 2、 固定采样时间T0.1,缩短信号取样长度,观察信号频谱什么时候出现明显泄漏,可固定T0.1,分别取N20,50,500,800观察。

实验代码 T0.1; N[20 50 500 800]; for step114 n0Nstep-1; xexp-0.1*n*T; subplot2,4,step; stemn,x; title[时域信号T,num2strT,,N,num2strNstep,]; xlabel时间; ylabel振幅; grid; subplot2,4,step4; hT*fftshiftfftx; D2*pi/Nstep*T; kfloor-Nstep-1/2Nstep-1/2; plotk*D,absh; gabsh1/abshfixNstep/2; titleLine1 幅频特性; titleLine2[振幅 混叠系数η,num2strg,]; xlabel模拟频率; ylabeltitleLine2; titletitleLine1; end str[]; dispstr; disp所有图形绘制完毕; str[]; dispstr; 实验结果截图 3、 以将T0.1,N500与T0.1,N500后300点为补零点的频谱对比,试分析得出的结果。

实验代码 T0.1; N500; M150; n0N-1; m0M-1; x1exp-0.1*n*T; x2[exp-0.1*m*T zeros1,350]; x[x1;x2]; for step112 subplot2,2,step; stemn,xstep,; title时域信号; xlabel时间; ylabel振幅; grid; subplot2,2,step2; hT*fftshiftfftxstep,; D2*pi/N*T; kfloor-N-1/2N-1/2; plotk*D,absh; titleLine1 幅频特性; xlabel模拟频率; ylabel振幅; titletitleLine1; axis[-8 8 0 12]; grid end str[]; dispstr; disp所有图形绘制完毕; str[]; dispstr; 实验结果截图 (2)用FFT计算连续时间信号 的频谱 分析若混叠系数(幅频特性曲线中奈奎斯特频点处对应幅值与峰值之比)小于1,则混叠效应可以忽略。分别取T0.6,N512和T0.1,N4096进行计算,通过频谱图形相关计算和对比,得出合理采样间隔T。然后固定T0.1,改变N分别取N512,1024, 2048,4096,当N取多少时,频谱图无频谱泄漏且物理分辨率达到要求(能够分辨出两个单频点)请分析信号频谱图形结果(必要时使用图形“放大镜”工具观察或通过axis函数改变频率轴显示范围)。

1、分别取T0.6,N512和T0.1,N4096进行计算,通过频谱图形相关计算和对比,