傅里叶变换
傅里叶变换是一种线性积分变换,用于信号在时域和频域之间的变换。由法国学者约瑟夫·傅里叶系统地提出,所以以其名字来命名以示纪念。本文主要讲解傅里叶变换的公式推导和快速傅里叶变换算法的原理及实现。
笔者并没有在课程中学习过傅里叶变换,最初的基础仅仅是高数中讲到的傅里叶级数。由于项目需要,查阅了大量资料自学了傅里叶变换,学习过程中有一些较难理解的地方,而且感觉其中的一些东西容易忘记,于是决定记录下来,以备后患。
Let’s Go!!!
目录
傅里叶变换的公式推导
三角函数的正交性
傅里叶变换的公式推导需要一些基础性的知识,三角函数的正交性便是其中的关键。
何为三角函数的正交性?
在线性代数中,向量正交指两个向量内积为0。而三角函数的正交指在三角函数系中,任意两个不同的函数乘积在区间的积分为0。当然这个区间是有限制的,区间大小必须是三角函数周期的整数倍。
例如:
上面提到的
证明
这里需要用到三角函数的积化和差公式:
当
而当
积分的结果为:
这个可以用半角公式证明:
傅里叶级数
OK, 到这里我们既可以说一说傅里叶级数了。What is Fourier series?
傅里叶级数可以用来表示任意一个周期函数。
对于一个周期函数
其傅里叶级数为
其中
至于是怎么推导出来的这里就不说明了(其实我也不知道)。不过可以说一下
系数的求解
这就用到我们上面提到的三角函数正交性了。
我们选取周期为
所以,
机智如你,一定想到了为什么要多乘一个
我们继续
其实这里的系数
可以解得:
将
傅里叶级数的意义
从这个公式中我们可以看到,一个周期函数可以由一个常函数和无穷多个正弦函数和余弦函数叠加而成。
其中
欧拉公式
傅里叶变换只能表示周期性函数,但是现实世界中周期性函数很少。那么问题来了,能不能表示非周期函数。答案是可以的,其实非周期性的函数就是一个周期无穷大的函数。
开始之前,仍然需要一个预备知识——欧拉公式(Euler formula)。让我们见识一下这个号称数学界最美的公式。
初见惊为天人,其形也,翩若惊鸿,婉若游龙。荣曜秋菊,华茂春松。
再见则细思恐极。
当
是不是感觉数学中最基本的符号和数字都被包含在这个等式中,一切浑然天成!
其实吧,我们只想要从中得到下面的两个公式:
傅里叶级数的复指数形式
将
其中
接下来我们求
我们已知
当
时当
时当
时
咦!
下面是见证奇迹的时刻!
到此,转换到复指数形式之后,傅里叶级数就看起来简单多了。
连续傅里叶变换
对于非周期函数(可视为周期为无穷的函数)
在周期函数中,
但是当
也就是说非周期函数仍然可以由一个常函数和无穷多个正弦函数和余弦函数叠加而成。但是这些正弦函数和余弦函数的角频率变得特别密集,充斥在整个实数轴上。
为了表示方便,我们用
于是,傅里叶变换的公式就诞生了。真是千呼万唤始出来呀!
令
则
傅里叶变换公式的含义
一个时域内的函数
傅里叶变换的逆变换公式的含义
对得到的无穷多个
离散傅里叶变换(DFT)
由于傅里叶变换经常用于信号的处理,将一个信号拆分成多个正弦信号的叠加。但是由于信号需要使用计算机处理,计算机只能处理离散的数据,所以需要将傅里叶变换离散化。
傅里叶变换中
令T表示采样周期,N表示采样次数。对于一个输入为N个点的离散序列
其离散傅里叶变换为:
逆变换为:
其中
具体证明比较复杂,此处不进行叙述。
快速傅里叶变换原理
快速傅里叶变换算法实现
递归
迭代
Ending