振幅包絡線を求めたかったので、メモ。
from scipy import signal from scipy import fftpack import numpy as np import matplotlib.pyplot as plt N = 1024 f = 5 f2 = 2 t = np.arange(0, N, 1) / N # 元信号 x = np.sin(2 * np.pi * f * t) * (1 + 0.5 * np.sin(2 * np.pi * f2 * t)) # ヒルベルト変換 h = fftpack.hilbert(x) # 解析信号 xa = signal.hilbert(x) # 包絡線 env = np.abs(xa)
fig = plt.figure() plt.plot(t, x, label="x") plt.plot(t, h, label="h") plt.plot(t, env, label="envelope(abs(xa))") plt.legend() plt.grid("both", "both")