数字信号处理实验二用FFT作谱分析报告

  • 格式:doc
  • 大小:252.94 KB
  • 文档页数:10

西安郵電學院数字信号处理课实验报告书系部名称:计算机系学生:常成娟专业名称:电子信息科学与技术班级:0603学号:04062095时间: 2008-11-23实验二:用FFT 作谱分析一、 实验目的:(1) 进一步加深DFT 算法原理和基本性质的理解(因为FFT 只是DFT 的一种快速算法,所以FFT 的运算结果必然满足DFT 的基本性质)。

(2) 熟悉FFT 算法原理和FFT 子程序的应用。

(3) 学习用FFT 对连续信号和时域离散信号进行谱分析的方法,了解可能出现的分析误差及其原因,以便在实际中正确应用FFT 。

二、 实验步骤:(1) 复习DFT 的定义、性质和用DFT 作谱分析的有关容。

(2) 复习FFT 算法原理与编程思想,并对照DIT —FFT 运算流图和程序框图,读懂本实验提供的FFT 子程序。

(3) 编制信号产生子程序,产生以下典型信号供谱分析用:()1x n =R4(n)()21,038,470,n n x n n n +<=<=⎧⎪=-<=<=⎨⎪⎩其它n()34,033,470,n n x n n n -<=<=⎧⎪=-<=<=⎨⎪⎩其它n()4x n =cos(pi/4*n) ()5x n =sin(pi/8*n)()6x t =cos(pi*8*t)+ sin(pi*16*t)+cos(20*pi*t)应当注意,如果给出的是连续信号xa(t),则首先要根据其最高频率确定采样速率fs 以及由频率选择采样点数N ,然后对其进行软件采样(即计算x(n)=xa(nT),0<=n<=N-1),产生对应序列x(n)。

对信号x6(t),频率分辨率的选择要以能分辨开其中的三个频率对应的谱线为准则。

对周期序列,最好截取周期的整数倍进行分析,否则有可能产生较大的分析误差。

请实验者根据DFT 的隐含周期性思考这个问题。

(4) 编写主程序。

下图给出了主程序框图,供参考。

本实验提供FFT 子程序和通用绘图子程序。

三、上机实验容(1) 对2中所给出的信号逐个进行谱分析。

下面给出针对各信号的FFT 变换区间N 以及对连续信号()6x t 的采样频率fs 。

()1x n ,()2x n ,()3x n ,()4x n ,()5x n ,:N=8,16 ()6x t :fs=64(hz ), N=16,32,64 实验结果: 1.()1x n =R4(n) 原程序:n=[0:7]; x=[1 1 1 1 0 0 0 0] f1=fft(x,8) f2=fft(x,16) subplot(2,2,1) stem(n,x);axis([0 8 0 2]) xlabel('n') ylabel('x1(n)') title('x1的波形') subplot(2,2,4)k=[0:15]stem(k,abs(f2)); axis([0 16 0 5]) xlabel('k')ylabel('|x1(k)|')title('x1(n)的8点fft') subplot(2,2,3) k=[0:7]stem(k,abs(f1)); axis([0 10 0 5]) xlabel('k')ylabel('|x1(k)|')title('x1(n)的8点fft')得到的波形图如下:2.()21,038,470,n n x n n n +<=<=⎧⎪=-<=<=⎨⎪⎩其它n原程序:n=[0:7];x=[1 2 3 4 4 3 2 1] f1=fft(x,8) f2=fft(x,16) subplot(2,2,1) stem(n,x);axis([0 8 0 4]) xlabel('n') ylabel('x2(n)') title('x2的波形') subplot(2,2,4) k=[0:15] stem(k,abs(f2)); axis([0 16 0 20]) xlabel('k')ylabel('|x2(k)|')title('x2(n)的8点fft') subplot(2,2,3) k=[0:7]stem(k,abs(f1)); axis([0 10 0 20]) xlabel('k')ylabel('|x2(k)|')title('x2(n)的8点fft')波形图:3.()34,033,470,n n x n n n -<=<=⎧⎪=-<=<=⎨⎪⎩其它n原程序:n=[0:7];x=[4 3 2 1 1 2 3 4]f1=fft(x,8)f2=fft(x,16)subplot(2,2,1)stem(n,x);axis([0 8 0 4])xlabel('n')ylabel('x3(n)')title('x3的波形')subplot(2,2,4)k=[0:15]stem(k,abs(f2));axis([0 16 0 20])xlabel('k')ylabel('|x3(k)|')title('x3(n)的8点fft')subplot(2,2,3)k=[0:7]stem(k,abs(f1));axis([0 8 0 20])xlabel('k')ylabel('|x3(k)|')title('x3(n)的8点fft')4.()4x n=cos(pi/4*n)原程序:n=[0:7];x=cos(0.25*pi*n)f1=fft(x,8)subplot(2,2,1)stem(n,x);axis([0 8 -4 4])xlabel('n')ylabel('x4(n)')title('x4的波形')n=[0:15]x=cos(0.25*pi*n)f2=fft(x,16)subplot(2,2,2)stem(n,x);axis([0 16 -4 4])xlabel('n')ylabel('x4(n)')title('x4的波形')subplot(2,2,4)k=[0:15]stem(k,abs(f2));axis([0 16 0 20])xlabel('k')ylabel('|x4(k)|')title('x4(n)的16点fft')subplot(2,2,3)k=[0:7]stem(k,abs(f1));axis([0 8 0 20])xlabel('k')ylabel('|x4(k)|')title('x4(n)的8点fft')波形图:5.()5x n=sin(pi/8*n) 原程序:n=[0:7];x=sin((pi*n)/8)f1=fft(x,8) subplot(2,2,1) stem(n,x);axis([0 8 -4 4]) xlabel('n')ylabel('x5(n)') title('x5的波形') n=[0:15]x=sin(0.125*pi*n) f2=fft(x,16) subplot(2,2,2) stem(n,x);axis([0 16 -4 4]) xlabel('n') ylabel('x5(n)')title('x5的波形') subplot(2,2,4)k=[0:15]stem(k,abs(f2));axis([0 16 0 20]) xlabel('k')ylabel('|x5(k)|')title('x5(n)的16点fft') subplot(2,2,3)k=[0:7]stem(k,abs(f1));axis([0 8 0 20]) xlabel('k')ylabel('|x5(k)|')title('x5(n)的8点fft')波形图:6.()6x t=cos(pi*8*t)+ sin(pi*16*t)+cos(20*pi*t)原程序:Ts=1/64;n=0:15;Xa=cos(8*n*Ts*pi)+cos(16*n*Ts*pi)+cos(20*n*Ts*pi);f1=fft(Xa,16);subplot(3,2,1);stem(n,Xa);axis([0 15 -2 3]);xlabel('n');ylabel('X6(n)');title('X6(n) N=16');%显示x6(n)N=16k=0:15subplot(3,2,2);stem(k,abs(f1));axis([0 16 0 15]);xlabel('k');ylabel('|X6(k)|');title('X6(n) N=16 的16点FFT');%显示X6(n)的16点FFTn=0:31;Xb=cos(8*n*Ts*pi)+cos(16*n*Ts*pi)+cos(20*n*Ts*pi);f2=fft(Xb,32);subplot(3,2,3);stem(n,Xb);axis([0 32 -2 3]);xlabel('n');ylabel('X6(n)');title('X6(n) N=32');%显示x6(n)N=32subplot(3,2,4);stem(abs(f2));axis([0 32 0 20]);xlabel('k');ylabel('|X6(k)|');title('X6(n) N=32 的32点FFT');%显示X6(n)的32点FFTn=0:63;Xc=cos(8*n*Ts*pi)+cos(16*n*Ts*pi)+cos(20*n*Ts*pi);f3=fft(Xc,64);subplot(3,2,5);stem(n,Xc);axis([0 64 -2 3]);xlabel('n');ylabel('X6(n)');title('X6(n) N=64');%显示x6(n)N=64subplot(3,2,6);stem(abs(f3));axis([0 64 0 40]);xlabel('k');ylabel('|X6(k)|');title('X6(n) N=64 的64点FFT');%显示X6(n)的64点FFT波形图:(2)令45()()()x n x n x n=+,用FFT计算8点和16点离散傅立叶变换,[]()()x k DFT x n=,并根据DFT的对称性,由()x k求出[]44()()x k DFT x n=和[]55()()x k DFT x n=并与(1)中所得结果比较。