バターワースフィルター, ローパスフィルター, Python, numpy, scipy.signal
ノイズが乗っかったサンプリング周波数 100 Hz で 5 Hz のデーターに 7 Hz のローパスフィルターをかける。
import numpy as np import matplotlib.pyplot as plt from scipy import signal fs = 100 # サンプリング周波数 t = np.arange(1000) / fs # 10 秒間 ux = np.sin(2*np.pi*t*5) + np.random.randn(t.size) # データー # ローパスフィルター fc = 7 # カットオフ周波数 n, Wn = 5, fc / (fs / 2) b, a = signal.butter(n, Wn, "low") x = signal.filtfilt(b, a, ux) fig, ax = plt.subplots(subplot_kw={"xlim": (0, 3)}) ax.plot(t, ux) ax.plot(t, x) plt.show()