如何理解傅里叶变换公式? 1.为什么按照傅里叶公式做就可以将信号从时域转变到频域?2.为什么式中的e^(-jwt)部分会出现一个负号?有什么特定的意义? 关于傅里叶变换,无论是书本还是网上可以很容易找到关于傅里叶变换的描述,但大都太过抽象,尽是一些让人看了就望而生畏的公式罗列,很难让人能够从感性上得到理解。 傅里叶级数在数论、组合数学、信号处理、概率论、统计学、密码学、声学、光学等领域都有着广泛的应用,一打开《信号与系统》、《锁相环原理》等书籍,动不动就跳出一个傅里级数或傅里叶变换,弄一长串公式,让人云山雾罩。 ⚡蜂考高数上系统课!10小时精通!暑期优惠价1分钱!没有套路,即买即学,下方链接购买 在讲解之前先了解一下时域和频域的概念 一、时域和频域是什么? 时域故名思议就是随着时间的推移,我们所能直观感受到的东西,例如音乐。我们听到动听的音乐,这是在时域上发生的事情。 对于演奏者来说音乐是一些固定的音符,我们听到的音乐在频域内是一个永恒的音符。音符的个数是有限且固定的,但可以组成无限的乐曲。 傅立叶也告诉我们,任何周期函数都可以看作不同振幅,不同相位的正弦波的叠加。就像用音符组合出音乐一样。 贯穿时域和频域的方法之一,就是傅立叶分析,傅立叶分析又分为两个部分:傅立叶级数和傅立叶变换。 二、傅里叶级数是什么? 傅里叶级数指出任何周期函数都可以看作不同振幅,不同相位的正弦波的叠加。 对比傅里叶变换:傅里叶变换指出非周期函数(函数曲线下的面积是有限的)也可以用正弦或余弦乘以加权函数的积分来表示。 过程大概如图所示:
在傅里叶级数中要介绍两个概念:频谱(幅度谱),相位谱。 了解这两个概念就更容易理解把周期函数拆分为各个正弦函数叠加的过程。 频谱(幅度谱) 从不同的“域”来看可能会产生很不一样的效果:
从时域来看,会看到一个近似为矩形的波,这个矩形的波可以被拆分为一些正弦波的叠加。 从频域方向来看,就看到了每一个正弦波的幅值,可以发现,在频谱中,偶数项的振幅都是0。也就对应了图中的彩色直线,振幅为0的正弦波。下图展示了频域图像:
相位谱 频谱只代表了一个正弦函数的幅值,还需要相位,不同相位决定了波的位置,所以对于频域分析,仅仅有频谱(振幅谱)是不够的,我们还需要一个相位谱。
投影点用粉色点表示,红色点表示离正弦函数频率轴最近的一个峰值,而相位差就是粉色点和红色点水平距离除以周期。将相位差画到一个坐标轴上就形成了相位谱。 三、什么是傅里叶变换? 傅里叶变换是一种线性的积分变换,只是这种变换是从时间到频率的变化或其相互转化。在时域是一个周期且连续的函数,而在频域是一个非周期离散的函数。 傅里叶变换,则是将一个时域非周期的连续信号,转换为一个在频域非周期的连续信号。 先从复数说起,下面是一个复数的一个表达形式,可以看出乘以i的效果是将数值逆时针旋转了90度
数轴与虚数轴共同构成了一个复数的平面,也称复平面。这样我们就了解到,乘虚数i的一个功能——旋转。 欧拉公式将正弦波统一成了简单的指数形式,我们来看看图像上的涵义:
欧拉公式所描绘的,是一个随着时间变化,在复平面上做圆周运动的点,随着时间的改变,在时间轴上就成了一条螺旋线。如果只看它的实数部分,也就是螺旋线在左侧的投影,就是一个最基础的余弦函数。而右侧的投影则是一个正弦函数。 欧拉公式告诉我们:正弦波的叠加,也可以理解为螺旋线的叠加在实数空间的投影。 根据欧拉公式里面的复平面,我们可以得到单个矩形波形成的螺旋图如下图所示:
每一条螺旋线都有着不同的振幅(旋转半径),频率(旋转周期)以及相位。而将所有螺旋线连成平面,就是这幅海螺图了。
展示了将海螺图投影到实数空间就形成了傅立叶变换的连续非周期的连续的曲线,此曲线在时域上就表现为一个矩形波的形式。 到这里可以直观的理解傅立叶级数和傅立叶变换,傅立叶级数是说周期性变换的函数可以用有限个正弦波叠加而来,傅立叶变换说非周期变换的函数也可以用连续的正弦波来模拟,也了解了在复平面、频域和时域上傅立叶变换的效果。 连续傅里叶变换 一般傅里叶变换一词不加任何限定语,则指的是连续傅里叶变换。连续傅里叶变换将平方可积的函数f(t)表示成复指函数的积分或级数形式。
这是将频率域的函数F(ω)表示为时间域的函数f(t)的积分形式。 连续傅里叶变换的逆变换为:
即将时间域的函数f(t)表示为频率域的函数F(ω)的积分。 一般可称函数f(t)为原函数,而称函数F(ω)为傅里叶变换的像函数,原函数和像函数构成一个傅里叶变换对。 除此之外,还有其它形式的变换,以下两种形式亦常被使用。在通信或是信号处理方面,常以f=W/2π来代换,形成新的变换对:
或者是因系数重分配而得到新的变换对:
一种对连续傅里叶变换的推广称为分数傅里叶变换。分数傅里叶变换指的就是傅里叶变换的广义化。分数傅里叶变换的物理意义即做傅里叶变换 a 次,其中 a 不一定要为整数;而做了分数傅里叶变换之后,信号或输入函数便会出现在介于时域与频域之间的分数域。 当f(t)为偶函数(或奇函数)时,其正弦(或余弦)分量将消亡,而可以称这时的变换为余弦变换或正弦变换。 另一个值得注意的性质是,当f(t)为纯实函数时,F(−ω) = F*(ω)成立。 傅里叶级数 连续形式的傅里叶变换其实是傅里叶级数的推广,因为积分其实是一种极限形式的求和算子而已。对于周期函数,其傅里叶级数是存在的:
其中Fn为复幅度。对于实值函数,函数的傅里叶级数可以写成:
其中an和bn是实频率分量的幅度。 离散时间傅里叶变换 离散傅里叶变换是离散时间傅里叶变换的特例。离散时间傅里叶变换在时域上离散,在频域上则是周期的。DTFT可以被看作是傅里叶级数的逆变换。 离散傅里叶变换 离散傅里叶变换(DFT),是连续傅里叶变换在时域和频域上都离散的形式,将时域信号的采样变换为在离散时间傅里叶变换(DTFT)频域的采样。在形式上,变换两端(时域和频域上)的序列是有限长的,而实际上这两组序列都应当被认为是离散周期信号的主值序列。即使对有限长的离散信号作DFT,也应当将其看作经过周期延拓成为周期信号再作变换。在实际应用中通常采用快速傅里叶变换以高效计算DFT。 为了在科学计算和数字信号处理等领域使用计算机进行傅里叶变换,必须将函数xn定义在离散点而非连续域内,且须满足有限性或周期性条件。这种情况下,使用离散傅里叶变换(DFT),将函数xn表示为下面的求和形式:
其中Xk是傅里叶幅度。直接使用这个公式计算的计算复杂度为O(n*n),而快速傅里叶变换(FFT)可以将复杂度改进为O(n*lgn)。 下面,比较下上述傅立叶变换的4种变体:
如上,容易发现:函数在时(频)域的离散对应于其像函数在频(时)域的周期性。反之连续则意味着在对应域的信号的非周期性。也就是说,时间上的离散性对应着频率上的周期性。同时,注意,离散时间傅里叶变换,时间离散,频率不离散,它在频域依然是连续的。 下图是四种原信号图例(从上到下,依次是FT,FS,DTFT,DFT):
这四种傅立叶变换都是针对正无穷大和负无穷大的信号,即信号的的长度是无穷大的。 每种傅立叶变换都分成实数和复数两种方法,实数方法好理解,复数方法就比较复杂,需要理解有关复数方面的知识。但在理解实数离散傅里叶变换的基础上,再去理解复数傅里叶变换就容易多了。 关于实数离散傅立叶变换(Real DFT)的例子 看一个变换实例,下图是一个原始信号图像:
9个余弦信号:
9个正弦信号:
把以上所有信号相加即可得到原始信号,对于以上的变换结果,在程序中的表示可以看看下面这个示例图:
上图中左边表示时域中的信号,右边是频域信号表示方法, 从左向右,–>,表示正向转换(Forward DFT),从右向左,<–,表示逆向转换(Inverse DFT), 用小写x[]表示信号在每个时间点上的幅度值数组, 用大写X[]表示每种频率的副度值数组(即时间x–>频率X), 因为有N/2+1种频率,所以该数组长度为N/2+1, X[]数组又分两种,一种是表示余弦波的不同频率幅度值:Re X[],另一种是表示正弦波的不同频率幅度值:Im X[], Re是实数(Real)的意思,Im是虚数(Imagine)的意思,采用复数的表示方法把正余弦波组合起来进行表示,但这里我们不考虑复数的其它作用,只记住是一种组合方法而已,目的是为了便于表达(在后面我们会知道,复数形式的傅立叶变换长度是N,而不是N/2+1)。如此,再回过头去,看上面的正余弦各9种频率的变化,相信,问题不大了。 实数形式离散傅立叶变换 先来看一下频率的多种表示方法: 1、序号表示方法,根据时域中信号的样本数取0 ~ N/2,用这种方法在程序中使用起来可以更直接地取得每种频率的幅度值,因为频率值跟数组的序号是一一对应的: X[k],取值范围是0 ~ N/2; 2、分数表示方法,根据时域中信号的样本数的比例值取0 ~ 0.5: X[ƒ],ƒ = k/N,取值范围是0 ~ 1/2; 3、用弧度值来表示,把ƒ乘以一个2π得到一个弧度值,这种表示方法叫做自然频率(natural frequency):X[ω],ω = 2πƒ = 2πk/N,取值范围是0 ~ π; 4、以赫兹(Hz)为单位来表示,这个一般是应用于一些特殊应用,如取样率为10 kHz表示每秒有10,000个样本数:取值范围是0到取样率的一半。 DFT基本函数 ck[i] = cos(2πki/N) sk[i] = sin(2πki/N) 其中k表示每个正余弦波的频率,如为2表示在0到N长度中存在两个完整的周期,10即有10个周期,如下图:
上图中至于每个波的振幅(amplitude)值(Re X[k],Im X[k])是怎么算出来的,这个是DFT的核心,也是最难理解的部分,我们先来看看如何把分解出来的正余弦波合成原始信号(Inverse DFT)。 合成运算方法(Real Inverse DFT) DFT合成等式(合成原始时间信号,频率–>时间,逆向变换):
这个等式是不是有似曾相识的感觉,不错!这个等式跟傅里叶级数是非常相似的:
至于怎么证明DFT合成公式,就不需要追根究底了。但可以从傅里叶级数公式中看出DFT合成公式的合理性。 DFT合成等式中的Im X[k]和Re X[k]跟之前提到的Im X[k]和Re X[k]是不一样的,下面是转换方法:
但k等于0和N/2时,实数部分的计算要用下面的等式:
上面四个式中的N是时域中点的总数,k是从0到N/2的序号。 为什么要这样进行转换呢?这个可以从频谱密度(spectral density)得到理解,如下图:
横坐标表示频率大小,纵坐标表示振幅大小,原始信号长度为N(这里是32),经DFT转换后得到的17个频率的频谱,频谱密度表示每单位带宽中为多大的振幅,那么带宽是怎么计算出来的呢?看上图,除了头尾两个,其余点的所占的宽度是2/N,这个宽度便是每个点的带宽,头尾两个点的带宽是1/N,而Im X[k]和Re X[k]表示的是频谱密度,即每一个单位带宽的振幅大小,但表示2/N(或1/N)带宽的振幅大小,所以分别应当是Im X[k]和Re X[k]的2/N(或1/N)。 至于为什么虚数部分是负数,这是为了跟复数DFT保持一致,是数学计算上的需要。(Im X[k]在计算时就已经加上了一个负号,再加上负号,结果便是正的,等于没有变化)。 如果已经得到了DFT结果,这时要进行逆转换,即合成原始信号,则可按如下步骤进行转换: 1、先根据上面四个式子计算得出的值; 2、再根据DFT合成等式得到原始信号数据。 分解运算方法(DFT) 有三种完全不同的方法进行DFT: 第一种方法是通过联立方程进行求解, 从代数的角度看,要从N个已知值求N个未知值,需要N个联立方程,且N个联立方程必须是线性独立的,计算量非常的大且极其复杂,所以很少被采用; 第二种方法是利用信号的相关性进行计算,这个是后面将要介绍的方法; 第三种方法是快速傅立叶变换(FFT),非常具有创造性和革命性的的方法,大大提高了运算速度,使得傅立叶变换能够在计算机中被广泛应用,但跟我们现在所进行的实域DFT变换不一样,也较难理解。 有一点很重要,这三种方法所得的变换结果是一样的,经过实践证明,当频域长度为32时,利用相关性方法进行计算效率最好,否则FFT算法效率较高。 ①利用信号的相关性可以从噪声背景中检测出已知的信号,我们也可以利用这个方法检测信号波中是否含有某个频率的信号波。如下图:
上面a和 b两个图是待检测信号波,图a可以看出是个3个周期的正弦信号波,图b的信号波则看不出是否含有正弦或余弦信号,图c和d都是个3个周期的正弦信号波,图e和f分别是a、b两图跟c、d两图相乘后的结果,图e所有点的平均值是0.5,说明信号a含有振幅为1的正弦信号c,但图f所有点的平均值是0,则说明信号b不含有信号d。这个就是通过信号相关性来检测是否含有某个信号的方法。 ②可以通过把输入信号和每一种频率的正余弦信号进行相乘(关联操作),从而得到原始信号与每种频率的关联程度(即总和大小),这个结果便是我们所要的傅立叶变换结果,下面两个等式便是我们所要的计算方法:
第二个式子中加了个负号,是为了保持复数形式的一致,前面我们知道在计算时又加了个负号,所以这只是个形式的问题,并没有实际意义,你也可以把负号去掉,并在计算时也不加负号。 要明白一个正交的概念:两个函数相乘,如果结果中的每个点的总和为0,则可认为这两个函数为正交函数。要确保关联性算法是正确的,则必须使得跟原始信号相乘的信号的函数形式是正交的。 复数形式离散傅立叶变换 一、 把正余弦函数表示成复数的形式 通过欧拉等式可以把正余弦函数表示成复数的形式: cos( x ) = 1/2 e j(-x) + 1/2 ejx sin( x ) = j (1/2 e j(-x) – 1/2 ejx) 从这个等式可以看出,如果把正余弦函数表示成复数后,它们变成了由正负频率组成的正余弦波,相反地,一个由正负频率组成的正余弦波,可以通过复数的形式来表示。 在实数傅立叶变换中,它的频谱是0 ~ π(0 ~ N/2),但无法表示-π~ 0的频谱,可以预见,如果把正余弦表示成复数形式,则能够把负频率包含进来。 二、 把变换前后的变量都看成复数的形式 复数形式傅立叶变换把原始信号x[n]当成是一个用复数来表示的信号,其中实数部分表示原始信号值,虚数部分为0,变换结果X[k]也是个复数的形式,但这里的虚数部分是有值的。 用复数的观点来看原始信号,是理解复数形式傅立叶变换的关键。 三、 对复数进行相关性算法(正向傅立叶变换) 从实数傅立叶变换中可以知道,我们可以通过原始信号乘以一个正交函数形式的信号,然后进行求总和,最后就能得到这个原始信号所包含的正交函数信号的分量。 现在我们的原始信号变成了复数,要得到的当然是复数的信号分量,是可以把它乘以一个复数形式的正交函数。正余弦函数都是正交函数,变成如下形式的复数后,仍旧还是正交函数。 cos x + j sin x, cos x – j sin x,…… 正弦函数在虚数中变换后得到的是负的正弦函数,这里我们再加上一个负号,使得最后的得到的是正的正弦波,根据这个于是我们很容易就可以得到了复数形式的DFT正向变换等式:
很容易可以得到欧拉变换式子:
为了表达上的方便才用到欧拉变换式,在解决问题时我们还是较多地用到正余弦表达式。 整理不易,点个赞再走吧! @蜂考 ,分享更多干货!
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/75288.html