Ein sehr einfacher Ansatz wäre
# 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)
aufzurufen
Dies sollte einen Filter ähnlich den einen ergibt, das endet als im Matlab-Code gemacht. Wenn Ihr Ziel ist, funktionell äquivalente Ergebnisse zu erhalten, sollte dies einen nützlichen Filter zur Verfügung stellen.
Wenn jedoch Ihr Ziel ist, dass der Python-Code genau die gleichen Ergebnisse liefern, dann müssen Sie unter der Haube des design
Anrufs (in Matlab) schauen; ; Von meiner schnellen Überprüfung aus ist es nicht trivial, die Matlab-Aufrufe zu analysieren, um genau zu bestimmen, was sie tut, d. H. Welche Entwurfsmethode verwendet wird usw. und wie diese in entsprechende Aufrufe von scipy
abgebildet wird. Wenn Sie wirklich Kompatibilität wollen, und Sie nur für eine begrenzte Anzahl von Filtern tun müssen, könnten Sie von Hand auf das Hd.Numerator
Feld schauen - dieses Array von Zahlen entspricht direkt der h
Variable im obigen Python-Code. Wenn Sie also die Zahlen von Hand in ein Array kopieren, erhalten Sie numerisch gleichwertige Ergebnisse.