资源描述:
《实验二用FFT作谱分析.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、南昌大学实验报告学生姓名:学号:专业班级:电子091班实验类型:□验证□综合□设计□创新实验日期:2011/12/11实验成绩:实验二用FFT作谱分析一、实验目的:1、进一步加深DFT算法原理和基本性质的理解(因为FFT只是DFT的一种快速算法,所以FPT的运算结果必然满足DFT的基本性质)。2、熟悉FFT算法原理和FFT子程序的应用。3、学习用FFT对连续信号和时域离散信号进行谱分析的方法,了解可能出现的分析误差及其原因,以便在实际中正确应用FFT。二、实验主要仪器与设备装配有MATLAB软件的计算机三、实验原理用FFT对信号作频谱分析是学习数字信号处理的重要
2、内容。经常需要进行谱分析的信号是模拟信号和时域离散信号。对信号进行谱分析的重要问题是频谱分辨率D和分析误差。频谱分辨率直接和FFT的变换区间N有关,因为FFT能够实现的频率分辨率是,因此要求。可以根据此式选择FFT的变换区间N。误差主要来自于用FFT作频谱分析时,得到的是离散谱,而信号(周期信号除外)是连续谱,只有当N较大时离散谱的包络才能逼近于连续谱,因此N要适当选择大一些。周期信号的频谱是离散谱,只有用整数倍周期的长度作FFT,得到的离散谱才能代表周期信号的频谱。如果不知道信号周期,可以尽量选择信号的观察时间长一些。对模拟信号进行谱分析时,首先要按照采样定理
3、将其变成时域离散信号。如果是模拟周期信号,也应该选取整数倍周期的长度,经过采样后形成周期序列,按照周期序列的谱分析进行。四、实验内容及步骤:1、复习DFT的定义、性质和用DFT作谱分析的有关内容。2、复习FFT算法原理与编程思想,并对照DIT—FFT运算流图和程序框图,读懂本实验提供的FFT子程序。3、编制信号产生子程序,产生以下典型信号供谱分析用:(1)%x1(n)=R4(n),N=8,16m=4;n=0:(m-1);subplot(2,2,1);x1=[1,1,1,1];stem(n,x1,'.');xlabel('n');ylabel('x1(n)');t
4、itle('x1(n)=R4(n)');subplot(2,2,2);xa=fft(x1,8);i=0:7;stem(i,abs(xa),'.');xlabel('k');ylabel('x1(n)');title('x1(n)的8点FFT');subplot(2,2,3);xb=fft(x1,16);i=0:15;stem(i,abs(xb),'.');xlabel('k');ylabel('x1(n)');title('x1(n)的16点FFT')(2)%x2=[1,2,3,4,4,3,2,1],N=8,16m=8;n=0:(m-1);subplot(2,2
5、,1);x2=[1,2,3,4,4,3,2,1];stem(n,x2,'.');xlabel('n');ylabel('x2(n)');title('x2=[1,2,3,4,4,3,2,1]');subplot(2,2,2);xa=fft(x2,8);i=0:7;stem(i,abs(xa),'.');xlabel('k');ylabel('x2(n)');title('x2(n)的8点FFT');subplot(2,2,3);xb=fft(x2,16);i=0:15;stem(i,abs(xb),'.');xlabel('k');ylabel('x2(n)')
6、;title('x2(n)的16点FFT')(3)%x3=[4,3,2,1,1,2,3,4],N=8,16m=8;n=0:(m-1);subplot(2,2,1);x3=[4,3,2,1,1,2,3,4];stem(n,x3,'.');xlabel('n');ylabel('x3(n)');title('x3=[4,3,2,1,1,2,3,4]');subplot(2,2,2);xa=fft(x3,8);i=0:7;stem(i,abs(xa),'.');xlabel('k');ylabel('x3(n)');title('x3(n)的8点FFT');subpl
7、ot(2,2,3);xb=fft(x3,16);i=0:15;stem(i,abs(xb),'.');xlabel('k');ylabel('x3(n)');title('x3(n)的16点FFT')(4)%x4(n)=cos(п*n/4),N=8,16;subplot(2,2,1);x4=sin(pi*n/8);stem(n,x4,'.');xlabel('n');ylabel('x4(n)');title('x4(n)=cos(п*n/4)');subplot(2,2,2);xa=fft(x4,8);i=0:7;stem(i,abs(xa),'.');xla
8、bel('k');yla