这份是本人的学习笔记,课程为网易公开课上的斯坦福大学公开课:傅里叶变换及其应用。
这节课目的
如何用像sin,cos这些简单的函数来表示复杂周期函数。
信号周期化
并不是所有现象都是周期性的,而且即使是周期性的现象(时间周期性),最终都会终结。而sin,cos这些数学函数是无始无终的,那么我们该怎么做?
我们采用了一种叫信号周期化的方法:
设有如下信号(左)

我们可以把它无限复制,这样就成了一个周期信号,然后研究我们感兴趣的部分(单一周期内的信号)。
由于有了信号周期化这种做法,我们的傅里叶研究将相当广泛。
设定周期
为了方便我们后面的学习,在此设定周期为1,后面的学习会遵循该设定,即
f(t+1)=f(t)
因此信号模型为sin(2πt)与cos(2πt)。
结论
首先引出结论,周期为1的信号,可以由sin(2πt)或cos(2πt)组成
一个周期,多个频率
举个例子
下图分别为sin(2πt),sin(4πt),sin(6πt)的图形

sin(2πt)的周期是1,频率是1。
sin(4πt)的周期是1/2,频率是2,但是1也可以是它的周期。
sin(6πt)的周期是1/3,频率是3,但是1也可以是它的周期。
把他们组合起来(相加)得到sin(2πt)+sin(4πt)+sin(6πt),图形如下

这个复杂的图形的周期还是1,它是由周期为1,频率不同的sin函数组成的。
上面的例子只是不同频率的组合,我们还可以改变他们的振幅,相位。这表明我们通过sin已经可以组成非常多的信号
n∑k=1Aksin(2πkt+φk)
注:k=1的项被称为基波(fundamental wave),k>1的项被称为谐波(harmonic)
公式推导
对sin进行分解
sin(2πkt+φk)=sin(2πkt)cosφk+cos(2πkt)sinφk
因此有
n∑k=1Aksin(2πkt+φk)=n∑k=1Aksin(2πkt)cosφk+cos(2πkt)sinφk=n∑k=1(akcos(2πkt)+bksin(2πkt))
ak,bk与相位φk和振幅Ak有关。
另外,我们还可以添加一个常量来表示其中不变的部分:
a02+n∑k=1(akcos(2πkt)+bksin(2πkt))
该常量a02被称为直流分量(DC component)。
复指数式
上面的式子还可以推导成复指数的方式
有如下欧拉公式:
e2πikt=cos(2πkt)+isin(2πkt),i=√−1
cos(2πkt)=e2πikt+e−2πikt2
sin(2πkt)=e2πikt−e−2πikt2i
通过欧拉公式对上述式子进行展开,得
akcos(2πkt)+bksin(2πkt)=ake2πikt+ake−2πikt2+bke2πikt−bke−2πikt2i=ake2πikt+ake−2πikt2+−bkie2πikt+bkie−2πikt2=ak−bki2e2πikt+ak+bki2e−2πikt
分成ak−bki2e2πikt与ak+bki2e−2πikt两部分。按照我们前面的推论,k作为调整频率的系数,是一个正整数,现在如果我们把复指数上的符号移动到k上,k就称为了覆盖正负的整数,那么上面的式子就变成
akcos(2πkt)+bksin(2πkt)=ak−bki2e2πikt+ak+bki2e−2πiktk>0=ak−bki2e2πiktk>0+a−k+b−ki2e2πiktk<0
把ak−bki2和a−k+b−ki2取出来用Ck表示,则有,
Ck={ak−bki2 , k>0a−k+b−ki2 , k<0
即Ck为复数且满足以下条件,
C−k=¯Ck
有了上述条件,式子可以写成
n∑k=1(akcos(2πkt)+bksin(2πkt))=n∑k=−nCke2πikt
上述推导引出一个结论:对于一个真实的信号(值为实数),当它转换为上述复数形式时,它的系数对称存在,即有k必然会有−k,且Ck与C−k共轭。反过来,如果系数满足上述条件,那么此信号也是真实信号。
通用性
我们已经从sin的组合推导到了复指数之和的形式。那么说回来,这种三角函数的组合形式是否可以用到更大的范围?它是否适用于一般周期函数?
下面,我们假设这个推断是成立的,三角函数之和适用于一般周期函数,则有,
f(t)=n∑k=−nCke2πikt
取出该多项式其中的一项Cme2πimt,−n⩽m⩽n,
Cme2πimt=f(t)−n∑k≠mCke2πikt
等号两边同时乘以e−2πimt,得
Cm=e−2πimtf(t)−n∑k≠mCke−2πimte2πikt =e−2πimtf(t)−n∑k≠mCke2πi(k−m)t
对等号两边同时积分
∫10Cmdt=Cm
∫10(e−2πimtf(t)−n∑k≠mCke2πi(k−m)t)dt=∫10e−2πimtf(t)dt−n∑k≠mCk∫10e2πi(k−m)tdt=∫10e−2πimtf(t)dt−n∑k≠mCk12πi(k−m)e2πi(k−m)t∣∣∣10=∫10e−2πimtf(t)dt−n∑k≠mCk12πi(k−m)(e2π(k−m)t−e0)=∫10e−2πimtf(t)dt−n∑k≠mCk12πi(k−m)(cos2π(k−m)+isin2π(k−m)−1)spread with Euler Formular=∫10e−2πimtf(t)dt−n∑k≠mCk12πi(k−m)(1+0−1)k and m is interger=∫10e−2πimtf(t)dt
即,
Cm=∫10e−2πimtf(t)dt
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 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 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架