《用FFT对信号进行频谱分析》由会员分享,可在线阅读,更多相关《用FFT对信号进行频谱分析(18页珍藏版)》请在金锄头文库上搜索。
1、郑州轻工业大学实验报告题目: 用FFT对信号进行频谱分析 课程名称: 数字信号处理 姓 名: 院 (系): 计算机与通信工程学院 专业班级: 电信工程18-01 学 号: 指导教师: 杨永双 成 绩: 时间: 2020 年 12 月 7 日目录1 实验目的22 实验环境23 实验原理23.1 混淆现象33.2泄漏现象33.3栅栏效应44 实验内容44.1 生成序列44.2 实验结果及分析55 实验思考题151 实验目的1、在理论学习的基础上,通过本次实验,加深对快速傅里叶变换的理解,熟悉 FFT 算法及其程序的编写。2、熟悉应用 FFT 对典型信号进行频谱分析的方法。3、了解应用 FFT 进行
2、信号频谱分析过程中可能出现的问题,以便在实际中正确应用 FFT。2 实验环境计算机一台 MATLAB2020a3 实验原理一个连续信号xa(t)的频谱可以用它的傅立叶变换表示为Xaj=-+xa(t)ejdt (2-1)如果对该信号进行理想采样,可以得到采样序列x(n)=xa(nT) (2-2)同样可以对该序列进行z变换,其中T为采样周期Xz=-+x(n)z-n (2-3)当z=ej的时候,我们就得到了序列的傅立叶变换Xej=-+x(n)e-jn (2-4)其中称为数字频率,它和模拟域频率的关系为=T=/fs (2-5)式中的fs是采样频率。上式说明数字频率是模拟频率对采样率fs的归一化。同模拟
3、域的情况相似,数字频率代表了序列值变化的速率,而序列的傅立叶变换称为序列的频谱。序列的傅立叶变换和对应的采样信号频谱具有下式的对应关系。Xej=1T-+Xa(j-j2Tm) (2-6)即序列的频谱是采样信号频谱的周期延拓。从式(2-6)可以看出,只要分析采样序列的频谱,就可以得到相应的连续信号的频谱。注意:这里的信号必须是带限信号,采样也必须满足奈奎斯特定理。在各种信号序列中,有限长序列在数字信号处理中占有很重要的地位。无限长的序列也往往可以用有限长序列来逼近。对于有限长的序列我们可以使用离散傅立叶变换(DFT),这一变换可以很好地反应序列的频域特性,并且容易利用快速算法在计算机上实现当序列的
4、长度是 N 时,我们定义离散傅立叶变换为:Xk=DFTxn=n=0N-1x(n)Wkn (2-7)其中WNkn=e-j2N,它的反变换定义为:xn=IDFTXk=1Nn=0N-1x(n)WN-kn (2-8)根据式(2-3)和(2-7)令z=WN-k,则有Xz|z=WN-k=n=0N-1xnWNnk=DFTx(n) (2-9)可以得到Xk=Xz|z=WN-k=ej2Nk,WN-k是 z 平面单位圆上幅角为=2Nk的点,就是将单位圆进行N等分以后第k个点。所以,X(k)是z变换在单位圆上的等距采样,或者说是序列傅立叶变换的等距采样。时域采样在满足奈奎斯特定理时,就不会发生频谱混淆;同样地,在频率
5、域进行采样的时候,只要采样间隔足够小,也不会发生时域序列的混淆。DFT 是对序列傅立叶变换的等距采样,因此可以用于序列的频谱分析。在运用 DFT 进行频谱分析的时候可能有三种误差,分析如下:3.1 混淆现象从式(2-6)中可以看出,序列的频谱是采样信号频谱的周期延拓,周期是2T因此当采样速率不满足奈奎斯特定理,即采样频率fs=1/T小于两倍的信号(这里指的是实信号)频率时,经过采样就会发生频谱混淆。这导致采样后的信号序列频谱不能真实地反映原信号的频谱。所以,在利用DFT分析连续信号频谱的时候,必须注意这一问题。避免混淆现象的唯一方法是保证采样的速率足够高,使频谱交叠的现象不出现。这就告诉我们,
6、在确定信号的采样频率之前,需要对频谱的性质有所了解。在一般的情况下,为了保证高于折叠频率的分量不会出现,在采样之前,先用低通模拟滤波器对信号进行滤波。3.2泄漏现象实际中的信号序列往往很长,甚至是无限长序列。为了方便,我们往往用截短的序列来近似它们。这样可以使用较短的DFT来对信号进行频谱分析。这种截短等价于给原信号序列乘以一个矩形窗函数。而矩形窗函数的频谱不是有限带宽的,从而它和原信号的频谱进行卷积以后会扩展原信号的频谱。值得一提的是,泄漏是不能和混淆完全分离开的,因为泄露导致频谱的扩展,从而造成混淆。为了减小泄漏的影响,可以选择适当的窗函数使频谱的扩散减到最小。3.3栅栏效应因为 DFT
7、是对单位圆上z变换的均匀采样,所以它不可能将频谱视为一个连续函数。这样就产生了栅栏效应,从某种角度来看,用 DFT 来观看频谱就好像通过一个栅栏来观看一幅景象,只能在离散点上看到真实的频谱。这样的话就会有一些频谱的峰点或谷点被“栅栏”挡住,不能被我们观察到。减小栅栏效应的一个方法是在源序列的末端补一些零值,从而变动 DFT 的点数。这种方法的实质是认为地改变了对真实频谱采样的点数和位置,相当于搬动了“栅栏”的位置,从而使得原来被挡住的一些频谱的峰点或谷点显露出来。注意,这时候每根谱线多对应的频率和原来的已经不相同了。从上面的分析过程可以看出,DFT 可以用于信号的频谱分析,但必须注意可能产生的
8、误差,在应用过程中要尽可能减小和消除这些误差的影响。快速傅立叶变换 FFT 并不是与DFT不相同的另一种变换,而是为了减少 DFT 运算次数的一种快速算法。它是对变换式(2-7)进行一次次的分解,使其成为若干小点数 DFT 的组合,从而减小运算量。常用的 FFT 是以2为基数,其长度M=2M。它的运算效率高,程序比较简单,使用也十分地方便。当需要进行变换的序列的长度不是2的整数次方的时候,为了使用以2为基的 FFT,可以用末尾补零的方法,使其长度延长至2的整数次方。IFFT一般可以通过FFT程序来完成,比较式(2-7)和(2-8),只要对X(k)取共轭,进行FFT运算,然后再取共轭,并乘以因子
9、1/N,就可以完成IFFT。4 实验内容4.1 生成序列4.1.1高斯序列 e-(n-p)2q, 0=n=15高斯序列:xa(n)=0 ,其他4.1.2衰减正弦序列 e-ansin2fn, 0=n=15衰减正弦序列xb(n)= 0, 其他4.1.3三角波序列 n+1, 0=n=3三角波序列xc(n)= 8-n, 4=n=7 0, 其他4.1.4反三角序列 4-n, 0=n=3反三角序列xd(n)= n-3, 4=n0.5时,发生了明显的混叠现象。且由于对信号进行了加窗截取,所以也发生了泄露现象,导致f=0.43750.5时,所得fft的结果中,频谱也出现了一定程度的混叠现象。因为0.4375+
10、0.5625=1,故得到的f=0.4375和f=0.5625的两个频谱会成镜像对称。4.2.3观察三角波序列和反三角波序列的时域和幅频特性用 8 点 FFT 分析信号 xc (n) 和 xd (n) 的幅频特性,观察两者的序列形状和频谱曲线有什么异同?(注意:这时候的 xd (n) 可以看作是 xc (n) 经过圆周移位以后得到的)绘制两者的序列和幅频特性曲线。在 xc (n) 和 xd (n) 末尾补零,用 16 点 FFT 分析这两个信号的幅频特性,观察幅频特性发生了什么变化?两个信号之间的 FFT 频谱还有没有相同之处? 这些变化说明了什么?因为三角序列是由两个矩形序列卷积得到的结果,所
11、以三角序列的频域波形就是Sa函数平方的采样。当作8点DFT时,把两矩形序列在时域做循环卷积,这两个矩形序列都以8为周期做周期延拓,得到的三角序列结果只是在相位上有差别,所以故当作8点DFT时,正三角和反三角的频域波形是一样的。而做16点DFT时,会按照16点做周期延拓,由于会在用于卷积的两个矩形序列后补零,用于做循环卷积的两个矩形所得到三角序列的时域波形会不一样,反三角序列会比正三角序列有一个突变,所以体现在频域反三角序列的频谱的高频分量增多。4.2.4 MatLab上机内容将 xb (n) 信号的长度N设为63,用 MatLab 中 randn(1,N)函数产生一个噪声信号 w(n),计算将这个噪声信号叠加到 xb (n) 上以后新信号y(n)= xb (n)+ w(n)的频谱,观察发生的变化并记录。y(n)的幅度谱为叠加了随机噪声的幅度谱,由图可知,时域上,叠加了随机噪声淹没了原来的信号,频谱有很大不同。在步骤1的基础上,改变参数a和f,观察在出现混淆现象和泄漏现象的时候有噪声的y(n) 信号的频谱有什么变化,是否明显?由于信号本来就有混叠和泄漏