哈工大 数字信号处理实验报告

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验一: 用FFT 作谱分析

实验目的:

(1) 进一步加深DFT 算法原理和基本性质的理解(因为FFT 只是DFT 的一种快速算法, 所以FFT 的运算结果必然满足DFT 的基本性质)。

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

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

实验原理: DFT 的运算量:

一次完整的DFT 运算总共需要2N 次复数乘法和(1)N N -复数加法运算,因而

直接计算DFT 时,乘法次数和加法次数都和2N 成正比,当N 很大时,运算量很客观的。例如,当N=8时,DFT 运算需64位复数乘法,当N=1024时,DFT 运算需1048576次复数乘法。而N 的取值可能会很大,因而寻找运算量的途径是很必要的。

FFT 算法原理:

大多数减少离散傅里叶变换运算次数的方法都是基于nk N W 的对称性和周期

性。

(1)对称性

()

*()k N n kn kn

N

N N

W W W --==

(2)周期性

kn N

kn n N k

n k N

N

N N

N

W W W W ++===

由此可得

()()/2

(/2)1

n N k N n k nk N N N N N k N k N N W W W W W W ---+⎧==⎪=-⎨⎪=-⎩

这样:

1.利用第三个方程的这些特性,DFT 运算中有些项可以合并;

2.利用nk N W 的对称性和周期性,可以将长序列的DFT 分解为短序列的DFT 。

前面已经说过,DFT 的运算量是与2N 成正比的,所以N 越小对计算越有利,

因而小点数序列的DFT 比大点数序列的DFT 运算量要小。

快速傅里叶变换算法正是基于这样的基本思路而发展起来的,她的算法基本

上可分成两大类,即按时间抽取法和按频率抽取法。

我们最常用的是2M N =的情况,该情况下的变换成为基2快速傅里叶变换。

完成一次完整的FFT 计算总共需要

2log 2

N N

次复数乘法运算和2log N N 次复

数加法运算。很明显,N 越大,FFT 的优点就越突出。

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

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

(3) 编制信号产生子程序, 产生以下典型信号供谱分析用:

1423()()1,03()8470403()3

47

x n R n n n x n n

n n n x n n n =⎧+≤≤⎪

=-≤≤⎨⎪⎩-≤≤⎧⎪

=-≤≤⎨⎪⎩

456()cos 4

()sin

8

()cos 8cos16cos 20x n n x n n

x t t t t

π

π

πππ===++

(4) 编写主程序。

(5) 按实验内容要求, 上机实验, 并写出实验报告。

实验程序与结果:

(1)对x 1(n)进行FFT 变换(N=8和N=16)

clear all;

N=4;%读入长度

x=[1,1,1,1];%调用信号产生子程序产生实验信号

n=0:N-1;subplot(3,1,1);stem(n,abs(x));%调用绘图子程序(函数)绘制时间序列波形图

title('原时间序列');

N=8;%读入长度

y1=fft(x,N);%调用FFT 子程序(函数)计算信号的DFT n=0:N-1;subplot(3,1,2);stem(n,fftshift(abs(y1)));hold

on;plot(n,fftshift(abs(y1)),'r--');%调用绘图子程序(函数)绘制|X(k)|曲线 title('N=8');

N=16;%读入长度

y2=fft(x,N);%调用FFT 子程序(函数)计算信号的DFT n=0:N-1;subplot(3,1,3);stem(n,fftshift(abs(y2)));hold

on;plot(n,fftshift(abs(y2)),'r--');%调用绘图子程序(函数)绘制|X(k)|曲线 title('N=16'); 结果图形

实验误差分析:

理论FFT频谱为一个抽样信号,由图形看出,随着采样率的提高,得到的FFT 频谱分辨率就越高,当N趋于无限时频谱包络接近理论的抽样函数。

(2)对x2(n)进行FFT变换(N=8和N=16)

clear all;

x=[1,2,3,4,4,3,2,1];%调用信号产生子程序产生实验信号

N=8;%读入长度

n=0:N-1;subplot(3,1,1);stem(n,abs(x));%调用绘图子程序(函数)绘制时间序列波形图

title('原时间序列');

N=8;%读入长度

y1=fft(x,N);%调用FFT子程序(函数)计算信号的DFT

n=0:N-1;subplot(3,1,2);stem(n,fftshift(abs(y1)));hold

on;plot(n,fftshift(abs(y1)),'r--');%调用绘图子程序(函数)绘制|X(k)|曲线

title('N=8');

N=16;%读入长度

y2=fft(x,N);%调用FFT子程序(函数)计算信号的DFT

n=0:N-1;subplot(3,1,3);stem(n,fftshift(abs(y2)));hold

on;plot(n,fftshift(abs(y2)),'r--');%调用绘图子程序(函数)绘制|X(k)|曲线

title('N=16');

相关文档
最新文档