希尔伯特变换模拟器 返回
信号处理模拟器

希尔伯特变换与解析信号 — 包络线检测

对AM信号应用基于DFT的希尔伯特变换,从解析信号中提取瞬时幅度、瞬时相位、瞬时频率。通过改变载波频率或调制指数,直观学习包络线检测与解调的原理。

参数设置
载波频率 f_c
Hz
调制频率 f_m
Hz
调制指数 m
采样数 N

采样频率 F_s = 1000 Hz 固定。每帧用 FFT 计算希尔伯特变换,实时展示信号滚动时包络线如何追踪 AM 调制。拖动滑块即时生效。

暂停时,拖动滑块即可即时更新结果。

计算结果
载波频率 f_c
调制频率 f_m
包络线峰值幅度 |z|max
瞬时频率 f_i
原信号、包络线、瞬时相位与瞬时频率

上段:原信号 x[n](蓝色)和瞬时幅度 ±A[n](红色,包络线)/下段:瞬时相位 φ[n](绿色,展开后)和瞬时频率 f_i[n](黄色,右轴)

理论与主要公式

希尔伯特变换是将实信号扩展为解析信号(复信号)的线性变换。在DFT领域,只需将正频率成分加倍、负频率成分设为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 度」的操作。比如说,余弦变成了正弦。把它和原信号组合在一起,就得到「解析信号」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实现在数学上是精确的解析信号,但在端点容易出现不连续(Gibbs现象),不适合实时处理。FIR滤波器实现用有限长的希尔伯特变换器(奇数抽头、奇对称系数)来近似,延时低,可以流式处理,在DSP和数字无线中广泛使用。本工具为教育用途采用DFT实现,并从统计中排除两端各10%来避免端点伪影。
atan2 只能返回 -π 到 π 的主值,所以相位会周期性地跳变。瞬时频率是相位的时间导数,跳变点会产生巨大的尖刺。「展开」是指当相邻采样间的差分超过 ±π 时,加上或减去 ∓2π 来使其连续。这样处理后才能正确计算瞬时频率。本工具下段图表的相位已经展开,绿线看起来像一条向右上升的直线。
采样频率 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 时耗时约多16倍。实际应用中都用FFT,这样计算是O(N log N),这是标准做法。

实际应用

AM广播与无线通信解调:基于希尔伯特变换的解析信号是AM解调、单边带(SSB)调制、FM解调的基础。特别是SSB只发送一边的频率成分,这样通信带宽能减半,在长距离业余无线电中被广泛使用。数字无线接收机的I/Q解调本质上就是内置希尔伯特变换器的复信号处理。

机械振动诊断(包络分析):旋转机械的轴承缺陷或齿轮啮合不良会在高频共振带上叠加低频重复冲击,形成AM信号。用带通滤波器提取共振带,然后用希尔伯特变换计算包络线,再进行FFT,缺陷重复频率(BPFO、BPFI、BSF等)就会显示为峰值。这在发电厂、钢铁厂、新干线车辆等所有机械设备的现场都是标准做法。

地震波、脑波、心电图分析:地震波群速度分析、脑波α波β波的瞬时幅度追踪、心电图QRS波形的包络线检测等,都广泛使用希尔伯特变换。Hilbert-Huang变换结合经验模式分解(EMD),是分解非线性非平稳信号的强大工具。

图像处理·光学计测:二维扩展的希尔伯特变换(Riesz变换)用于相位移位干涉测量、条纹分析、单基因信号处理,能从一张条纹图像提取相位分布。在半导体检测、精密工程干涉仪测量、医学图像特征提取等各种应用中都有。

常见误解与注意事项

最常见的误解是「希尔伯特变换是在频域切割什么东西的滤波器」。实际上它在全频率范围的振幅特性都是1(全通),只改变相位(-π/2移位)。本工具的实现中,正频率加倍、负频率设为0然后逆DFT的操作是「构造解析信号」,而希尔伯特变换本身相当于正负符号反转的相位移动。正确的理解方式是「不改变信号,而是计算隐藏的虚部」。

其次常见的是误认为瞬时幅度、瞬时相位、瞬时频率「总是有物理意义」。这些量只在信号主要由单个窄带分量组成时(满足Bedrosian定理条件)才有意义。宽带噪声或多个载波混合的信号直接用希尔伯特变换会导致瞬时频率出现负值或剧烈振荡,没有物理解释。实际应用中必须事先进行带通滤波或通过经验模式分解进行频带分离。

最后要注意DFT实现有端点伪影。DFT假设信号周期性重复,如果信号首尾不衔接,两端会产生相位的大跳变,导致瞬时幅度和瞬时频率在数十个采样点都不可信。本工具在统计计算中只用中间80%的数据,排除两端各10%。实际应用要么用窗函数(Hann等),要么用FIR希尔伯特变换器,要么对信号两端进行渐变处理等。

使用指南

  1. 设置载波频率 Fc(例如:1000 Hz)和消息频率 Fm(例如:50 Hz),生成AM信号。
  2. 指定调制深度 m(0~1,例如:0.8),选择输入信号长度 N(例如:4096样本)。
  3. 通过希尔伯特变换(用FFT-逆FFT实现)计算解析信号 z(n) = x(n) + j·H[x(n)]。
  4. 提取瞬时幅度 A(n) = |z(n)|、瞬时相位 φ(n) = arg(z(n))、瞬时频率 f_inst(n) = (1/2π)·dφ/dt。
  5. 计算统计量:⟨A⟩为时间平均,RMS为根均方,中位数为瞬时频率的50百分位数。

具体计算示例

载波频率 Fc=200 Hz、调制频率 Fm=10 Hz、调制指数 m=0.6、样本数 N=1024(采样率固定 Fs=1000 Hz)情况下:AM信号 x(n)=(1+0.6·cos(2π·10·t))·cos(2π·200·t) 经DFT处理后,希尔伯特变换构成解析信号。得到的瞬时幅度时间平均 ⟨A⟩≈1.0、RMS≈√(1+0.6²/2)≈1.083、瞬时频率中位数≈200 Hz、实测调制深度 m_est≈0.6。

实际操作注意事项

  1. 希尔伯特变换在频域中将负频率分量置为0,因此事先应去除DC偏移(信号中心化)。
  2. 瞬时频率的微分计算对数值误差敏感,应保证采样速率不低于截止频率 Fc 的30倍,并用移动平均滤波器(窗宽5~11样本)平滑处理。
  3. 调制深度 m>1 的过调制状态会导致包络线检测失败,瞬时幅度统计失效,应在 m≤0.95 范围内运行。
  4. 信号长度 N 至少要是载波周期的100倍以上(此处 N≥800),否则会出现频率分辨率下降和频谱泄漏。