毕业设计论文
更新时间:2024-05-29 20:57:01 阅读量: 综合文库 文档下载
MATLAB的FFT在信号处理中的应用
熊峰
摘要:傅里叶变换(DFT—Discrete Fourier Transform)在信号处理中有着非常重要的作
用,但是由于其运算量较大,在应用上受到了限制,自从快速傅里叶变换(FFT—Fast Fourier Transform)提出以后,使DFT的应用得到了迅速推广。本文从应用的角度出发,在MATLAB平台上,简单介绍了FFT的几方面应用。 关键词:DFT;FFT;MATAB
在信号处理中,DFT的计算具有举足轻重的地位,信号的相关、滤波、谱估计等都要通过DFT来实现.然而,当N很大的时候,求一个N点的DFT要完成N×N次复数乘法和N(N-1)次复数加法,其计算量相当大。1965年J.W.Cooley和J.W.Tukey巧妙地利用WN因子的周期性和对称性,构造了一个DFT快速算法,即快速傅里叶变换(FFT)。
FFT 广泛应用于离散信号的数字信号处理中,完成离散信号从时域到频域的转换。以FFT 在测量失真度中的应用为例,分析了可能造成误差的原因,并用MATLAB 进行了仿真,以找出减少误差的最佳方法。
利用MATLAB 语言实现傅立叶变换计算全息图的制作, 并且针对随机因子及模式溢出对全息再现的影响进行了实验研究。实验结果表明MATLAB 语言在算法实现上更加简单, 是研究计算全息的有效工具之一,以下介绍FFT算法和FFT算法的MATLAB实现及应用: 1、基-2FFT算法
长度为N的有限长序列x(n)的DFT为:
kn X(k)??x(n)WN,k?0,1,???,N?1 (1)
n?0N?1利用
knk(n?N)(k?N)n (2) WN?WN?WN和
WN
k(n?N)2kn, (3) ??WN
将N点DFT转化为N/2点的DFT。 当N=2r时,将x(n)按奇偶分成N/2的序列
x1(r)?x(2r),0?r?N/2?1, (4) x2(r)?x(2r?1),0?r?N/2?1, (5)
则
knk2rk(2r?1) ??x(2r)WN X(k)??x(n)WN??x(2r?1)WNn?0N?1N?12r?0N2r?0?X1(k)?X2(k) k=0,1,?,N-1 (6)
krkr式中X1(k)=?x1(r)WN/2=DFT[x1(r)],X2(k)??x2(r)WN/2?DFT[x2(r)]。由于
r?0r?0N?12N?12(k?N/2)k,所以X(k)也可表示为 X1(k)和X2(k)都是N/2点的DFT,且WN??WNk X(k)?X1(k)?WNX2(k),k=0,1,???,N/2-1 (7)
kX(k?N/2)?X1(k)?WNX2(k),k=0,1, ???,N/2-1 (8)
这样就将N点DFT分解为两个N/2点的DFT的运算.N/2点的DFT还可以再分解为N/4点DFT,共可以分解r级,最后达到N/2个 2点DFT运算.这种方法由于每一步都是按每级 输入序列在时间上的次序属于偶数还是属于奇数来分解为两个更短的子序列,所以称为“按时间抽取法”。 2、FFT的计算量直接计算DFT运算量为:
复数乘法 m=N2, (9) 复数加法 a=N(N-1)。 (10) 而采用FFT的运算量则为: 复数乘法 mF?NNr?log2N, (11) 22复数加法 aF?Nr?Nlog2N。
(12)
由于计算机上运算乘法所需时间比加法所需时间多得多,故以乘法为例,直接计算DFT与计算FFT的运算量之比为
N22N? , (13) Nrlog2N2从式中可以看出,当N的数值较小时,优越性不是很明显但当N的值很大时,FFT的优越性就非常突出。
3、 FFT算法的MATLAB实现及应用
3.1 算法实现
MATLAB提供一个称为FFT函数来计算x(n)的DFT,FFT函数是用机器语言,而不是以MATLAB指令写成的,因此,它的计算速度非常快。如果N是2的整数幂,就采用基-2FFT算法,如果N不是2的某个幂,就采用较慢的分裂基算法,如果N是某个素数,那么FFT函数就蜕化为原始的DFT算法。 格式:y=fft(x,N),计算N点DFT,如果 x的长度小于N,就将x补零;若x的长度大于N时,截断x;如果x是一个矩阵,那么fft(x,N)计算x中每一列的N点的DFT。另外,可以应用ifft 函数计算逆DFT,它与FFT具有相同的特性。
3.2 FFT应用实例
(1)用FFT分析信号频率成分.被掺杂了噪声的信号,很难看出它所包含的频率分量.现在设计一个由50Hz和150Hz正弦信号构成的信号,受到随机噪声的干扰,数据采样率为1000Hz,可以通过FFT来分析信号的频率成分,如图1。
图1(a)掺杂了噪声的信号
图1(b)FFT的频谱
(2)用FFT分析语音信号频谱
对于载入的语音信号利用FFT进行频谱分析,可以看到该语音信号的频谱,然后频谱的幅值稍作处理后,再利用FFT反变换对语音信号进行恢复,如图2。
图2(a)语音信号 图2(b)语音信号频谱
图2(c)经幅值处理后频谱 图2(d)反变换后恢复的语音信号
小结:利用MATLAB软件来对傅立叶变换、快速傅立叶变换进行仿真,简单,功能强大,调试减少失真误差,运行MATLAB软件仿真的图像,直观、易理解使得设计方便、快捷, 大大减轻了工作量。提高快速傅立叶变换速度的方法很多,随着可编程器件的规模不断扩大,内部资源不断丰富,采用并行迭代处理、提高FFT的点数及处理的基数都是提速的重要手段,所以随着研究和设计的深入,新的设计思想必在以后的MATLAB实现中体现,而采用MATLAB实现FFT成为未来发展的一种发展趋势。 参考文献:
[1]Cooley JW,Tukey JW. an aigorithm for the machine computation of complex Fourier series [M].Mathematics of Computation, 1965,19(Apr):2972301. [2]程佩青.数字信号处理教程[M].北京:清华大学出版社,2001:1382157. [3]赵红怡,张常年.数字信号处理及其MATLAB实现[M].北京:化学工业出版社,2002:30233.
[4]薛年喜.MATLAB在数字信号处理中的应用[M].北京:清华大学出版社,2003:1262133.
正在阅读:
毕业设计论文05-29
我的爷爷作文550字07-07
花溪区代理发表职称论文发表-桡动脉股动脉介入穿刺治疗冠心病术04-15
最新药政科2022年工作总结03-23
广东省增城市2011届高中毕业班调研测试(数学文)03-08
钳工安全操作规程02-07
说明书(3)09-25
发型设计:不同脸型最佳发型搭配07-19
怎样彻底去除恶意网站修改你的IE解决方法05-27
- 2009中西部家居博览会总体策划
- 2009 Revit 1级工程师学生用
- 天津地铁建设工程试验检测机构管理办法(TJDT-ZY-AQ-29)
- 新四年级数学暑期班第七次教案
- 机械制造企业隐患排查治理检查表 - 图文
- 2008届全国百套高考数学模拟试题分类汇编-103概率与统计解答题 -
- 职场健身防病试题及答案
- Excel操作技巧大全II - --数据输入和编辑技巧
- 南开大学2018春季《行政管理学》离线作业考核答案
- 2015年医师定考简易程序试卷及答案
- 新《预算法》对行政事业单位预算管理的挑战解读
- 轴的课件
- 电动汽车充电桩设计 毕业论文
- 必修2、选修2-1、1-1期末模拟试题2
- 桌面远程运维管理系统实施-可行性研究报告120306
- 西气东输水土保持工程工作总结 - 图文
- 正宁县基本县情及经济社会发展情况简介
- SATWE参数设置(巨详细)
- 儒家法思想研究综述
- 生活家政服务电子商务平台建设运营整合方案书【审报完稿】
- 毕业设计
- 论文