数字信号处理应用实验实验二应用FFT对信号进行频谱分析学号1215108019姓名李克帆班级电子2华侨大学电子工程系实验二应用FFT对信号进行频谱分析一、实验目的(1)进一步加深DFT算法原理和基本性质的理解(因为FFT只是DFT的一种快速算法,所以FFT的运算结果必然满足DFT的基本性质)。(2)熟悉FFT算法原理和FFT子程序的应用。(3)学习用FFT对连续信号和时域离散信号进行谱分析的方法,了解可能出现的分析误差及其原因,以便在实际中正确应用FFT。二、实验原理与方法一个连续信号xa(t)的频谱可以用他的傅立叶变换表示为:=如果对该信号进行理想采样,可以得到采样序列:x(n)=Xa(nT)同样可以对该序列进行Z变换,其中T为采样周期:X(z)=当Z=ejω的时候,我们就得到了序列的傅立叶变换:X(ejω)=其中称为数字频率,它和模拟域频率的关系为:式中的fs是采样频率,上式说明数字频率是模拟频率对采样频率fs的归一化。同模拟域的情况相似,数字频率代表了序列值变化的速率,而序列的傅里叶变换为序列的频谱。序列的傅里叶变换和对应的采样信号频率具有下式的对应关系。X(ejω)=即序列的频谱是采样信号频谱的周期延拓。从上式可以看出,只要分析采样序列的频谱,就可以得到相应的连续信号频谱,就可以得到相应的连续信号的频谱。注意:这里的信号必须是带限信号,采样也必须满足Nyquist定理。在各种信号序列中,有限长序列在数字信号处理中占有很重要的地位。无限长的序列也往往可以用有限长序列来逼近。对于有限长的序列我们可以使用离散傅里叶变换(DFT),这一变换可以很好地反映序列的频域特性,并且容易利用快速算法在计算机上实现当序列的长度是N时,我们定义离散傅里叶变化为:X(k)=DFT[x(n)]=其中,它的反变换定义为:x(n)=IDFT[X(k)]=令Z=,则有:==DFT[x(n)]可以得到,是Z平面单位圆上幅角为的点,就是将单位圆进行N等分以后第K个点。所以,X(k)是Z变换在单位圆上的等距采样,或者说是序列福利叶变换的等距采样。时域采样在满足Nyquist定理时,就不会发生频率混淆;同样地,在频率域进行采样的时候,只要采样间隔足够小,也不会发生时域序列的混淆。三、实验内容及步骤(1)复习DFT的定义、性质和用DFT作谱分析的有关内容。(2)复习FFT算法原理与编程思想,并对照DIT-FFT运算流图和程序框图,读懂本实验提供的FFT子程序。(3)编制信号产生子程序,产生以下典型信号供谱分析用:(1)高斯序列:(一)上机实验内容(1)对2中所给出的信号逐个进行谱分析。下面给出针对各信号的FFT变换区间N以及对连续信号x6(t)的采样频率fs,供实验时参考。x1(n),x2(n),x3(n),x4(n),x5(n):N=8,16=x6(t):fs=64(Hz),N=16,32,64n=0:15;X1(n)x=[ones(1,4)];closeall;subplot(2,1,1);stem(x,'.');subplot(2,1,2);stem(abs(fft(x,8)),'.');1423()()1,03()8470403()3470xnRnnnxnnnnnxnnn456()cos4()sin8()cos8cos16cos20xnnxnnxntttsubplot(3,1,3);stem(abs(fft(x,16)),'.');X2(n)fori=1:4x(i)=i+1;endfori=5:8x(i)=8-i;endcloseall;subplot(3,1,1);stem(x);subplot(3,1,2);stem(abs(fft(x,8)));subplot(3,1,3);stem(abs(fft(x,16)));X3(n)fori=1:4x(i)=4-i;endfori=5:8x(i)=i-3;endcloseall;subplot(3,1,1);stem(x);subplot(3,1,2);stem(abs(fft(x,8)));subplot(3,1,3);stem(abs(fft(x,16)));X4(n)n=0:15;x=cos((pi/4)*n);closeall;subplot(3,1,1);stem(x);subplot(3,1,2);stem(abs(fft(x,8)));subplot(3,1,3);stem(abs(fft(x,16)));X5(n)n=0:15;x=sin((pi/8)*n);closeall;subplot(3,1,1);stem(x);subplot(3,1,2);stem(abs(fft(x,8)));subplot(3,1,3);stem(abs(fft(x,16)));X6(n)n=0:64;fs=64;t=n/fs;x=cos(8*pi*t)+cos(16*pi*t)+cos(20*pi*t);closeall;subplot(4,1,1);stem(x);subplot(4,1,2);stem(abs(fft(x,16)));subplot(4,1,3);stem(abs(fft(x,32)));subplot(4,1,4);stem(abs(fft(x,64)));(2)固定q=8,改变P,使P分别等于8,13,14,观察参数P变化对信号序列时域及幅频特性的影响。注意p等于多少时,会发生明显的泄漏现象,绘制相应的时域序列和幅频特性曲线。p=8;q=8;x=exp(-1*(n-p).^2/q);closeall;subplot(3,1,1);stem(abs(fft(x)))p=13;q=8;x=exp(-1*(n-p).^2/q);subplot(3,1,2);stem(abs(fft(x)))p=14;q=8;x=exp(-1*(n-p).^2/q);subplot(3,1,3);stem(abs(fft(x)))(2)令x(n)=x4(n)+x5(n),用FFT计算8点和16点离散傅里叶变换,X(k)=DFT[x(n)]n=0:15;x=cos((pi/4)*n)+sin((pi/8)*n);closeall;subplot(3,1,1);stem(x);subplot(3,1,2);stem(abs(fft(x,8)));subplot(3,1,3);stem(abs(fft(x,16)));(3)令x(n)=x4(n)+jx5(n),重复(2)。n=0:15;x1=cos((pi/4)*n);x2=sin((pi/8)*n);x=real(x1)+imag(x2);closeall;subplot(3,1,1);stem(x);subplot(3,1,2);stem(abs(fft(x,8)));subplot(3,1,3);stem(abs(fft(x,16)));四、思考题(1)在N=8时,x2(n)和x3(n)的幅频特性会相同吗?为什么?N=16呢?相同,欣慰x3(n)=x2((n+3))8Rn(n),所以x(2)余x(3)的8点DFT的模相等,当N=16时,两者不满足循环移位关系,所以模不同。(2)如果周期信号的周期预先不知道,如何用FFT进行谱分析?周期信号的周期预先不知道时,可先截取M点进行DFT,再将截取长度扩大1倍截取,比较结果,如果二者的差别满足分析误差要求,则可以近似表示该信号的频谱,如果不满足误差要求就继续将截取长度加倍,重复比较,直到结果满足要求。