すごくメモ帳

すごくほぼメモ帳ぐらいなブログ

バターワースフィルター, ローパスフィルター, 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()

f:id:muracchi3286:20210207163831p:plain