Python科学计算——检包络与去包络

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python科学计算——检包络与去包络相关的知识,希望对你有一定的参考价值。

参考技术A

检波 (detection):广义的检波通常称为 解调 ,是调制的逆过程,即从已调波提取调制信号的过程。狭义的检波是指从调幅波的包络提取调制信号的过程,这种检波方法也被称为 包络检波 希尔伯特变换 可以用作包络检波。

Hilbert 变换能在振幅保持不变的情况下将输入信号的相角偏移 90 度,简单地说就是能够将正弦波形转换为余弦波形:

相角偏移90度相当于复数平面上的点与虚数单位 1j 相乘,因此 Hilbert 变换的频率响应可以用如下公式表示:

Hilbert 变换可以用作 包络检波 。具体算法如下:

用频率扫描波可以测量滤波器的频率响应,也可以用它检测 Hilbert 变换用于包络检波的性能:

从上图可以看出,在高频和低频处包络计算出现较大的误差,而中频部分能很好地计算出包络的形状。

在 Hilbert 变换检测出包络的基础上,可以利用简单的去包络算法将包络从原始信号中去除而恢复载波信息,去包络算法用公式表示如下:

从上面的图可以看出,包络已经被很好的去掉,但是从时域图像,并不能完全确定包络被很好的去掉,我们需要从去包络前后信号的频率响应一探究竟:

从去包络前后信号的频率响应图可以看出,包络已经被很好的抑制,只剩下了单频载波信号。

从上述去包络前信号的频率响应图可以看出,其上下边带的幅度是相等的,当上下边带信号幅度不对等时,去包络算法效果会如何呢?

当边带信号幅度不对等时,包络的抑制效果就会变差,而且还会引入新的频率成份,这将会在一定程度上恶化信号。

信号处理:一般音频“节拍”检测

尝试确定音频信号中每个“节拍”的开始时间和持续时间(如下图所示)。我想这是一个简单的问题,python或Matlab应该有工具箱/函数来做到这一点,但是找不到它们。我尝试过低通滤波和频率分析,但都没有奏效。

sample audio signal

答案

您可以尝试计算数据的RMS包络,如here所述。然后,您可以通过跟踪包络的幅度来检测节拍:例如,当包络幅度超过用户定义的阈值(例如0.005)时,您可以“计数”节拍。

我还建议在Signal Processing Stack Exchange上发布这个问题。

以上是关于Python科学计算——检包络与去包络的主要内容,如果未能解决你的问题,请参考以下文章

信号处理-基于希尔伯特解调(包络谱)的轴承故障诊断实战,通过python代码实现超详细讲解

如何用数据包络分析(DEA)进行效率评估?

故障诊断分析基于matlab FFT轴承故障诊断(包络谱)含Matlab源码 2002期

Python-绘制曲线的包络线

滚动轴承特征频率计算推导过程

关于DEA(数据包络分析)问题的请教。DEA里面涉及的投入、产出指标,这些指标有啥要求吗?