Skip to content

Instantly share code, notes, and snippets.

@saccadic
Created October 19, 2018 02:34
Show Gist options
  • Save saccadic/854dfcd05cd3953f612b8b21c1eeae11 to your computer and use it in GitHub Desktop.
Save saccadic/854dfcd05cd3953f612b8b21c1eeae11 to your computer and use it in GitHub Desktop.
pythonのデジタルフィルタ
import numpy as np
from scipy import signal
def myFilter(inData, filter):
dt = 4.1666666667
fn = 1 / (2 * dt)
fp = 2
fs = 3
gpass = 1
gstop = 40
Wp = fp / fn
Ws = fs / fn
window_size = 10
if filter == "None":
return inData
elif filter == "Buttord":
N, Wn = signal.buttord(Wp, Ws, gpass, gstop)
b1, a1 = signal.butter(N, Wn, "low")
return signal.filtfilt(b1, a1, inData)
elif filter == "Cheb1ord":
N, Wn = signal.cheb1ord(Wp, Ws, gpass, gstop)
b2, a2 = signal.cheby1(N, gpass, Wn, "low")
return signal.filtfilt(b2, a2, inData)
elif filter == "Cheb2ord":
N, Wn = signal.cheb2ord(Wp, Ws, gpass, gstop)
b3, a3 = signal.cheby2(N, gstop, Wn, "low")
return signal.filtfilt(b3, a3, inData)
elif filter == "Ellipord":
N, Wn = signal.ellipord(Wp, Ws, gpass, gstop)
b4, a4 = signal.ellip(N, gpass, gstop, Wn, "low")
return signal.filtfilt(b4, a4, inData)
elif filter == "Bessel":
N = 4
b5, a5 = signal.bessel(N, Ws, "low")
return signal.filtfilt(b5, a5, inData)
elif filter == "FIR":
a6 = 1
numtaps = len(inData)
b6 = signal.firwin(numtaps, Wp, window="hann")
return signal.lfilter(b6, a6, inData)
delay = (numtaps - 1) / 2 * dt
elif filter == "Median":
return signal.medfilt(inData, window_size)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment