Ich las eine Zeitung über eine Gehirn-Computer-Schnittstelle. In diesem Artikel berichteten die Autoren, dass "jedes Signal mit einem Bandpass-Chebishev-Typ-I-Filter 8 Ordnung gefiltert wurde, dessen Grenzfrequenzen 0,1 und 10 Hz betragen und entsprechend der hohen Grenzfrequenz dezimiert wurden". Ich habe versucht, diesen Filter mit scipy zu entwerfen:
import scipy.signal as signal
signal.cheby1(8,0.05,[0.1,10.0],btype='band',analog=0,output='ba')
Das Ergebnis war:
Warning: invalid value encountered in sqrt
(array([ nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan,
nan, nan, nan, nan, nan, nan]), array([ nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan,
nan, nan, nan, nan, nan, nan]))
Ich habe keinen Hintergrund in der Signalverarbeitung, daher weiß ich eigentlich nicht, was ich tue. Ich weiß nicht, ob sie einen IIR- oder FIR-Filter verwendet haben oder ob ich die Grenzfrequenzen skalieren muss oder ob ich die falsche Welligkeit verwende. Ich hoffe ihr könnt mir helfen.
Zwei Grenzfrequenzen bedeuten normalerweise, dass es sich um ein Bandpassfilter mit einem Hochpass von 0,1 Hz und einem Tiefpass von 10 Hz handelt. Der Tiefpass-Cutoff (der die höhere der beiden Frequenzen ist) bestimmt, um wie viel Sie abtasten können. Wenn Ihr Tiefpassfilter unendlich steil wäre, könnten Sie mit einer neuen Abtastrate von 20 Hz (dem doppelten Grenzwert) davonkommen. Da die Steilheit begrenzt ist, müssen Sie ein Schutzband zwischen der Grenzfrequenz und der neuen Nyquist-Frequenz lassen. Wie viel Sie benötigen, hängt von der Reihenfolge des Filters ab und davon, wie viel Aliasing-Rauschen Sie tolerieren können.
In diesem speziellen Beispiel scheinen sie um den Faktor 12 oder so heruntergesampelt zu haben, was mir zu aggressiv erscheint und wahrscheinlich zu viel Aliasing-Rauschen führen wird.
quelle