傅里叶变换算法详细介绍
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
傅里叶变换算法详细介绍
从头到尾彻底理解傅里叶变换算法、上
前言
第一部分、DFT
第一章、傅立叶变换的由来
第二章、实数形式离散傅立叶变换(Real DFT)
从头到尾彻底理解傅里叶变换算法、下
第三章、复数
第四章、复数形式离散傅立叶变换
/**************************************************** ***********************************************/
这一片的傅里叶变换算法,讲解透彻,希望对大家会有所帮助。感谢原作者们(July、dznlong)的精心编写。
/**************************************************** **********************************************/
前言:
“关于傅立叶变换,无论是书本还是在网上可以很容易找到关于傅立叶变换的描述,但是大都是些故弄玄虚的文章,太过抽象,尽是一些让人看了就望而生畏的公式的罗列,让人很难能够从感性上得到理解”---dznlong,
那么,到底什么是傅里叶变换算法列?傅里叶变换所涉及到的公式具体有多复杂列?
傅里叶变换(Fourier transform)是一种线性的积分变换。因其基本思想首先由法国学者傅里叶系统地提出,所以以其名字来命名以示纪念。
哦,傅里叶变换原来就是一种变换而已,只是这种变换是从时间转换为频率的变化。这下,你就知道了,傅里叶就是一种变换,一种什么变换列?就是一种从时间到频率的变化或其相互转化。
ok,咱们再来总体了解下傅里叶变换,让各位对其有个总体大概的印象,也顺便看看傅里叶变换所涉及到的公式,究竟有多复杂:
以下就是傅里叶变换的4种变体(摘自,维基百科)
连续傅里叶变换
一般情况下,若“傅里叶变换”一词不加任何限定语,则指的是“连续傅里叶变换”。连续傅里叶变换将平方可积的函数f(t)表示成复指数函数的积分或级数形式。
这是将频率域的函数F(ω)表示为时间域的函数f(t)的积分形式。
连续傅里叶变换的逆变换(inverse Fourier transform)为:
即将时间域的函数f(t)表示为频率域的函数F(ω)的积分。
一般可称函数f(t)为原函数,而称函数F(ω)为傅里叶变换的像函数,原函数和像函数构成一个傅里叶变换对(transform pair)。
除此之外,还有其它型式的变换对,以下两种型式亦常被使用。在通信或是信号处理方面,常以
来代换,而形成新的变换对:
或者是因系数重分配而得到新的变换对:
一种对连续傅里叶变换的推广称为分数傅里叶变换(Fractional Fourier Transform)。分数傅里叶变换(fractional Fourier
transform,FRFT)指的就是傅里叶变换(Fourier transform,FT)的广义化。
分数傅里叶变换的物理意义即做傅里叶变换 a 次,其中 a 不一定要为整数;而做了分数傅里叶变换之后,信号或输入函数便会出现在介于时
域(time domain)与频域(frequency domain)之间的分数域(fractional domain)。
当f(t)为偶函数(或奇函数)时,其正弦(或余弦)分量将消亡,而可以称这时的变换为余弦变换(cosine transform)或正弦变换(sine transform).
另一个值得注意的性质是,当f(t)为纯实函数时,F(−ω) = F*(ω)成立.
傅里叶级数
连续形式的傅里叶变换其实是傅里叶级数(Fourier series)的推广,因为积分其实是一种极限形式的求和算子而已。对于周期函数,其傅里叶级数是存在的:
其中Fn为复幅度。对于实值函数,函数的傅里叶级数可以写成:
其中an和bn是实频率分量的幅度。
离散时域傅里叶变换
离散傅里叶变换是离散时间傅里叶变换(DTFT)的特例(有时作为后者的近似)。DTFT 在时域上离散,在频域上则是周期的。DTFT可以被看作是傅里叶级数的逆变换。
离散傅里叶变换
离散傅里叶变换(DFT),是连续傅里叶变换在时域和频域上都离散的形式,将时域信号的采样变换为在离散时间傅里叶变换(DTFT)频域的采样。在形式上,变换两端(时域和频域上)的序列是有限长的,而实际上这两组序列都应当被认为是离散周期信号的主值序列。即使对有限长的离散信号作DFT,也应当将其看作经过周期延拓成为周期信号再作变换。在实际应用中通常采用快速傅里叶变换以高效计算DFT。
为了在科学计算和数字信号处理等领域使用计算机进行傅里叶变换,必须将函数xn定义在离散点而非连续域内,且须满足有限性或周期性
条件。这种情况下,使用离散傅里叶变换(DFT),将函数xn表示为下面的求和形式:
其中Xk是傅里叶幅度。直接使用这个公式计算的计算复杂度为O(n*n),而快速傅里叶变换(FFT)可以将复杂度改进为O(n*lgn)。(后面会具体阐述FFT是如何将复杂度降为O
(n*lgn)的。)计算复杂度的降低以及数字电路计算能力的发展使得DFT成为在信号处理领域十分实用且重要的方法。
下面,比较下上述傅立叶变换的4种变体,
如上,容易发现:函数在时(频)域的离散对应于其像函数在频(时)域的周期性。反之连续则意味着在对应域的信号的非周期性。也就是
说,时间上的离散性对应着频率上的周期性。同时,注意,离散时间傅里叶变换,时间离散,频率不离散,它在频域依然是连续的。
如果,读到此,你不甚明白,大没关系,不必纠结于以上4种变体,继续往下看,你自会豁然开朗。(有什么问题,也恳请提出,或者批评指正)
ok,本文,接下来,由傅里叶变换入手,后重点阐述离散傅里叶变换、快速傅里叶算法,到最后彻底实现FFT算法,全篇力求通俗易懂、阅读顺畅,教你从头到尾彻底理解傅里叶变换算法。由于傅里叶变换,也称傅立叶变换,下文所称为傅立叶变换,同一个变换,不同叫法,读者不必感到奇怪。
第一部分、DFT
第一章、傅立叶变换的由来
要理解傅立叶变换,先得知道傅立叶变换是怎么变换的,当然,也需要一定的高等数学基础,最基本的是级数变换,其中傅立叶级数变换是傅立叶变换的基础公式。