使用希尔伯特变换的包络检测

信息处理 matlab 希尔伯特变换 余弦 信封
2022-02-23 03:37:59

我有一个频率为 1kHz 的正弦波,采样率为 16kHz。我需要在 MATLAB 中使用希尔伯特变换找到这个信号的包络。我使用了内置函数 abs(hilbert(input_signal)) 并得到了预期的结果。现在,当我将输入信号更改为两个频率为 1kHz 和 2.7kHz 的正弦波相加,然后使用希尔伯特变换方法找到包络时,我得到的结果如附件所示。那是正确的信封吗 在此处输入图像描述 在此处输入图像描述

1个回答

需要明确的是,MATLAB 中的希尔伯特变换实际上并不返回希尔伯特变换,而是返回给出的解析信号:

xa(t)=x(t)+jx^(t)

虚部在哪里x^(t)这实际上是希尔伯特变换x(t). 无论如何,分析信号的大小会给我们提供 OP 正确执行的包络。

添加两个相等幅度的正弦波与双边带抑制载波 (DSB-SC) AM 调制的结果相似,该调制波位于两个正弦波中间的频率上的单个正弦波载波,调制速率将是一半两个正弦波之间的距离(作为调制信号正弦波)。由于三角关系,我们通过将载波正弦乘以调制正弦来实现 DSB-SC AM 调制:

2cos(α)cos(β)=cos(α+β)+cos(αβ)

我们在上面的第一种形式中看到如果我们指定cos(β)成为一个“载波频率”cos(α)正弦调制载波的幅度。

在这种情况下,频率为 1 KHz 和 2.7 KHz,载波将位于(1+2.7)/2=1.85KHz 和调制将在2.71.85=0.85KHz,我们得到结果:

cos(2π1000t)+cos(2π2700t)=2cos(2π850t)cos(2π1700t)

因子 2 是任意比例,但作为调制载波幅度的包络应该是 850 Hz 正弦波的幅度。我无法读取 OP 图中的时间轴,但它具有如图所示的整流正弦曲线的一般形状。


具体展示了 Hilmar 和 Jazzmaniac 在评论中的建议,希尔伯特变换和分析信号对于宽带信号的包络提取来说是一个糟糕的选择。

下面是一段马友友演奏巴赫的片段,解析信号的幅度为橙色包络。紧随其后的是使用有损峰值检测器对包络的相同提取。

哟哟希尔伯特

哟哟有损峰