Es fällt mir schwer, Dokumentation zu finden, um Bandpass- oder Hochpassfilter mit Python / Scipy / Numpy zu implementieren.
Ich kann jedoch leicht einen Tiefpassfilter erstellen und anwenden, also frage ich:
Wäre es konzeptionell korrekt, ein Signal tief zu filtern und dann das Ergebnis vom ursprünglichen Signal zu subtrahieren, um nur die hohen Frequenzen zu erhalten?
Wenn jemand ein einfaches Beispiel für einen naiven Bandpassfilter in Python hat (vorzugsweise mit den Bibliotheken numpy und scipy), wäre ich sehr dankbar.
Was ich suche ist so etwas wie:
filtered_signal = band_pass(original_signal, rate, low=20, high=500)
Vielen Dank für jede Hilfe!
EDIT: mit scipy verwende ich dies als Tiefpass, mit guten Ergebnissen:
import numpy, scipy.signal
def firfilt(interval, freq, sampling_rate):
nfreq = freq/(0.5*sampling_rate)
taps = sampling_rate + 1
a = 1
b = scipy.signal.firwin(taps, cutoff=nfreq)
firstpass = scipy.signal.lfilter(b, a, interval)
## second pass to compensate phase delay
secondpass = scipy.signal.lfilter(b, a, firstpass[::-1])[::-1]
return secondpass
scipy.signal.firwin
erfahren Sie, wie Tiefpass-, Hochpass-, Bandpass-, Bandstopp- und Multibandfilter erstellt werden. Hast du es versuchtfirwin(taps, cutoff=nfreq, pass_zero=False)
?