西安交通大学数字信号处理实验报告 1.pdf
文本预览下载声明
西安交通大学
数字信号处理
实验报告
快速傅立叶变换
姓名:XXXXXX
学号:XXXXXXXXX
班级:XXXX
1 实验一快速傅里叶变换
一、实验目的
1. 在理论学习的基础上,通过本实验加深对快速傅立叶变换的理解;
2. 熟悉并掌握按时间抽取FFT 算法的程序;
3. 了解应用FFT 进行信号频谱分析过程中可能出现的问题,例如混淆、泄漏、
栅栏效应等,以便在实际中正确应用FFT 。
二、实验内容
1. 仔细分析教材第六章‘时间抽取法FFT ’的算法结构,编制出相应的用FFT
进行信号分析的C 语言(或MATLAB 语言)程序;
2. 用FFT 程序分析正弦信号
y(t) sin(2f t)[u(t) u(t N *T )] t ,设u(0) 1
分别在以下情况进行分析并讨论所得的结果:
a ) 信号频率f =50Hz,采样点数N=32,采样间隔T=0.000625s
b ) 信号频率f =50Hz,采样点数N=32,采样间隔T=0.005s
c ) 信号频率f =50Hz,采样点数N=32,采样间隔T=0.0046875s
d ) 信号频率f =50Hz,采样点数N=32,采样间隔T=0.004s
e ) 信号频率f =50Hz,采样点数N=64,采样间隔T=0.000625s
f ) 信号频率f =250Hz ,采样点数N=32,采样间隔T=0.005s
g ) 将c ) 信号后补32 个0,做64 点FFT
三、实验程序设计
1. “时间抽取FFT”算法的原理:
N 1
X (k ) x (n)Wk n 2
N j k
n 0 N , 中k
有限长序列x (n)的N 点DFT 定义为: ,式中W e W
N N
为整数时简称其为旋转因子。若对x(n)做一次DFT 运算,每计算一个X(k)值需
要进行4N 次实数相乘和2N+2(N-1)=2(2N-1)次实数相加。因此整个DFT 运算需
要进行4N 2 次实数相乘和 2N(2N-1)次实数相加。当使用计算机计算时运算量较
2 实验一快速傅里叶变换
大。基2FFT 时间抽取法,是首先将序列x(n)分解成两组,偶数项为一组,奇数
项为一组。利用旋转因子的周期性及对称性,可将X(k)表达为前后两部分:
X (k) X (k) W k X (k), k 0,1,, N / 2 1
1 N 2
X (N / 2 k) X (k) W k X (k), k 0,1,, N / 2 1
1 N 2
将这种运算方式用蝶形表示出来:
只要N 是2 的整数次幂,这种分解就可一直进行下去,将DFT 运算转换为log 2 (N )
级运算,每一级运算都由N/2 个碟形运算组成。利用长度为N 的数组存放输入数
据和每一级计算的结果。
2. 原位计算
N 2M M N/2
对 点的FFT 共进行 级运算,每级由 个蝶形运算组成。在同一级
中,每个蝶的输入数据只对本蝶有用,且输出节点与输入节点在同一水平线上,
这就意味着每算完一个蝶后,所得数据可立即存入原输入数据所占用的数组元素
(存储单元),这种原位(址)计算的方法可节省大量内存。
显示全部