资讯动态

帕塞瓦尔定理证明详解:从时域能量到频域能量的守恒与工程应用

发布时间:2026/10/4 4:20:55 来源:尧图企业网站定制
先聊一个现象很多人第一次见到帕塞瓦尔定理(Parseval‘s theorem)是在信号处理课本里的“能量守恒”小节扫一眼公式觉得就是换个写法等到自己真正做频谱分析、验证滤波器输出能量、或者写论文要引用这个定理时才发现两边单位对不对、系数该放哪、连续和离散版本差了个因子全是一笔糊涂账。我最早接触这定理是在复变函数课后来做信号处理项目又反复用到它老实说直到自己完整推了两遍证明才敢说真正理解了它到底在“守恒”什么、什么时候能用、什么时候不能乱用。这篇文章我打算把帕塞瓦尔定理从头到尾证明一遍不讲玄学就按实操的思路来先明确定理在说什么再把证明的每一步拆开解释每一步为什么要这么做中间穿插我自己在验证数值实验时踩过的坑。无论你是学数学、学通信、学自动化的还是纯粹想搞懂“时域能量等于频域能量”这句话怎么来的这篇文章应该都能给你一个清晰的答案。1. 帕塞瓦尔定理到底在说什么1.1 从“一个信号的能量”说起我们常说一个信号 x(t) 的能量是 ∫|x(t)|² dt这在物理上对应电压信号在单位电阻上的耗能数学上就是函数的 L² 范数平方。问题在于信号从时域转到频域之后能量应该怎么算直觉上傅里叶变换只是把同一个信号的表示形式换了能量不应该凭空消失或增加。帕塞瓦尔定理说的正是这件事时域里算出来的能量和频域里对幅度谱平方积分算出来的能量严格相等。用连续时间傅里叶变换来写最常见的形式是∫_{-∞}^{∞} |x(t)|² dt (1/2π) ∫_{-∞}^{∞} |X(ω)|² dω其中 X(ω) ∫_{-∞}^{∞} x(t) e^{-iωt} dt 是 x(t) 的傅里叶变换。这里我最想强调的一点系数 1/2π 不是随便加的它完全由傅里叶变换定义里的归一化方式决定。你换一种定义方式系数就变了甚至可能消失。后文我会专门把这个“系数陷阱”讲透。1.2 工程领域的常见表述在信号处理课里老师一般会把 |X(ω)|² 称为能量谱密度ESD, Energy Spectral Density表示单位角频率上分布了多少能量。帕塞瓦尔定理的工程含义是信号的总能量等于能量谱密度在整个频率轴上的积分。这句话没什么问题但要注意这里的“能量”是数学能量不是功率。如果你处理的是周期信号、随机信号这类无限能量信号应该用功率谱密度和功率而不是能量很多人在这里搞混。我当年做实验时就犯过这个错用 MATLAB 对一个正弦波做 FFT然后试图用帕塞瓦尔定理对账时域能量结果发现两边差了好几倍。原因就是正弦波是功率信号不是能量信号直接套连续非周期版本的帕塞瓦尔定理当然对不上。所以读定理之前先确认你的信号属于哪一类是能量有限信号还是功率有限但能量无限的信号。1.3 数学版本傅里叶级数的帕塞瓦尔等式帕塞瓦尔定理最早其实不是给傅里叶变换用的而是给傅里叶级数用的。1799 年法国数学家 Marc-Antoine Parseval 证明了一个关于三角级数系数的等式如果一个周期为 T 的函数 f(t) 可以展开成傅里叶级数那么在一个周期内函数的“平均能量”等于所有傅里叶系数模平方之和。写成公式就是(1/T) ∫_{0}^{T} |f(t)|² dt Σ_{n-∞}^{∞} |c_n|²其中 c_n 是傅里叶系数。注意这里左边多了个 1/T这是“平均功率”的形式。这个等式说明一个周期信号在时域一个周期内的平方均值等于它的各次谐波幅度平方的总和。这也是为什么我们在做谐波分析时可以用来检查 FFT 计算出的谐波幅度是否可靠。1.4 定理背后的本质正交分解的不变性帕塞瓦尔定理之所以成立本质上是傅里叶级数/变换背后的正交归一基在起作用。复指数函数族 {e^{iωt}} 或者离散情况下的 {e^{i2πkn/N}}构成一个正交基。把信号分解到这个正交基上时“勾股定理”依然成立一个向量的模长平方等于它在各个正交分量上投影的模长平方之和。你可以把它类比成三维空间里的向量不管你怎么旋转坐标系向量的长度不变。傅里叶变换就是一种特殊的“旋转”把时间轴上的表示换成了频率轴上的表示信号的总长度范数当然就不变。这个视角我在后文的内积证明里还会再展开它也是理解 Plancherel 定理帕塞瓦尔定理在 L² 空间上的推广的关键。2. 证明前必须搞清楚的三件事2.1 傅里叶变换的定义有“流派”这是所有系数纠纷的根源。工程数学里常见的傅里叶变换定义有两类常用定义一角频率非对称 X(ω) ∫_{-∞}^{∞} x(t) e^{-iωt} dt x(t) (1/2π) ∫_{-∞}^{∞} X(ω) e^{iωt} dω这种定义下正变换不带系数逆变换带 1/2π帕塞瓦尔等式右边就需要带 1/2π。常用定义二频率对称 X(f) ∫_{-∞}^{∞} x(t) e^{-i2πft} dt x(t) ∫_{-∞}^{∞} X(f) e^{i2πft} df这种定义把 2π 融进频率变量正逆变换都不带系数对应的帕塞瓦尔等式是 ∫_{-∞}^{∞} |x(t)|² dt ∫_{-∞}^{∞} |X(f)|² df两个形式都对但你不能混用。很多教材定理部分用定义二例题计算时又偷偷切回定义一结果学生怎么算都对不上。我在下面所有证明中统一采用定义一角频率、正变换不带系数因为这是信号处理教材的主流约定。2.2 积分换序的合法性不是每次都能随便换帕塞瓦尔证明里最核心的一步是把对 t 的积分和对 ω 的积分交换顺序。这个操作在数学上不是无条件的需要用 Fubini 定理做保证。实际应用中绝大多数工程信号不会让你翻车因为如果你要求 x(t) 平方可积即能量有限且 x(t) 本身绝对可积那么 |x(t) X*(ω) e^{-iωt}| 在整个 R×R 上的二重积分收敛Fubini 定理的条件满足交换顺序是合法的。遇到那些不是绝对可积、但平方可积的信号比如 sinc 函数严格处理时通常先对 Schwartz 函数类证明定理成立再借助泛函分析里的稠密性延拓到整个 L² 空间。这个延拓过程是 Plancherel 定理的证明思路实际工程计算中很少手推但你应该知道有这么回事免得被数学系的朋友追问时答不上来。2.3 共轭和模平方的处理技巧证明过程会大量出现 x*(t)、X*(ω) 这样的共轭符号。核心技巧是|x(t)|² x(t)·x*(t)|X(ω)|² X(ω)·X*(ω)。然后利用傅里叶变换的性质如果 X(ω) 是 x(t) 的傅里叶变换那么 X*(ω) 对应的是 x*(-t) 的傅里叶变换或者更直接地在积分表达式里把 x*(t) 用逆变换的共轭来表示。另一个常用技巧是对实数信号X(-ω) X*(ω)所以能量谱 |X(ω)|² 是偶函数积分时经常可以只算正半轴再乘 2。这些细节不复杂但确实会影响你在实际解密算中的对账结果。3. 核心证明连续时间傅里叶变换版本3.1 证明的总体思路连续版本的证明可以概括为三个步骤把时域能量表达式里的一个因子用傅里叶逆变换展开。交换积分顺序把对时间 t 的积分变成对频率 ω 的积分。认出内层积分是频域函数 X(ω) 的共轭相关形式最终化简为 |X(ω)|² 的积分。整个过程不需要任何高深技巧就是把定义代进去然后“用定义认出自己”。下面我们一步步来。3.2 第一步写出时域能量代入逆变换设 x(t) 与 X(ω) 构成傅里叶变换对采用定义一X(ω) ∫_{-∞}^{∞} x(t) e^{-iωt} dt x(t) (1/2π) ∫_{-∞}^{∞} X(ω) e^{iωt} dω我们要证明∫_{-∞}^{∞} |x(t)|² dt (1/2π) ∫_{-∞}^{∞} |X(ω)|² dω从左边出发∫_{-∞}^{∞} |x(t)|² dt ∫_{-∞}^{∞} x(t) · x*(t) dt把 x*(t) 展开。注意共轭运算的规则逆变换公式取共轭后e^{iωt} 变成 e^{-iωt}X(ω) 变成 X*(ω)x*(t) (1/2π) ∫_{-∞}^{∞} X*(ω) e^{-iωt} dω于是∫_{-∞}^{∞} |x(t)|² dt ∫_{-∞}^{∞} x(t) · (1/2π) ∫_{-∞}^{∞} X*(ω) e^{-iωt} dω dt如果不加说明就把两个积分交换这就是很多人证明“翻车”的地方。严格做法是确认积分绝对收敛这里我们假设 x(t) 属于 Schwartz 类或者 x(t) 绝对可积且平方可积那么交换顺序没有问题。3.3 第二步交换积分顺序分离出变换交换积分顺序后把与 t 无关的 X*(ω) 和常数系数提出内层积分(1/2π) ∫_{-∞}^{∞} X*(ω) [ ∫_{-∞}^{∞} x(t) e^{-iωt} dt ] dω注意看中括号里的积分这正是傅里叶正变换的定义∫_{-∞}^{∞} x(t) e^{-iωt} dt X(ω)也就是说我们根本没有“计算”这个积分只是认出它就是 X(ω) 本人。这一步非常爽之前花力气把 x*(t) 展开成逆变换就是为了在这个位置把对 t 的积分转成 X(ω)。这里也是整个证明的“题眼”——你要主动去认定义而不是试图真正算出某个复杂的积分。3.4 第三步化简为模平方积分把内层积分替换为 X(ω) 后原式 (1/2π) ∫_{-∞}^{∞} X*(ω) · X(ω) dω (1/2π) ∫_{-∞}^{∞} |X(ω)|² dω右边正是我们要的形式。证明完成。整个过程只有五六行但每一步背后都是定义和条件的仔细核对。让我把这个推导完整写一遍方便你以后直接对照∫_{-∞}^{∞} |x(t)|² dt ∫_{-∞}^{∞} x(t) x*(t) dt ∫_{-∞}^{∞} x(t) [ (1/2π) ∫_{-∞}^{∞} X*(ω) e^{-iωt} dω ] dt (1/2π) ∫_{-∞}^{∞} X*(ω) [ ∫_{-∞}^{∞} x(t) e^{-iωt} dt ] dω (1/2π) ∫_{-∞}^{∞} X*(ω) X(ω) dω (1/2π) ∫_{-∞}^{∞} |X(ω)|² dω3.5 补充用卷积定理的另类证明还有一种证法用的是卷积定理和冲激函数的傅里叶变换关系。考虑信号的自相关函数R(τ) ∫_{-∞}^{∞} x(t) x*(t - τ) dt由维纳-辛钦定理R(τ) 的傅里叶变换是 |X(ω)|²。那么令 τ 0 时R(0) ∫|x(t)|² dt。另一方面根据傅里叶逆变换R(0) (1/2π) ∫_{-∞}^{∞} |X(ω)|² e^{iω·0} dω (1/2π) ∫_{-∞}^{∞} |X(ω)|² dω这就直接得到帕塞瓦尔定理。这个角度特别适合信号处理的人理解因为它把“能量”和“自相关”联系起来了后面分析随机信号功率谱时还会用到同样的关系。不过如果纯从证明严谨性看第一种证法更基础、更自包含不需要额外引入卷积和自相关的性质。4. 两个重要的补充证明傅里叶级数与离散序列4.1 周期信号的傅里叶级数版本现在来看周期信号。设 f(t) 以 T 为周期可以展开为f(t) Σ_{n-∞}^{∞} c_n e^{i n ω_0 t}, ω_0 2π/T傅里叶系数为c_n (1/T) ∫_{-T/2}^{T/2} f(t) e^{-i n ω_0 t} dt证明帕塞瓦尔定理的级数版本思路和连续版本几乎一样但计算更简单因为复指数族在 [0, T] 上的正交性可以直接用∫_{0}^{T} e^{i m ω_0 t} e^{-i n ω_0 t} dt T·δ_{mn}其中 δ_{mn} 是克罗内克δ函数当 m≠n 时为 0mn 时为 1。现在计算一个周期内的平均能量(1/T) ∫_{0}^{T} |f(t)|² dt (1/T) ∫_{0}^{T} [ Σ_m c_m e^{i m ω_0 t} ] [ Σ_n c_n e^{i n ω_0 t} ]* dt (1/T) Σ_m Σ_n c_m c_n* ∫_{0}^{T} e^{i(m-n) ω_0 t} dt由于正交性只有 mn 的项不为零积分值为 T。所以(1/T) ∫_{0}^{T} |f(t)|² dt (1/T) Σ_n c_n c_n* · T Σ_n |c_n|²证明完毕。这个证明比连续版本更直观因为不需要交换积分顺序只用了正交基的性质。你可以看到这里“平均能量等于谐波幅度平方和”的结果非常干净因此也是频谱分析里判断 FFT 幅度是否正确的常用基准。4.2 离散序列的帕塞瓦尔定理实际做信号处理时我们处理的是采样后的离散序列。设 x[n] 是长度为 N 的有限长序列其 DFT 为X[k] Σ_{n0}^{N-1} x[n] e^{-i 2πkn/N}对应的帕塞瓦尔定理是Σ_{n0}^{N-1} |x[n]|² (1/N) Σ_{k0}^{N-1} |X[k]|²证明同样利用复指数序列的正交性Σ_{n0}^{N-1} e^{-i 2π(m-k)n/N} N·δ_{mk}展开左边Σ_n |x[n]|² Σ_n x[n] x*[n] Σ_n x[n] [ (1/N) Σ_k X*[k] e^{i 2πkn/N} ] 这里用了 IDFT 的共轭 (1/N) Σ_k X*[k] Σ_n x[n] e^{-i 2πkn/N} (1/N) Σ_k X*[k] X[k] (1/N) Σ_k |X[k]|²这个公式是编程验证时最常用的版本。我强烈建议但凡你用 FFT 做过频谱分析遇到任何“能量对不上”的问题先跑一次这个恒等式把时域序列的能量算出来再对频域幅度谱的平方求和除以 N。如果两边相等说明你的 FFT 和归一化配置是自洽的如果不相等问题一定出在定义或归一化上。4.3 内积空间的视角Bessel 不等式到等式前面这些证明表面上是不同的数学分支但本质是同一个故事在一个内积空间里若 {φ_n} 是完备正交基则对任意向量 x有||x||² Σ_n |⟨x, φ_n⟩|²这就是“完备正交基下的勾股定理”。如果不要求完备只有正交归一那只能得到 Bessel 不等式||x||² ≥ Σ_n |⟨x, φ_n⟩|²帕塞瓦尔等式成立等价于说傅里叶基是“完备”的——不存在一个非零函数与所有基函数都正交。这个视角让我印象很深之前零零散散学的帕塞瓦尔定理、瑞利能量定理、Plancherel 定理全都归到了“内积空间的完备正交分解”这一个框架下。如果你用这个观点回头理解连续版本的证明就很简单x(t) 在复指数“基”上的“投影”就是 X(ω)广义上的投影而“模长平方等于各投影模长平方之和”就是帕塞瓦尔。4.4 三个版本的关联与记忆为了方便对比我把三个版本的帕塞瓦尔定理放在一起信号类型帕塞瓦尔等式形式适用场景连续非周期(1/2π)∫|X(ω)|² dω ∫|x(t)|² dt理论推导、模拟信号分析连续周期(1/T)∫|f(t)|² dt Σ|c_n|²谐波分析、周期信号功率离散有限长(1/N)Σ|X[k]|² Σ|x[n]|²FFT 数值对账、数字滤波记忆口诀所有版本都是“一个域的平方和 另一个域的平方和”系数只取决于变换定义的归一化方式。级数版本左边除以 TDFT 版本右边除以 N都是因为离散或周期的正交基的归一化常数。记住这一点你就能根据自己使用的变换定义快速写出对应的帕塞瓦尔形式而不是死记公式。5. 完整实例从时域算一遍从频域再算一遍5.1 矩形脉冲的时域能量理论讲完必须来点实的。取一个幅度为 A、宽度为 T 的矩形脉冲x(t) A, |t| ≤ T/2 x(t) 0, |t| T/2这是非常经典的信号常用于雷达和通信系统的脉冲分析。时域直接计算E_time ∫_{-∞}^{∞} |x(t)|² dt ∫_{-T/2}^{T/2} A² dt A² · T没什么悬念结果就是 A²T。现在我们要从频域算看能不能对得上。5.2 矩形脉冲的频域能量先求傅里叶变换X(ω) ∫_{-T/2}^{T/2} A e^{-iωt} dt A · [ (e^{iωT/2} - e^{-iωT/2}) / (iω) ] A · 2 sin(ωT/2) / ω于是能量谱密度为|X(ω)|² 4A² sin²(ωT/2) / ω²频域能量按定义一带 1/2πE_freq (1/2π) ∫_{-∞}^{∞} |X(ω)|² dω (1/2π) ∫_{-∞}^{∞} 4A² sin²(ωT/2) / ω² dω (2A²/π) ∫_{-∞}^{∞} sin²(ωT/2) / ω² dω这里需要用到著名的积分公式∫_{-∞}^{∞} sin²(aω) / ω² dω πa令 a T/2则E_freq (2A²/π) · π · (T/2) A²T两边完全相等。你可以自己动手验证先用 MATLAB 生成一个矩形脉冲直接用 sum(x.^2)*dt 算时域能量再用 fft 变换后按频域公式累加能量记得补上 dt 或 fs 的换算因子以及 1/N 的因子结果应该一致。不过 FFT 的采样间隔和补零问题会引入细微差异建议脉冲尽量给足采样点补零太多会把频谱过密化但对能量影响不大主要影响频谱形状的显示。5.3 对账后得到的两个实用启发第一频域计算并不比时域“高级”只是一个等价视角。但它的价值在于当你只知道系统的频率响应而不知道输入波形具体细节时帕塞瓦尔定理允许你直接用 |X(ω)|² 来评估能量而不需要先精确重构时域波形。第二在滤波器设计中帕塞瓦尔定理可以用来验证滤波器是否“无源无损”。比如一个理想低通滤波器通带内所有频率分量能量原样通过阻带内完全吸收那么输出总能量和输入总能量之间会有明确的差值这个差值就是滤波器消耗或反射掉的能量。我见过一些同学在仿真 FIR 滤波器时发现输出能量比输入能量还大第一反应是滤波器有问题其实是 FFT 归一化没做对导致帕塞瓦尔对账对不上。6. 实操中的常见错误与排查技巧6.1 系数放错位置1/2π 还是 1/N最常见的问题就是系数。连续版本用角频率 ω 时如果正变换不带系数帕塞瓦尔右边必须带 1/2π如果改用频率 f 且正逆变换都不带系数帕塞瓦尔右边不用带任何系数。DFT 版本则是右边带 1/N。如果你用的是 MATLAB 的 fft默认 X[k] Σ x[n] e^{-i2πkn/N}那么对应帕塞瓦尔是 Σ|x[n]|² (1/N)Σ|X[k]|²。很多人在 MATLAB 里直接写 sum(abs(x).^2) 和 sum(abs(X).^2) 对账发现前者只有后者的 1/N这就是忘了除以 N。我把这个整理成一个速查表变换定义帕塞瓦尔形式X(ω)∫x(t)e^{-iωt}dt∫|x(t)|²dt (1/2π)∫|X(ω)|²dωX(f)∫x(t)e^{-i2πft}dt∫|x(t)|²dt ∫|X(f)|²dfDFT: X[k]Σx[n]e^{-i2πkn/N}Σ|x[n]|² (1/N)Σ|X[k]|²归一化 DFT: X[k]N^{-1/2}Σx[n]e^{-i2πkn/N}Σ|x[n]|² Σ|X[k]|²最后一行那种对称归一化 DFT 在数学和某些音频处理库中也会出现二分之一范数平衡能量形式最漂亮但没有 1/N 也容易让人误以为所有 DFT 都这样。判断方法很简单看逆变换前面有没有系数、系数是多少逆变换系数决定了帕塞瓦尔系数。6.2 把连续和离散版本混用有人对采样后的序列直接用连续版本的公式在积分里放 dt又把 FFT 结果当连续频谱用。这里的核心坑是FFT 得到的离散频谱 X[k] 和连续频谱 X(ω) 之间差一个采样周期 Ts 的因子严格关系是 X[k] ≈ (1/Ts) X(ω_k)取决于定义有的教材是 X[k] ≈ X(ω_k)/Ts有的则是 X(ω_k) ≈ Ts X[k]。如果不做这个换算直接套连续帕塞瓦尔公式能量就会差 Ts² 倍的量级。我的习惯做法是凡是用 FFT 做数值验证一律把信号和时间间隔 dt 显式写出来时域能量用 sum(abs(x).^2)dt频域能量用 sum(abs(X).^2)(1/(N*dt)) 或者用频率响应逐点累加。这样连续和离散的桥梁就搭起来了不容易犯单位错误。6.3 忽略信号能量有限的条件帕塞瓦尔定理要求信号能量有限也就是平方可积。如果你拿一个常数信号、阶跃信号、正弦波去对账肯定对不上因为它们的能量是无穷大。严格说常数信号和阶跃信号的傅里叶变换里含有冲激函数冲激的“平方”怎么定义本身就是问题这时应该转向功率谱密度和功率的概念。如果确实需要分析这类信号要用周期信号的帕塞瓦尔平均功率版本或者广义函数框架才能得到有意义的等式。这一点在信号与系统课程里经常被轻轻带过但实际做仿真时很容易踩雷。6.4 用“功率”而不是“能量”去验证周期信号对周期信号正确的帕塞瓦尔是平均功率形式(1/T)∫|f(t)|²dt Σ|c_n|²。意思是左边是信号的均方值平均功率右边是所有谐波幅度的平方和。如果你把一个正弦波 A sin(ω_0 t) 的幅度谱在 ω_0 处的幅度记为 A/2因为频谱有正负两根谱线那么(1/T)∫|A sin(ω_0 t)|² dt A²/2右边两根谱线的幅度平方和 (A/2)² (A/2)² A²/2两边相等。很多初学FFT的同学以为频谱峰值就应该等于时域幅度 A实际上单边谱的峰值才是 A双边谱的谱线是 A/2用错就会导致能量差两倍。帕塞瓦尔定理最大的价值之一就是帮你发现这种“幅度域”和“能量域”的换算错误。6.5 我的对账验证习惯最后分享一个我自己调试带通滤波器时反复用到的流程算是多年踩坑换来的经验拿到一个时域序列先计算总能量 E_time sum(|x[n]|²)如果需要物理单位再乘以采样间隔。做 FFT 得到 X[k]计算 E_freq sum(|X[k]|²)/N。对比 E_time 和 E_freq。如果相对误差超过 1e-10说明归一化没搞对或者数据里有 NaN。如果之后对信号做了滤波、加窗、补零等操作每做一步都重新对账一次。涉及多个采样率或重采样时额外检查采样间隔 dt 是否随重采样更新。这个方法帮我排查过不少疑难 bug有一次是窗函数系数写错有一次是 FFT 后忘了把负频率部分的共轭对称性考虑进去有一次是滤波器的群延迟导致边界效应吞噬了部分能量。帕塞瓦尔定理就像一杆秤随时可以拿来称一称你的处理过程有没有“偷走”能量。结尾一点个人体会关于帕塞瓦尔定理的证明我最想说的是它不是一道需要背诵的公式题而是一个反复出现的“守恒律”。从傅里叶级数到傅里叶变换、到离散傅里叶变换甚至到量子力学里波函数的归一化本质都是同一个思想——完备正交分解不改变范数。把这个思想内化之后你看到任何形如“某个变换保持范数”的定理第一反应应该是去检查这个变换用了什么归一化定义而不是死记硬背系数。如果你正准备面试或者考试建议把第 3 节的连续版本证明自己默写三遍直到不用看笔记也能自然地写出“认出 X(ω)”那一步为止。如果你是在做工程仿真建议今天就用帕塞瓦尔定理对你最近一版 FFT 代码做一次对账说不定能发现一个藏了很久的系数问题。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑