Bardzo podstawowe podejście byłoby powołać
# spell out the args that were passed to the Matlab function
N = 10
Fc = 40
Fs = 1600
# provide them to firwin
h = scipy.signal.firwin(numtaps=N, cutoff=40, nyq=Fs/2)
# 'x' is the time-series data you are filtering
y = scipy.signal.lfilter(h, 1.0, x)
Powinno to wydajność filtra podobny do tego, który kończy się wykonane w kodzie Matlaba. Jeśli Twoim celem jest uzyskanie równoważnych funkcjonalnie wyników, powinien to być przydatny filtr .
Jednak jeśli Twoim celem jest, aby kod Pythona zapewniał dokładnie takie same wyniki, , będziesz musiał sprawdzić pod maską połączenia design
(w Matlab); Z mojego szybkiego sprawdzenia nie jest trywialne analizowanie wywołań Matlab w celu dokładnego określenia, co robi, tj. Jaka metoda projektowania jest używana itd. Oraz jak zamapować to na odpowiednie wywołania scipy
. Jeśli naprawdę potrzebujesz kompatybilności i potrzebujesz tylko dla ograniczonej liczby filtrów, możesz ręcznie spojrzeć na pole Hd.Numerator
- ta tablica liczb bezpośrednio odpowiada zmiennej h
w powyższym kodzie Pythona. Więc jeśli ręcznie skopiujesz te liczby do tablicy, otrzymasz wyniki równoważne numerycznie.