负频率与卷积:从欧拉公式到FFT的深度解析
2026/9/9 19:35:14 网站建设 项目流程

学《信号与系统》的时候,大多数人第一次被劝退,不是倒在拉普拉斯变换,而是倒在一个看起来特别别扭的问题上:傅里叶变换公式里那个 e^(-jωt),负号是从哪儿冒出来的?更让人崩溃的是,等到学卷积那一章,又冒出来一个说法——卷积要用负频率来算。频率还能是负的?负频率是什么意思?为什么老老实实用正频率不行?

我当年在这个问题上卡了将近一周。教材讲得云里雾里,老师上课一句“这就是数学上的方便”带过,但那会儿心里始终不踏实:一个物理上“不存在”的频率,凭什么在卷积里成了主角?后来自己想通了一个关键点:所有的困惑,根源都在于没有真正把欧拉公式吃透。一旦你用欧拉公式去看待负频率,再看傅里叶变换和卷积,整条逻辑链会瞬间变得非常顺。这篇东西就是把我踩过的坑和理清后的思路完整写下来,适合正在学信号与系统、被负频率和卷积绕晕的同学,也适合工作中偶尔要和频谱打交道的工程师温习一下。

1. 负频率不是“负的速度”,而是“反向旋转”

1.1 欧拉公式先把正弦波拆成两个旋转矢量

先说最基础的东西。欧拉公式长这样:

e^(jωt) = cos(ωt) + j·sin(ωt)

这个公式在信号与系统里的地位,相当于九九乘法表在小学数学里的地位。它告诉你一件事:一个复数指数,在复平面上画出来,是一个长度固定为1的矢量,随着时间t不断旋转。ω是正的,矢量就逆时针转;ω是负的,矢量就顺时针转。旋转速度的大小相同,但方向正好反过来。

这就是负频率的本质:它不是什么“负的速度”,而是反方向的旋转。你可以想象风扇正转和反转,转速都是每分钟200转,但风吹出来的方向完全不一样。正弦波本身看不出这种方向差异——你在示波器上看到的cos(ωt),只是旋转矢量投影到实轴上的影子,一维的上下摆动,根本看不出旋转方向。但一旦你从复平面的角度看,正面和反面就是两个完全不同的状态。

很多人学到这里还是会问:那为什么一个实数信号,非要拆成复数才能理解?因为实数信号是“信息残缺”的。它只有一个实轴上的波形,丢失了旋转方向这个维度。想恢复这个方向信息,最简单的办法就是把它表示成两个相反方向旋转的复指数之和。三角函数正是这么干的:

cos(ωt) = (e^(jωt) + e^(-jωt)) / 2

sin(ωt) = (e^(jωt) - e^(-jωt)) / (2j)

1.2 实信号的频谱为什么天生就是双份

上面那两个式子一定要亲手推导一遍,别看一眼就过去。cos(ωt)用欧拉公式展开,e^(jωt)项和e^(-jωt)项的实部相加,虚部刚好抵消,最后只剩一个实数余弦波。这个结果往深了想,意义非常重大:一个实数信号,天生就是由一对正、负频率的旋转分量叠加出来的。它的频谱里必然同时存在正频率和负频率,两边各带一半的信息。

这就解释了为什么做傅里叶变换时,如果你输入的是实信号,频谱图上总是左右对称的,而且满足X(-ω) = X*(ω),意思是负频率处的幅度和正频率处一样,相位正好取反。这不是巧合,是欧拉公式的必然结果。更直白地说:负频率不是被人为凑出来做对称装饰的,而是实信号在复数世界里存在的必要条件。

我把cos(ωt)的频谱画出来给你们对照一下:在频率轴上,它在ω = +ω0处有一个冲激,幅度是1/2;在ω = -ω0处也有一个冲激,幅度也是1/2。有人就会问:为什么不是一个冲激幅度1?因为一个单独的冲激对应的是复指数e^(jω0t),那是只有一个旋转方向的“纯复数信号”。而cos(ωt)是实信号,它包含两个旋转方向,所以必须有两个冲激,每个只出一半力气。理解了这个,你就明白为什么双边谱里负频率那半边不是废物,它和正频率各扛一半。

2. 傅里叶变换里的负号,其实是“投影”的方向

2.1 变换公式为什么用 e^(-jωt),而不是 e^(jωt)

傅里叶变换的公式长这样:

X(ω) = ∫ x(t) · e^(-jωt) dt

我当年学的时候,第一反应就是:为什么基函数是e^(-jωt)?信号里面明明可能含有正的e^(jωt)分量啊,为什么不用它做“探针”去匹配?后来想明白一个类比,瞬间就通了:求一个向量在某个基方向上的坐标分量,你需要把向量和这个基方向做内积。内积的时候,要对其中一个向量取复共轭。这是内积的定义,目的是让结果变成一个非负的模长度量。

对于函数空间来说,傅里叶变换本质上就是在做内积:把信号x(t)投影到频率为ω的基函数上,看它在这个分量上占多少。既然是投影,就必须取共轭。e^(jωt)的共轭是什么?就是e^(-jωt)。所以公式里的负号,不是“谁反着跑”的物理含义,而是数学上做投影这个动作时,符号自然倒过来。

这时候再把欧拉公式搬出来看:e^(-jωt) = cos(ωt) - j·sin(ωt),它在复平面上是顺时针旋转的。也就是说,傅里叶变换拿着一个顺时针旋转的探针,去和信号里每个可能的旋转方向匹配。信号里有逆时针旋转的分量,探针却用顺时针转去“照”它,两者一乘,相位被互相抵消,积分才能稳定地“锁”住这个分量。假如你非要用e^(jωt)去做变换,那得到的结果其实是X(-ω),你会把信号的正负频率彻底搞反。

2.2 频谱图上那半边的负频率到底装了什么信息

理解投影方向之后,再看频谱图:横轴从负到正,零频在中间。很多教材画双边谱,正频和负频的幅度图长得一模一样,于是初学者很容易产生“负频率冗余”的错觉。但相位谱告诉你不是这么回事。正频率和负频率处的相位是相反数,两份相位信息合在一起,才完整描述了信号的时域波形。

我给大家一个直观例子:如果信号只有正频率分量,没有负频率分量,那它在时域里一定是复信号,而且是那种“在复平面上画圈”的波形。反过来,一个纯实数信号,你把它频谱的负半轴直接清零,再逆变换回去,得到的绝对不是一个实数波形,而是一个解析信号。解析信号在通信原理和希尔伯特变换里是有大用场的,但它不是你原始的那个信号。这个点后面讲卷积实操的时候还会再碰到,记住这个结论:负频率装的是信号的一半信息,扔了它,时域信号就变性了。

3. 卷积的“翻转”,才是负频率登场的真正入口

3.1 卷积定义里的 t-τ 藏着一次时间反演

现在终于到了标题里说的“卷积”。卷积的定义大家都会背:

y(t) = ∫ f(τ) · h(t-τ) dτ

注意这个h(t-τ)。它的自变量里带了个负号。这意味着一件事:在计算卷积的每一步,h函数都是先在时间轴上反着放,再往右平移t。这个“反着放”的操作,信号与系统里叫翻转(folding),它在时间域里做的是时间反演。

时间反演在频域对应什么性质?这是傅里叶变换的经典性质之一:如果x(t)的频谱是X(ω),那么x(-t)的频谱是X(-ω)。也就是说,时域里把波形沿纵轴翻个面,频域里就是把整个频谱沿零频翻个面,正频率和负频率互换。所以,卷积里的那一次翻转,就是把h(t)的所有频率分量方向都换了个边。你以为是随便翻翻,其实是把h的正频率变成了负频率,把负频率变成了正频率,然后再去和f做逐点匹配。

这个视角能解释一个特别常见的初学困惑:为什么卷积是两个函数“滑动相乘再积分”,而不是直接“对齐相乘再积分”?因为一个信号通过线性时不变系统的过程,输出时刻t的值是输入信号在过去所有时刻的贡献叠加,而系统的冲激响应h(t-τ),恰恰就是“从过去时刻τ到现在时刻t的加权记忆”。如果你不把h翻转过来,你处理的是“未来记忆”,物理上不成立。这个翻转操作放在频域,就等价于频率取反,负频率在这里是躲不开的。

3.2 卷积定理的推导:负指数是怎么被吸收掉的

教材上讲卷积定理,一般直接给结论:时域卷积对应于频域相乘。很多同学背下来了,但不知道这个结论是怎么来的。其实推导过程很短,而且负频率就藏在这个过程中。我完整写一遍:

假设y(t) = f(t) * h(t),对y(t)做傅里叶变换:

Y(ω) = ∫ [∫ f(τ) h(t-τ) dτ] e^(-jωt) dt

这里有了负指数e^(-jωt)。关键步骤是变量代换,令u = t - τ,于是dt = du,而且t = u + τ。代入后就变成:

Y(ω) = ∫∫ f(τ) h(u) e^(-jω(u+τ)) dτ du

把指数拆开:e^(-jω(u+τ)) = e^(-jωu) · e^(-jωτ)。这样双重积分就可以分离成两个独立积分的乘积:

Y(ω) = [∫ f(τ) e^(-jωτ) dτ] · [∫ h(u) e^(-jωu) du] = F(ω) · H(ω)

看到没有,原来那个e^(-jωt)里的负号,通过代换被拆成了两份,刚好分别匹配到f和h的傅里叶变换公式里。整个过程里,我们自始至终用的是“同一个ω”,也就是同一个频率点上的乘积。

这个推导最值得品味的地方是:时域卷积看起来是两个信号沿着时间轴方向相反地滑动、交叉相乘;变换到频域后,它变成了同一个频率点上F和H的复数相乘。两个不同频率的信号分量之间没有任何交叉项。这意味着线性时不变系统不会让两个不同频率之间发生能量交换。所以从频域的角度看卷积,“负频率”这三个字的真正含义是:你在Y(ω)这条频率轴上的每一个点,无论它是正还是负,都要老老实实地把F(ω)和H(ω)在那个点的值乘起来。负频率不是你做卷积时额外调用的工具,而是这条频率轴上天然存在的一半坐标。

3.3 频域相乘,正负频率都在参与,缺一不可

把卷积定理落实到实际信号上,画面是这样的:输入信号f(t)是一个实信号,它的频谱同时有正半轴和负半轴;系统h(t)也是一个实信号,它的频率响应H(ω)同样在正半轴和负半轴都有值,而且满足共轭对称。卷积的结果在频域里就是F(ω)H(ω),这个乘积同样在正负两侧都有值,也正是因为这个,逆变换回来才是实数信号。

如果你在频域做乘法的时候,只保留正频率部分,把负频率部分置零,那么频域乘积的共轭对称性就被破坏了,逆变换回来的一定是复数信号。用一个最简单的例子:输入是一个cos(ω0t),理想的低通滤波器允许它通过。卷积后输出应该还是cos(ω0t)。但如果你的滤波器只在正频率处响应为1,负频率处为0,那输出就是0.5·e^(jω0t),这就不是一个实数正弦波了。这就是很多人用软件做滤波器时,波形越滤越“怪”的原因之一。负频率参与的缺失,会让时域信号的性质彻底改变。

4. 匹配滤波与相关运算:共轭就是负频率的工程写法

4.1 相关和卷积的关系,就差一个翻转

说完了卷积定理,还要聊一个和卷积长得极像的操作:相关运算。互相关的定义是:

r(τ) = ∫ f(t) · g(t-τ) dt

如果你把g(t-τ)看成g[-(τ-t)],你会发现,这个式子和“f(t)与g(-t)做卷积”是一回事。换句话说,相关运算 = 其中一个信号先做时间翻转,再做卷积。前面我们说过,时域翻转对应频域的频率取反,即g(-t)的频谱是G(-ω)。如果g(t)是实信号,G(-ω) = G*(ω),所以相关的频域表达式里会出现“共轭”。

这个结论可以解释信号处理里一个非常实用的现象:为什么做匹配滤波和做相关运算,本质上是一家人?因为匹配滤波的冲激响应,就取的是模板信号的时间翻转;而相关运算的数学形式里,也天然带着翻转。两者在频域里都表现为“乘以频谱的共轭”。“共轭”这个动作,实际上就是把负频率信息浓缩成了一个数学符号。工程师平时看公式里出现星号,很少会去联想负频率,但追根溯源,它就是负频率在起作用。

4.2 匹配滤波器为什么要“倒着来”

匹配滤波器是通信和雷达里最经典的设计:在加性白噪声背景下,想要让某个时刻的输出信噪比最大,最优的线性滤波器冲激响应,是发射信号s(t)的时间翻转:

h(t) = s(T - t)

一个系统为什么要做成“倒着走”的?时域解释是:这样信号到达某个时刻时,滤波器的每一段延迟都与信号形成同相对齐,能量一下子集中成一个尖峰。频域解释则是:S(T-t)的频谱是S*(ω)e^(-jωT),共轭让滤波器在每个频率处的相位正好抵消信号的相位,使得所有频率分量在输出时刻同相叠加。这里的“相位抵消”,就是拿着信号的负频率信息去反向修正。如果你不理解负频率和共轭的关系,就很难理解为什么匹配滤波器能自动“把信号的能量对齐”。

4.3 实战案例:脉冲到达时间为什么要用相关而不是卷积

我举个例子,测一个回波脉冲的到达时间。已知模板s(t),接收信号r(t) = s(t - t0) + 噪声。目标是把t0估计出来。最常见的做法是把r(t)和模板s(t)做互相关,找峰值的位置。互相关在实现上可以先做FFT再乘共轭再IFFT,速度非常快。

但如果你图省事,把相关做成了普通卷积,直接用s(t)去和r(t)卷积,你会发现峰值位置正好偏了一个模板长度。原因很简单:卷积里面那个翻转,让你实际上匹配的是s(-t),而不是s(t)。虽然对于中心对称的模板(比如高斯脉冲)结果差不多,但遇到不对称波形就全乱了。这就是翻转方向、也就是负频率方向没理清楚导致的典型工程事故。很多人写过相关运算的代码,峰值位置却总是差一截,排查半天发现是卷积和相关没分清,根子就在这里。

5. 用FFT做卷积时,负频率处理错会直接翻车

5.1 快速卷积流程与FFT的频率分布

工程上做大点数卷积,很少真的去算那个积分,都是走FFT:时域卷积 → 频域相乘 → 逆变换回来。标准流程是:

  1. 把两个序列补零到相同长度,长度一般取不小于两个序列长度之和减一,避免循环卷积混叠
  2. 对两个序列分别做FFT,得到F(k)和H(k)
  3. 频域逐点相乘,得到Y(k) = F(k) · H(k)
  4. 对Y(k)做IFFT,取实部(理论上应该全是实数)得到卷积结果

这里有一个初学者特别容易忽略的细节:FFT输出的k,频率顺序并不是从负到正排列的。对于长度为N的FFT,k=0是直流,k=1到N/2-1是正频率,k=N/2是奈奎斯特频率,k=N/2+1到N-1对应的其实是负频率。如果你要在频域做滤波,比如做带通、低通,就必须明白哪些点是正频率,哪些点是负频率,并且确保你的操作保持共轭对称性。否则你在第3步乘出来的Y(k)会破坏对称结构,第4步的IFFT结果就会出现明显的虚部,输出完全不是你想要的波形。

5.2 把负频率清零后,IFFT回来是什么结果

这个坑我实际踩过。之前用FFT实现一个匹配滤波器,图省事,构造频域滤波器时只在正频率部分填了模板频谱,负频率部分直接写了0。代码跑完,IFFT出来一串复数,波形和理论值差了十万八千里。排查了半天才发现,问题就出在“负频率清零”这个动作上。

你在频域把负半轴清零,等于构造了一个解析信号滤波器。这个滤波器的冲激响应本身是复数的,所以它和实信号卷积的结果当然也是复信号。严格来说,这在某些场景(比如单边带调制、希尔伯特变换)里是有意为之的操作,但不是你想要的那个“实信号通过实系统”的卷积。所以,凡是处理实信号、实滤波器,频域操作必须保持共轭对称:正频率怎么改,负频率就怎么共轭对称地改。这是FFT做卷积时负频率存在感最强的一个场景。

6. 经典疑问速查:负频率与卷积 FAQ

把上面这些内容整理成一张速查表,平时复习或者面试前扫一眼,非常管用。

常见疑问一句话回答
频率还能是负的吗?可以,它代表复数旋转矢量的方向,不是负的转速
实信号的频谱为什么必须对称?因为实信号可拆成一对共轭复指数,正负频率各带一半能量
傅里叶变换公式里为什么是e^(-jωt)?因为变换本质是投影/内积,取共轭才能正确提取对应频率分量
卷积为什么要翻转信号?翻转在频域等价于频率取反,是卷积物理意义(线性时不变系统加权叠加)的必然要求
卷积定理里的乘积是跨频率的吗?不是,输入信号和系统在同一个频率点上的值相乘,不同频率之间没有交叉
卷积中负频率在哪儿起作用?频谱相乘时负半轴那些点也在参与,丢掉它们会破坏实信号性质
相关运算和卷积的差别是什么?差一个翻转,频域上表现为乘共轭,共轭就是负频率的工程写法
FFT做卷积时负频率怎么处理?必须保持共轭对称,否则IFFT结果是复数,不是实数卷积

这里多聊一句“不同频率之间没有交叉”这件事。很多学卷积的人会有一个错觉:卷积是两个信号在时域里“片子对片子”地叠,会不会导致频率混着跑?不会。卷积定理告诉我们,线性时不变系统不会产生新频率。这个概念在通信和信号处理里极其重要:一个系统如果不满足线性时不变性,比如加入非线性器件,输出频谱里才会出现新的频率分量,那就是另一个故事了。而在线性系统里,每个频率都是各算各的,正频率的输入只影响正频率的输出,负频率的输入只影响负频率的输出,两边互不串门。

拉普拉斯变换那一章,其实也是同样的思路。拉普拉斯变换的公式里也有个负号,它在复频域里的解释和傅里叶变换的负频率如出一辙,都是为了做投影、做收敛域分析。现在回头看,如果在傅里叶变换这一章就把负频率理解透了,后面学拉普拉斯变换的收敛域、零极点图,会轻松很多。

最后再分享一个我个人用了很多年的小技巧:每当你被负频率、卷积翻转、共轭这些概念绕晕的时候,别盯着公式发愁,画个旋转矢量图。在纸上画一个单位圆,标一个顺时针旋转的箭头代表e^(-jωt),再画一个逆时针旋转的箭头代表e^(jωt)。然后把cos(ωt)想象成这两个箭头在实轴上的投影叠加。所有关于负频率的疑问,用这张图对照一遍,基本都能迎刃而解。我当时就是靠这个办法,把那道卡了一周的坎迈过去的。信号的复数世界,本质上就是旋转的世界,方向对了,一切都对了。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询