资源描述:
《实验4fft频谱分析》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、实验4FFT频谱分析一、实验目的应川离散傅里叶变换的快速算法FFT分析信号的频谱。深刻理解应用FFT分析离散和连续信号的原理,掌握分析过程中出现的现象及解决方法。二、实验原理1.离散周期信号频谱的分析周期为N的离散信号(序列)x(幻的频谱函数i(m)定义为:〜7V-1〜mk〜=V=XxWv?,k=Qk=0式中:N是序列的周期;k为离散的时间变量;m为离散的频率变量;是次谐波的数字频率。离散周期信号的频谱X(m)也是周期为2V的离散谱,谱线间隔为2;r/7V。利用MATLAB提供的fft函数可以计算离散周期信号的频谱。对于离散周期序列,只耑对周期序列上一个
2、周期N的数值x(幻进行7V点的FFT运算,就可准确地得到其频谱在一个周期上的2V个数值X(m),且有=me[O,;V—1]。其分析步骤如下。(1)确定离散周期序列x(Z:)的基本周期为TV。(2)利用fft函数对序列x(幻一个周期内进行;V点FFT计算,得到X(A77)。(3)%(m)=X(m)o2.离散非周期信号频谱的分析离散非周期信号x(幻的频谱函数X(ez£2)为:X(e/Q)=-卵。Ar=-oo利用MATLAB提供的fft函数可以计算离散非周期信号的频谱。当序列长度有限时,可以求得准确的序列频谱的样点值。若序列很长或无限长时,则由于截短产生泄漏误
3、差,计算的结果只能是序列频谱样点值的近似。分析步骤如下。(1)确定序列x(幻的长度M及窗函数的类型。当序列为无限长时,耑要根据能量分布,利用窗函数进行截短。(2)确定做FFT的点数7V。根据频域采样定理,为使时域波形不产生混叠,必须取。(3)使用fft函数做#点FFT以计算X(zn)o1.连续周期信号频谱的分析周期力的连续时间信号x(Z)的频谱函数定义为:式中:7;是信号的周期;为信号的基频(基波);/叫,称为信号的谐频连续周期信号的频谱I(my())是非周期离散谱,谱线间隔为仍(>。连续周期信号的DFT分析方法增加了时域采样的环节。如果不满足采样定理的
4、约束条件,将会出现频谱混叠现象。连续周期信号的分析步骤如下。(1)确定周期信号的基本周期7;。(2)计算一个周期N的采样点数2V。(3)对连续周期信号以采样间隔T进行采样,T=k。N(4)使用fft函数对x(幻作TV点FET用以计算X(m).(5)最后求得连续周期信号的频谱义(/?%)=+义(m),某屮利用了下而的转换关若能够按照满足采样定理的采样间隔采样,并选取整周期为信号允许K:度,则利用DFTU•算得到的离散频谱值等于原连续周期信号离散频谱的准确值。2.连续非周期信号频谱的分析连续时间非周期信号x(Z)的频谱函数是连续谱,萁定义如下:z⑽=「x(z
5、)nJ—co连续非周期信号的分析步骤如下:(1)根据时域采样定理,确定时域采样间隔r,得到离散序列x(幻。(2)确定信号截短的长M及窗函数的类型,得到有限长M点离散序列〜(幻=*(々>(幻。(3)确定频域采样点数7V,要求N1M。⑷使用fft函数做;V点FFT计算得到2V点的XO)。2兀=7x(m),co=nAT(5)由X(m)可得到连续信号的频谱X{jcd)采样点的近似伉X{j(d)其中利用了转换关系:t=KT,dt+T,三、实验内容与方法1.离散周期信号频谱的分析JT7T71【例4-1】己知一个周期序列x(A)=sin(—A+—)+0.5cos
6、(—幻,用fft函数计算其频16616■^並i曰。MATLAB程序如下:N=32;k=O:N-l;x=sin(pi*k/16+pi/6)+0.5*cos(7*pi*k/16);xk=fft(x,N);subplot(2,l,l);stem(k-N/2,abs(fftshift(xk)));axis(卜16,16,0,20】);xlabelC频谱特性WylabelC幅度setCgca/XTickModeVmanualVXTick'J-l6,-7,-1,0,1,7,16]);subplot(2,l,2);stem(k-N/2,angle(fftshift(x
7、k)));axis([-16,16,-4,4]);xlabel(濒谱特性’);ylabel('相位i);set(gca,'XTickMode’,'manual',’XTick',[-16,-7,-1,0,1,7,16]);set(gcf,’color’,’w’);程序运行结果如图4.1所示。2015OOOOO1OO0<3>^OO分•16•7•101频谱特性16A图4.1周期序列的幅度谱和相位谱2.离散非周期信号频谱的分析【例4-2]利用fft函数分析序列x(幻=0.7、(幻的频谱。经过分析,可以得知信号力无限长,因此需要对其进行截短。该序列单调递减,当A
8、232时,序列已几乎衰减为0,因此只取序列在[0,32]上的数值进行分析。MAT