我正在Scipy中尝试使用希尔伯特变换计算信号的包络。下面是代码,
import numpy as np
from scipy.signal import hilbert
A=2
lamb=20
w=2*np.pi*100
signal = A**(-lamb*t)*(np.sin(w*t+5)+np.cos(w*t+5))
analytic_signal = hilbert(signal)
amplitude_envelope = np.abs(analytic_signal)
如果一个人绘制信号和包络,后者显示相当高的值都在开始和结束...见附图。任何提示如何解决这个问题,并获得一个更好的包络?
提前感谢。
1条答案
按热度按时间dwthyt8l1#
hilbert
的一个基本假设是输入信号是 * 周期性的 *。如果将信号扩展为周期性的,那么在t=1时,将有一个从长而平坦的尾部到信号初始突发的重复的大跳跃。处理这个问题的一种方法是将
hilbert
应用于信号的偶数扩展,例如将信号与其自身的反向副本串联,例如np.concatenate((signal[::-1], signal))
。下面是执行此操作的脚本的修改版本:以下是脚本创建的情节: