傅里叶变换

周期函数的傅里叶变换

傅里叶变换最开始需要从傅里叶级数开始讲起

  • 傅里叶级数

    一个周期信号f(t), 周期为T, 角频率为 w0=2πf0=2πT,可以展开成如下形式:

    f(t)=a0+a1cosw0t+a2cos2w0t+a3cos3w0t+...+b1sinw0t+b2sin2w0t+b3sin3w0t+...=a0+n=1(ancosnw0t+bnsinnw0t)

从含义上理解,我们知道是用无限个缩放周期去拟合这个模拟函数,如下图:

但从数学上解释,仔细观察,就知道就可以体会到f(t)cosnw0t以及sinnw0t做分解,之所以能这么分解是因为正余弦组成了一组正交基

介绍正交基之前要先知道函数的正交性: 高中知识告诉我们 一个二维空间的向量是由x, y轴的单位向量x=(1,0),y=(0,1)构成,这俩个向量具有正交性,因为它们的内积(投影)为:x·y=10+01=0, 同样把正交扩展至函数,当函数的内积如果为0那么两个函数正交,比如说两个函数 f(x)g(x), 那么+f(x)g(x)dx=0, 则它们正交,向量空间的内积是对应每一维相乘然后算总和,而函数可以微分化后看成无线维,所以函数的内积运算是积分

cosnw0t以及sinnw0t实际上构成的正交函数,它们之中任意两个内积为0(很好证明),所以可以用他们来做基分量然后组合成f(t)

{1,cosw0x,sinw0x,cos2w0x,sin2w0x,cos3w0x,sin3w0x,cos4w0x,sin4w0x...}

由于这组正交函数所对应的定义域x[,+], 值域f(x)[,+], 所以可以进行线性组合为f(t)同时这组三角函数的角频率必为w0倍数,很好理解,是因为需要同倍数周期的函数进行叠加, 而an,bn可以理解成这些维度的系数,或者说f(t)在这些维度上的投影,要想确定这些值实际上是一个投影的过程,将会在下面得到

  • 复指数形式的傅里叶级数

为什么要引入这个复指数基,逻辑是这样子的,对于一个普通周期函数

f(x)=kcos(x+θ)

如果单纯用余弦/正弦函数去表示的话,θ无法表示出来的, 因为相位θ的存在,正确的构造思路应该是从这个高中公式开始去入手构造,那么就有正余弦了:

acosx+bsinx=a2+b2sin(x+θ)θ=arctanba

所以需要搞一个sin和cos同时构成的基序列,使得相位θ存在,这是三角基傅里叶级数为什么既有正弦也有余弦的原因(虽然正弦和余弦是可以转换的)

而复指数傅里叶级数,则是说既然你同时要有acosx+bsinx,但是两个东西我看着碍眼,我可以利用欧拉公式eix=cosx+jsinx一个去表示你这两个东西,只要把eix系数构造好,那就可以jsinx转成bsinx,这就是它的思想。

所以我们更习惯使用下面这么一组复指数正交基去表示,其中j是虚数单位也就是我们常见的i

{ejnw0x,...,ej3w0x,e2jw0x,ejw0x,ej0w0x,ejw0x,ej2w0x,ej3w0x,...,ej4w0x}

这组正交基的定义域x[,+], 值域f(x) 除了是[,+], 同时还在一个复数空间上,所以用来表示一个实数空间的东西没有问题(三维变量表示二维变量,只需要把多出的维度消除掉即可), 在这组正交基下,f(t)可以在区间[T2,T2]展开成如下形式:

:f(t)=k=+ckejkw0t

  • 投影的计算

我们知道ck相当于f(t)在各个分量上的系数,或者说f(t)在ejnw0t上的投影,投影的计算方式在二维向量中内积已经做过计算:

x·y=|x||y|·cosθxy:|x|cosθ=x·yy

所以在函数上也是一样的定义,内积的值/基分量,对于Ck的值如下:

ck=<f(t),ejkw0t><ejkw0t,ejkw0t>=T2T2f(t)ejkw0tdtT2T2ejkw0tejkw0tdt=1TT2T2f(t)ejnw0tdt

其中有两个细节,一是复数的乘法是乘以第二个乘数的共轭的,所以看到ejkw0t变成了ejkw0t, 第二是关于被除数<ejkw0t,ejkw0t>的理解上,因为我们这里算的是以ejkw0t为基的系数,所以除的是ejkw0t的内基,而不是一个ejkw0t

  • 总结

    到这里其实就很明确了,一个周期为T的函数,可以由周期为nT(n= ..., -3, -2, -1, 0 1, 2, 3, ...)的正余弦周期函数组合构成,为了表示方便所以用复指数ejkw0t方式去代替这些正余弦,而要求这些分量的系数,实际上就是求f(t)在这些基上投影,计算方式是f(t), 所以往往能看到这东西f(t)ejnw0t, 它实际上就是:f(t)与积分量的内积

非周期函数的傅里叶变换

在上一节已经知道了,对于周期函数f(t)在区间[T2,T2] 做傅里叶展开得

f(t)=k=+ckeikw0t(2.1)cn=1TT2T2f(t)ejkw0tdt

对于非周期函数,可以认为T,此时w0=2πT 0, 所以微分化后,可以认为是w=kw0,w0=Δw, 此时

cn=Δw2πT2T2f(t)ejwtdt

cn代入2.1得

f(t)=12πk=+(T2T2f(t)ejwtdt)ejkw0tΔw

由于Δw,T

f(t)=12π+(+f(t)ejwtdt)ejkwtdwF(w)=+f(t)ejwtdt():f(t)=12π+F(w)ejwtdw()

F(w)描述的就是f(t)ejwt·2π(2π), 是函数与在该正交分量相关性,通过f(t)得到F(w)的过程也被称之为傅里叶变换,F(w)又被称之为f(t)的频谱密度, 而对于原来的周期函数Cn,因为其分量的频率不是连续的,所以将cn称为频谱(与概率分布函数和概率密度函数的概念一致)

离散时间傅里叶变换

对于一个周期函数x(n), 我们知道其傅里叶变换,但是如果对其进行采样后,它的频率的求解该怎么做呢?

它的公式如下:

:X~(k)=n=0N1x~(k)ejk2πNn:x~(k)=1Nk=0N1X~(k)ejk2πNn

离散时间傅里叶级数的公式很好理解,和傅里叶级数一样,就是计算投影的过程,但是现在函数点变成了取样点了x~(k) 其它点都没有都是0,所以不用放过来; 然后基分量ejk2πNn和过去的ejtw0n 发生了形式上符号上发生了一点变化,但本质没有区别,右上角的构成仍然是虚数 · 自变量 · 角频率· 扩充倍数,唯一有变化的是角频率这个地方,其它都是一样的,角频率在这里被定义成了2πN, 而且N还是一个变量,表示的是取样点的数量,角频率w0必须要和原函数保持一直,在这里取了N个点,它们可能如上图属于多个周期里面,也可能都在一个周期里面,那么这个时候角频率的范围就在[2πN,2π],所以就将角频率对在了最小的2πN

posted @   woder  阅读(1131)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· Open-Sora 2.0 重磅开源!
点击右上角即可分享
微信分享提示