傅里叶变换小白教程:从“拆解音乐”到“解读世界”
1. 引言:复杂事物的“简单密码”
你有没有想过:
- 一首钢琴曲为什么能被拆解成“do、re、mi”等简单音符?
- 一幅油画为什么能通过“红、绿、蓝”三原色混合而成?
- 一段电流信号为什么能去掉噪声、保留有用信息?
答案藏在傅里叶变换里——它是一把“拆解复杂事物的钥匙”,能将任何满足条件的信号(声音、图像、电流等)分解为不同频率的正弦波/余弦波的叠加,帮我们从“时间的维度”跳转到“频率的维度”,看清事物的本质。
2. 背景溯源:从“热传导”到“傅里叶级数”
傅里叶变换的起源,要从19世纪法国数学家让-巴普蒂斯·约瑟夫·傅里叶(Jean-Baptiste Joseph Fourier)的研究说起。
1807年,傅里叶在解决热传导问题时发现:任何周期函数都可以分解为正弦波和余弦波的叠加。这一结论在当时引发了争议(拉格朗日等数学家认为“非光滑函数无法用光滑的正弦波叠加”),但傅里叶通过严格推导证明了其正确性。1822年,他在《热的解析理论》一书中系统提出傅里叶级数(Fourier Series),为后来的傅里叶变换奠定了基础。
20世纪后,随着通信、信号处理等领域的发展,傅里叶级数被扩展到非周期函数,形成了我们今天熟知的傅里叶变换(Fourier Transform)。
3. 核心思想:所有信号都是“正弦波的叠加”
傅里叶变换的核心可以用一句话概括:
任何满足条件的信号,都能分解为不同频率的正弦波(或复指数波)的线性叠加;反之,这些正弦波也能重构出原信号。
举个最直观的例子:我们听到的音乐是时域信号(随时间变化的空气振动),而音乐的“音调”对应频率(do=261.6Hz,re=293.7Hz,mi=329.6Hz……)。傅里叶变换做的事,就是把“时域的曲子”转换成“频域的乐谱”——告诉你:
- 每个频率的声音有多强(振幅谱);
- 每个频率的声音在什么时候出现(相位谱)。
4. 基础铺垫:理解傅里叶的“语言”
在正式学习傅里叶变换前,需要先掌握两个关键概念——周期函数和正交函数。
4.1 周期函数与角频率
如果一个函数满足f(t+T)=f(t)f(t + T) = f(t)f(t+T)=f(t)(TTT是常数,称为周期),则它是周期函数。例如:
- 正弦波sin(ω0t)sin(omega_0 t)sin(ω0t)的周期T=2πω0T = frac{2pi}{omega_0}T=ω02π;
- 其中ω0=2πTomega_0 = frac{2pi}{T}ω0=T2π称为角频率(单位:rad/s),对应“单位时间内的角度变化”;
- 频率f0=1T=ω02πf_0 = frac{1}{T} = frac{omega_0}{2pi}f0=T1=2πω0(单位:Hz,赫兹),表示“每秒振动的次数”。
4.2 正交函数:分解的“坐标系”
要分解一个函数,需要一组正交函数作为“基”——就像用x轴、y轴描述平面上的点。
两个函数g(t)g(t)g(t)和h(t)h(t)h(t)在区间[a,b][a, b][a,b]上正交,当且仅当:∫abg(t)h(t)dt=0(geqh)int_a^b g(t) h(t) dt = 0 quad (geq h)∫abg(t)h(t)dt=0(geqh)而当g=hg = hg=h时,积分结果是它们的“模长平方”(类似坐标系轴的长度)。
对于周期为TTT的函数,最常用的正交基是三角函数系:{1,cos(ω0t),sin(ω0t),cos(2ω0t),sin(2ω0t),… }{1, cos(omega_0 t), sin(omega_0 t), cos(2omega_0 t), sin(2omega_0 t), dots}{1,cos(ω0t),sin(ω0t),cos(2ω0t),sin(2ω0t),…}这个函数系在[−T/2,T/2][-T/2, T/2][−T/2,T/2]上满足正交性,比如:
- ∫−T/2T/2cos(mω0t)sin(nω0t)dt=0int_{-T/2}^{T/2} cos(momega_0 t) sin(nomega_0 t) dt = 0∫−T/2T/2cos(mω0t)sin(nω0t)dt=0(余弦与正弦正交);
- ∫−T/2T/2cos(mω0t)cos(nω0t)dt=0int_{-T/2}^{T/2} cos(momega_0 t) cos(nomega_0 t) dt = 0∫−T/2T/2cos(mω0t)cos(nω0t)dt=0(meqnm eq nmeqn时,余弦项之间正交)。
5. 傅里叶级数:周期信号的“拆解工具”
傅里叶级数是傅里叶变换的“前身”,用于处理周期信号(如方波、正弦波)。
5.1 三角形式:直观的“正弦波叠加”
对于周期为TTT、角频率为ω0=2πTomega_0 = frac{2pi}{T}ω0=T2π的函数f(t)f(t)f(t),若满足狄利克雷条件(后面会讲),则可以展开为:f(t)=a02+∑n=1∞[ancos(nω0t)+bnsin(nω0t)]f(t) = frac{a_0}{2} + sum_{n=1}^infty left[ a_n cos(nomega_0 t) + b_n sin(nomega_0 t) ight]f(t)=2a0+∑n=1∞[ancos(nω0t)+bnsin(nω0t)]其中:
- a02frac{a_0}{2}2a0:直流分量(常数项,对应频率0的成分);
- ancos(nω0t)a_n cos(nomega_0 t)ancos(nω0t):余弦谐波,bnsin(nω0t)b_n sin(nomega_0 t)bnsin(nω0t):正弦谐波;
- n=1,2,…n = 1, 2, dotsn=1,2,…:谐波次数——n=1n=1n=1是基波(频率与原函数相同),n>1n>1n>1是高次谐波(频率为基波的整数倍)。
5.2 系数计算:正交性的“魔法”
要得到a0,an,bna_0, a_n, b_na0,an,bn,需利用三角函数系的正交性——让其他项在积分时“消失”,只保留目标系数。
(1)计算直流分量a0a_0a0
将傅里叶级数两边在[−T/2,T/2][-T/2, T/2][−T/2,T/2]上积分:∫−T/2T/2f(t)dt=∫−T/2T/2a02dt+∑n=1∞[an∫−T/2T/2cos(nω0t)dt+bn∫−T/2T/2sin(nω0t)dt]int_{-T/2}^{T/2} f(t) dt = int_{-T/2}^{T/2} frac{a_0}{2} dt + sum_{n=1}^infty left[ a_n int_{-T/2}^{T/2} cos(nomega_0 t) dt + b_n int_{-T/2}^{T/2} sin(nomega_0 t) dt ight]∫−T/2T/2f(t)dt=∫−T/2T/22a0dt+∑n=1∞[an∫−T/2T/2cos(nω0t)dt+bn∫−T/2T/2sin(nω0t)dt]由于余弦和正弦在整周期内的积分是0,右边求和项全为0,因此:a0=2T∫−T/2T/2f(t)dta_0 = frac{2}{T} int_{-T/2}^{T/2} f(t) dta0=T2∫−T/2T/2f(t)dt
(2)计算余弦系数ana_nan
将傅里叶级数两边乘以cos(nω0t)cos(nomega_0 t)cos(nω0t)并积分:∫−T/2T/2f(t)cos(nω0t)dt=an⋅T2int_{-T/2}^{T/2} f(t) cos(nomega_0 t) dt = a_n cdot frac{T}{2}∫−T/2T/2f(t)cos(nω0t)dt=an⋅2T(其他项因正交性消失)因此:an=2T∫−T/2T/2f(t)cos(nω0t)dt(n≥1)a_n = frac{2}{T} int_{-T/2}^{T/2} f(t) cos(nomega_0 t) dt quad (n geq 1)an=T2∫−T/2T/2f(t)cos(nω0t)dt(n≥1)
(3)计算正弦系数bnb_nbn
类似地,乘以sin(nω0t)sin(nomega_0 t)sin(nω0t)并积分:bn=2T∫−T/2T/2f(t)sin(nω0t)dt(n≥1)b_n = frac{2}{T} int_{-T/2}^{T/2} f(t) sin(nomega_0 t) dt quad (n geq 1)bn=T2∫−T/2T/2f(t)sin(nω0t)dt(n≥1)
5.3 例子:方波的傅里叶级数分解
我们用周期方波验证傅里叶级数的效果。假设方波周期T=2T = 2T=2(ω0=πomega_0 = piω0=π),表达式为:f(t)={1∣t∣<0.500.5<∣t∣<1f(t) = egin{cases} 1 & |t| < 0.5 \ 0 & 0.5 < |t| < 1 end{cases}f(t)={10∣t∣<0.50.5<∣t∣<1
计算系数:
- a0=∫−11f(t)dt=1a_0 = int_{-1}^{1} f(t) dt = 1a0=∫−11f(t)dt=1(直流分量);
- an=∫−0.50.5cos(nπt)dt=2nπsin(nπ2)a_n = int_{-0.5}^{0.5} cos(npi t) dt = frac{2}{npi} sinleft( frac{npi}{2} ight)an=∫−0.50.5cos(nπt)dt=nπ2sin(2nπ)(偶数项为0,奇数项交替为±2nπpmfrac{2}{npi}±nπ2);
- bn=0b_n = 0bn=0(方波是偶函数,与奇函数sin(nω0t)sin(nomega_0 t)sin(nω0t)乘积的积分是0)。
因此,方波的傅里叶级数为:f(t)=12+2π(cos(πt)−13cos(3πt)+15cos(5πt)−⋯ )f(t) = frac{1}{2} + frac{2}{pi} left( cos(pi t) - frac{1}{3} cos(3pi t) + frac{1}{5} cos(5pi t) - cdots ight)f(t)=21+π2(cos(πt)−31cos(3πt)+51cos(5πt)−⋯)
当我们取前1项(基波)、前3项(基波+3次谐波)、前5项……时,级数的和会越来越接近原方波——这就是傅里叶级数的“逼近”效果!
5.4 复数形式:更简洁的数学表达
三角形式虽然直观,但计算繁琐。利用欧拉公式ejθ=cosθ+jsinθe^{j heta} = cos heta + jsin hetaejθ=cosθ+jsinθ(j=−1j = sqrt{-1}j=−1是虚数单位),可以将傅里叶级数转化为复数形式:$
f(t) = sum_{n=-infty}^infty c_n e^{j n omega_0 t}
$其中cnc_ncn是复数系数,表示第nnn次谐波的“复振幅”(包含振幅和相位信息)。
复数系数的计算公式为:cn=1T∫−T/2T/2f(t)e−jnω0tdt(n=0,±1,±2,… )c_n = frac{1}{T} int_{-T/2}^{T/2} f(t) e^{-j n omega_0 t} dt quad (n = 0, pm1, pm2, dots)cn=T1∫−T/2T/2f(t)e−jnω0tdt(n=0,±1,±2,…)
复数形式的优势:
- 统一了余弦和正弦项,用单一复指数函数表示;
- 为傅里叶变换的推导提供了自然过渡;
- 频域表示更对称(包含正、负频率,但负频率是数学共轭,物理意义与正频率一致)。
6. 傅里叶变换:从周期到非周期的“飞跃”
傅里叶级数处理的是周期信号,但现实中的信号大多是非周期的(如一次闪电、一段语音)。如何扩展到非周期信号?
6.1 核心思路:非周期=“周期无穷大”
非周期信号可以看作“周期无穷大的周期信号”——当周期T→∞T o inftyT→∞时,信号不再重复,变成非周期。
6.2 从离散到连续:傅里叶变换的推导
假设我们有一个非周期函数f(t)f(t)f(t),构造周期函数fT(t)f_T(t)fT(t)(∣t∣<T/2|t| < T/2∣t∣<T/2时fT(t)=f(t)f_T(t) = f(t)fT(t)=f(t),否则重复)。当T→∞T o inftyT→∞时:
- 频率离散→连续:角频率间隔Δω=ω0=2πT→0Deltaomega = omega_0 = frac{2pi}{T} o 0Δω=ω0=T2π→0,离散频率nω0nomega_0nω0变成连续频率ωomegaω;
- 系数缩放:复数系数cn=1TF(nω0)c_n = frac{1}{T} F(nomega_0)cn=T1F(nω0),其中F(nω0)=∫−∞∞f(t)e−jnω0tdtF(nomega_0) = int_{-infty}^infty f(t) e^{-j n omega_0 t} dtF(nω0)=∫−∞∞f(t)e−jnω0tdt(当T→∞T o inftyT→∞时,F(nω0)→F(ω)F(nomega_0) o F(omega)F(nω0)→F(ω),即傅里叶变换)。
6.3 傅里叶变换对:分解与重构
通过极限推导,最终得到傅里叶变换(正变换,时域→频域)和逆傅里叶变换(逆变换,频域→时域)的公式:
正变换(时域→频域)
F(ω)=F{f(t)}=∫−∞∞f(t)e−jωtdtF(omega) = mathcal{F}{f(t)} = int_{-infty}^infty f(t) e^{-jomega t} dtF(ω)=F{f(t)}=∫−∞∞f(t)e−jωtdt
- F(ω)F(omega)F(ω)称为f(t)f(t)f(t)的傅里叶变换(频域表示);
- e−jωte^{-jomega t}e−jωt是“基函数”(复指数波);
- 积分表示将f(t)f(t)f(t)投影到所有频率ωomegaω的基函数上,得到每个频率的“强度”。
逆变换(频域→时域)
f(t)=F−1{F(ω)}=12π∫−∞∞F(ω)ejωtdωf(t) = mathcal{F}^{-1}{F(omega)} = frac{1}{2pi} int_{-infty}^infty F(omega) e^{jomega t} domegaf(t)=
黄浦网站建设成都建设网站
飞牛云NAS的需求是不少人的刚需和爱好,也是如今不少老哥们正在折腾的玩意儿。奈何厂商和二手贩子们的吹嘘下和哄抬下,即使双盘位老古董机器也是无一不涨,价位水涨船
永州网站建设网站建设招标
还在为PowerShell脚本的部署和分发而烦恼吗?你是否曾经遇到过这样的困境:精心编写的自动化脚本在客户电脑上无法运行,或者需要复杂的PowerShell环
陕西网站建设六安网站建设
第一章:Open-AutoGLM多因素认证集成概述Open-AutoGLM 是一个面向自动化场景的通用语言模型集成框架,支持在高安全要求的应用环境中实现多因素认证ÿ
网站建设设计泉州网站建设
目录已开发项目效果实现截图开发技术系统开发工具:核心代码参考示例1.建立用户稀疏矩阵,用于用户相似度计算【相似度矩阵】2.计算目标用户与其他用户的相似度系统测试总结源码文档
南宁网站建设成都网站建设
PyQt 图形与富文本处理全解析1. 基于项目的图形处理在图形处理中,图形视图类是处理大量单个项目绘制、用户交互以及动画的理想选择。以下是其主要特点和使用方法:-图形视图类的优势:适用于绘制从几十个到
海南网站建设南通网站建设
在B端产品设计中,表格是展示结构化数据的核心组件,承担着高效呈现信息、辅助用户决策的关键作用。面对大量数据,优秀的表格设计能提升可读性和操作效率,
网站建设工作室佛山 网站建设
快速体验打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容:开发一个一键式环境配置工具,功能包括:1. 自动
无锡网站建设住房城乡建设部网站
Excalidraw 自定义主题:让协作工具真正属于你的品牌在一场跨时区的产品评审会上,团队成员打开同一个白板链接,映入眼帘的不是千篇一律的浅灰界面ÿ
宁波市网站建设网站建设有限公司
快速体验打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容:构建一个淘宝镜像系统,分别用传统方法和AI工具实现相同功能。传
黄冈网站建设滨州网站建设
一、项目背景与需求某机械加工产线需通过西门子S7-1200PLC实现对工业打标卡的自动化控制,完成零部件序列号、批次码的激光打标。打标卡仅支持ModbusTCP协议,而产线