Ich versuche, meinen funktionierenden Butterworth-Tiefpassfilter 2. Ordnung in Python erster Ordnung umzuwandeln, aber es gibt mir sehr große Zahlen. Hier ist mein zweiter Ordnung Butterworth:2. Ordnung Butterworth in 1. Ordnung umwandeln
import math
import numpy as np
def bw_2nd(x=100, y, fc=200, fs=1000):
filtered_y = np.zeros(len(x))
omega_c = math.tan(np.pi*fc/fs)
k1 = np.sqrt(2)*omega_c
k2 = omega_c**2
a0 = k2/(1+k1+k2)
a1 = 2*a0
a2 = a0
k3 = 2*a0/k2
b1 = -(-2*a0+k3)
b2 = -(1-2*a0-k3)
filtered_y[0] = y[0]
filtered_y[1] = y[1]
for i in range(2, len(x)):
filtered_y[i] = np.int(a0*y[i]+a1*y[i-1]+a2*y[i-2]-(b1*filtered_y[i-1]+b2*filtered_y[i-2]))
return filtered_y
Hier ist meine nicht arbeit 1. Ordnung Butterworth:
def bw_1st(x=100, y, fc=200, fs=1000):
filtered_y = np.zeros(len(x))
omega_c = math.tan(np.pi*fc/fs)
k1 = np.sqrt(2)*omega_c
k2 = omega_c**2
a0 = k2/(1+k1+k2)
a1 = 2*a0
a2 = a0
k3 = 2*a0/k2
b1 = -(-2*a0+k3)
filtered_y[0] = y[0]
for i in range(1, len(x)):
filtered_y[i] = np.int(a0*y[i]+a1*y[i-1]-(b1*filtered_y[i-1]))
return filtered_y
... Ich entfernte alle [i-2] s, die ein Feed- waren Vorwärts und ein Feedback. Ich dachte, es würde funktionieren, aber es nicht. Können Sie mir sagen, wie ich das beheben kann? Vielen Dank.
Haben Sie eine Referenz zu dieser Implementierung? –
Ja: [link] (http://biomech.byu.edu/portals/83/docs/exsc663/part01/filtering_considerations.pdf) – IanHacker
Beide sollten in Ordnung sein, wenn Sie die 'np.int (...) entfernen '. Ich bekomme keine Probleme beim Anrufen (nachdem ich das entfernt habe). –