Python/scipy之希尔伯特变换hilbert

Python/scipy之希尔伯特变换hilbert

Python/scipy之希尔伯特变换hilbert_第1张图片
具体来源可参考:scipy.signal.hilbert

  • 文档中说明返回的信号是Analytic signal解析信号,与Matlab返回信号形式相同。(ps 我使用转化一次时域对称信号,但是返回的值是实数,还没有深究是什么问题)。在参考文中也是把结果当做希尔伯特变换来看的。

希尔伯特变换获取包络

信号 f ( t ) f(t) f(t)的包络为 E ( t ) = s q r t ( [ H ( f ( t ) ) ] 2 + f 2 ( t ) ) E(t) = sqrt([H(f(t))] ^2+f^2(t)) E(t)=sqrt([H(f(t))]2+f2(t))

import numpy as np
import matplotlib.pyplot as plt
import scipy.signal as signal

from scipy import fftpack

t = np.arange(0, 0.3, 1/20000.0)
x = np.cos(2*np.pi*1000*t) * (np.cos(2*np.pi*20*t) + np.cos(2*np.pi*8*t) + 3.0)
hx = fftpack.hilbert(x)
plt.plot(x, label=u"Carrier")
plt.plot(np.sqrt(x**2 + hx**2), "r", linewidth=2, label=u"Envelop")
plt.plot(-np.sqrt(x**2 + hx**2), "g", linewidth=2, label=u"-Envelop")
plt.title(u"Hilbert Transform")
plt.legend()
plt.show()

Python/scipy之希尔伯特变换hilbert_第2张图片

你可能感兴趣的:(Python数据科学)