参数设置
采样频率 F_s = 1000 Hz 固定。直接 DFT 的复杂度为 O(N²),N 较大时可能需要数秒。
原信号、包络、瞬时相位与频率
上:原信号 x[n](蓝)与瞬时幅值 ±A[n](红,包络)。下:瞬时相位 φ[n](绿,已 unwrap)与瞬时频率 f_i[n](黄,右轴)。
理论与主要公式
希尔伯特变换是把实信号扩展为解析(复)信号的线性变换。在 DFT 域中,将正频率分量乘 2、负频率分量置 0 后再做逆 DFT 即可实现。
由原信号及其希尔伯特变换组成的解析信号 z(t):
$$z(t) = x(t) + j\,\mathcal{H}[x](t)$$
瞬时幅值 A(t)(包络)与瞬时相位 φ(t):
$$A(t) = |z(t)| = \sqrt{x(t)^2 + \mathcal{H}[x](t)^2}, \qquad \phi(t) = \arg z(t)$$
瞬时频率 f_i(t) 是瞬时相位对时间的导数:
$$f_i(t) = \frac{1}{2\pi}\frac{d\phi(t)}{dt}$$
对 AM 信号 x(t) = (1 + m·cos(2π f_m t))·cos(2π f_c t) 应用上述公式,可直接得到包络 A(t) = 1 + m·cos(2π f_m t),瞬时频率等于载波频率 f_c。
希尔伯特变换模拟器是什么
🙋
「希尔伯特变换」这个名字我听说过,但它到底在做什么?跟傅里叶变换有什么区别呢?
🎓
大致来说,希尔伯特变换就是「把信号的每个频率分量在相位上移动 -90 度」的运算,比如 cos 变成 sin。把它和原信号组合起来,得到解析信号 z(t) = x(t) + j·H[x](t)——这是一个复信号,能让信号处理变得非常灵活。在上面的模拟器中,把「调制指数 m」设为 0.5 看看图:蓝色原信号的上下,红色包络紧紧贴着对吗?那条红线就是 |z(t)|。
🙋
啊,真的耶。原信号扭来扭去的「外形」被红色抽出来了。这个能用在哪里?
🎓
最直观的例子是 AM 收音机的解调。AM 信号是「音频波形 × 高频载波」,你要的是音频,也就是包络。老式收音机用二极管做半波整流再用低通滤波器去除棱角,而希尔伯特变换可以从数学上精确地提取包络。可以把它想成「测量波形外形」的万能工具。
🙋
下图的黄线「瞬时频率」一直在 100 Hz 附近,是因为载波频率 f_c = 100 Hz 吗?
🎓
正是。把解析信号的相位 φ(t) 对时间求导,就得到「此刻的频率」。AM 信号本身不改变载波频率,所以瞬时频率被固定在 f_c。把「载波频率」滑块拨到 200 Hz 试试,黄线应该会平移到 200 Hz 附近。
🙋
那如果是 FM 那种频率会变的信号,黄线就会跟着波动了?
🎓
没错,这就是 FM 解调的原理。FM 把音频信息载在瞬时频率上,对 φ(t) 求导即可恢复音频。数字无线接收机的 I/Q 解调电路本质上就是用希尔伯特变换构造解析信号的复信号处理。机械振动诊断里也极为重要——把轴承异常冲击作为包络提取的「包络分析」已经是现场标准方法。
常见问题
A(t) = 1 + m·cos(2π f_m t) 的时间平均为 1,而其均方根(RMS)为 √(1 + m²/2)。当 m = 0.5 时为 √1.125 ≈ 1.061。线性平均与 RMS 之差表征信号功率,AM 广播发射机设计中正是把这套计算用作「载波功率」与「平均总功率」的区分。
DFT 实现返回数学上精确的解析信号,但端点处容易出现不连续(吉布斯现象),不适合实时处理。FIR 滤波器实现用有限长希尔伯特变换器(奇数抽头、反对称系数)来近似,延迟低、可流式处理,因此在 DSP 与数字无线中常用。本工具采用 DFT 实现以便教学,并在统计计算时排除两端各 10% 以避免端点伪影。
atan2 只返回 -π 到 π 的主值,所以相位会周期性跳变。瞬时频率是相位对时间的导数,每次跳变都会出现巨大尖峰。解卷绕在相邻样本差超过 ±π 时加 ∓2π 使相位连续,然后再做差分就能得到正确的瞬时频率。下方图中绿色相位线已经 unwrap,因此接近一条向右上方延伸的直线。
F_s = 1000 Hz 固定时,N = 256 对应 0.256 秒窗口,N = 1024 对应 1.024 秒。窗口短时,调制频率 f_m = 10 Hz 的周期(0.1 秒)只能装下 2~3 个周期,调幅深度的估计精度会下降。计算速度反而更快。直接 DFT 的复杂度是 O(N²),N = 2048 时大约比 1024 慢 16 倍。实际中通常使用 O(N log N) 的 FFT。
实际应用
AM 广播与无线解调:基于希尔伯特变换的解析信号是 AM 解调、SSB(单边带)调制与 FM 解调的共同基础。SSB 由于只传输一侧频谱,能把通信带宽减半,在远距离业余无线中被广泛使用。数字无线接收机的 I/Q 解调本质上是一种内含希尔伯特变换器的复信号处理。
机械振动诊断(包络分析):旋转机械的轴承缺陷与齿轮啮合不良通常表现为「高频共振带上叠加低频周期冲击」的 AM 信号。先用带通滤波取出共振带,再用希尔伯特变换计算包络,然后对包络做 FFT,故障重复频率(BPFO, BPFI, BSF 等)就会作为峰值显现。从电厂、钢铁厂到新干线车辆,几乎所有处理旋转机械的现场都把它作为标准方法。
地震波、脑电与心电分析:希尔伯特变换在地震波群速度分析、脑电 α / β 波瞬时幅值跟踪、心电 QRS 波形的包络检测等非平稳生理与地球物理信号中也广泛使用。与经验模态分解(EMD)结合的希尔伯特-黄变换,是把非线性非平稳信号分解为本征模函数的强大方法。
图像处理与光学计量:二维扩展(Riesz 变换)应用于相移干涉测量、条纹分析与单基因(monogenic)信号处理,可以从单幅条纹图像中提取相位分布。半导体检测、精密干涉测量、医学影像特征提取等领域都有广泛应用。
常见误区与注意事项
最常见的误解是把「希尔伯特变换」当成「在频域里切除某些分量的滤波器」。实际上它的幅频响应在所有频率都为 1(全通),改变的只有相位(移 -π/2)。本工具实现中「把正频率乘 2、把负频率置 0、再做逆 DFT」是构造「解析信号」的操作;希尔伯特变换本身相当于让正负频率符号反转的相位移位。正确的直觉是「计算信号隐藏的虚部」,而不是「修改信号」。
其次常见的错误是把瞬时幅值、瞬时相位、瞬时频率当成「永远具有物理意义」的量。它们只有在信号大致为单一窄带成分(即满足 Bedrosian 定理条件)时才有意义。对宽带噪声或多个载波混合的信号直接施加希尔伯特变换,瞬时频率会出现负值或剧烈振荡,失去物理可解释性。实际应用必须先用带通滤波或经验模态分解进行频带分离。
最后请注意DFT 实现存在端点伪影。DFT 假设信号周期性重复,因此除非首末样本平滑衔接,否则两端相位会大幅跳变,导致两端数十个样本的瞬时幅值和瞬时频率都不可靠。本工具在统计计算时仅使用中央 80%、丢弃两端各 10%。实际中需要施加窗函数(如 Hann)、使用 FIR 希尔伯特变换器或对信号两端进行渐缩处理。