的一个基本假设hilbert
是输入信号是周期性的。如果您将信号扩展为周期性的,那么在 t=1 时,从长而平的尾部到信号初始突发的重复将会有很大的跳跃。
处理此问题的一种方法是应用于hilbert
信号的偶数扩展,例如将信号与自身的反向副本串联,例如np.concatenate((signal[::-1], signal))
. 这是执行此操作的脚本的修改版本:
import numpy as np
from scipy.signal import hilbert
import matplotlib.pyplot as plt
A = 2
lamb = 20
w = 2*np.pi*100
fs = 8000
T = 1.0
t = np.arange(int(fs*T)) / fs
signal = A**(-lamb*t)*(np.sin(w*t+5)+np.cos(w*t+5))
# Make an even extension of `signal`.
signal2 = np.concatenate((signal[::-1], signal))
analytic_signal2 = hilbert(signal2)
# Get the amplitude of the second half of analytic_signal2
amplitude_envelope = np.abs(analytic_signal2[len(t):])
plt.plot(t, signal, label='signal')
plt.plot(t, amplitude_envelope, label='envelope')
plt.xlabel('t')
plt.legend(framealpha=1, shadow=True)
plt.grid()
plt.show()
这是脚本创建的情节: