资源描述:
《应用FFT对信号进行频谱分析》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实验二应用FFT对信号进行频谱分析一、实验目的1、加深对离散信号的DTFT和DFT的及其相互关系的理解。2、在理论学习的基础上,通过本次实验,加深对快速傅里叶变换的理解,熟悉FFT算法及其程序的编写。3、熟悉应用FFT对典型信号进行频谱分析的方法。4、了解应用FFT进行信号频谱分析过程中可能出现的问题,以便在实际中正确应用FFT。二、实验原理与方法一个连续信号xa(t)的频谱可以用它的傅里叶变换表示为Xa^(jΩ)=∫xa(t)e-jΩtdt如果对该信号进行理想采样,可以得到采样序列:x(n)=Xa(nT)同样可以对该序列进行Z变
2、换,其中T为采样周期X(z)=x(n)z-n当Z=ejw的时候,我们就得到了序列的傅里叶变换X(ejw)=x(n)e-jwn其中称为数字频率,它和模拟域频率的关系为=T=/fs式中的是采样频率,上式说明数字频率是模拟频率对采样频率的归一化。同模拟域的情况相似,数字频率代表了序列值变化的速率,而序列的傅里叶变换称为序列的频谱。离散傅里叶变化为:X(k)=DFT[x(n)]=WNkn其中WNkn=e-j2π/N它的反变换定义为:x(n)=IDFT[X(k)]=1/NWN-kn可以得到X(z)│z=e-i2/Nk=DFT[x(n)]DF
3、T是对傅里叶变换的等距采样,因此可以用于序列的频谱分析。在运用DFT进行频谱分析的时候可能有三种误差,混淆现象,泄露现象,栅栏效应。一、实验内容及步骤1、观察高斯序列的时域和频域特性>>n=0:15;>>p=8;q=2;x=exp(-1*(n-p).^2/q);>>closeall>>subplot(3,1,1);stem(abs(fft(x)))p=8;q=4;x=exp(-1*(n-p).^2/q);>>subplot(3,1,2);stem(abs(fft(x)))>>n=0:15;p=8;q=8;x=exp(-1*(n-p
4、).^2/p);closeallsubplot(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、观察衰减正弦序列的时域和幅频特性产生衰减正弦序列及其幅度谱和相位谱(f=0.0625)>>n=0:15;>>a=0.1;f=0.0625;x=exp(-a*n).*sin(2*p
5、i*f*n);>>subplot(3,1,1);stem(n,x);title('衰减正弦序列');>>X=fft(x);>>magX=abs(X);>>subplot(3,1,2);stem(magX);title('衰减正弦序列的幅度谱');>>angX=angle(X);>>subplot(3,1,3);stem(angX);title('衰减正弦序列的相位谱');产生衰减正弦序列及其幅度谱和相位谱(f=0.4375)>>a=0.1;f=0.4375;x=exp(-a*n).*sin(2*pi*f*n);>>subplot(
6、3,1,1);stem(n,x);title('衰减正弦序列');>>X=fft(x);>>magX=abs(X);>>subplot(3,1,2);stem(magX);title('衰减正弦序列的幅度谱');>>angX=angle(X);>>subplot(3,1,3);stem(angX);title('衰减正弦序列的相位谱');产生衰减正弦序列及其幅度谱和相位谱(f=0.5625)>>a=0.1;f=0.5625;x=exp(-a*n).*sin(2*pi*f*n);>>subplot(3,1,1);stem(n,x);
7、title('衰减正弦序列');>>X=fft(x);>>magX=abs(X);>>subplot(3,1,2);stem(magX);title('衰减正弦序列的幅度谱');>>angX=angle(X);>>subplot(3,1,3);stem(angX);title('衰减正弦序列的相位谱');3、观察三角波序列和反三角波序列的时域和幅频特性>>fori=1:4x(i)=i;end>>fori=5:8x(i)=9-i;end>>closeall;subplot(2,1,1);stem(x);>>subplot(2,1,2
8、);stem(abs(fft(x,16)));>>fori=1:4x(i)=5-i;end>>fori=5:8x(i)=i-4;end>>closeall;subplot(2,1,1);stem(x);>>subplot(2,1,2);stem(a