Wie man einen Bandpass-Butterworth-Filter mit Scipy.signal.butter implementiert

UPDATE:

Zu meiner überraschung, während der Suche nach diesem gleichen Thema, fast zwei Jahre später, fand ich einen Scipy Rezept in dieser Frage! So, für alle, die interessiert sind, gehen Sie direkt zu:

http://wiki.scipy.org/Cookbook/ButterworthBandpass


Ich habe eine harte Zeit zu erreichen, was schien zunächst eine einfache Aufgabe, die Implementierung eines Butterworth-Bandpass-filter für die 1-D-numpy array (Zeitreihe).

Habe ich Parameter enthalten sind, die sample_rate, die cutoff-Frequenzen IN HERTZ und ggf. um (andere Parameter, wie Dämpfung, Eigenfrequenz, usw.. sind etwas rätselhaft für mich, also keine "default" - Wert tun würde).

Was ich jetzt habe ist dieses, das zu funktionieren scheint wie ein high-pass-filter, aber ich bin in keiner Weise sicher, ob ich alles richtig machen:

def butter_highpass(interval, sampling_rate, cutoff, order=5):
    nyq = sampling_rate * 0.5

    stopfreq = float(cutoff)
    cornerfreq = 0.4 * stopfreq  # (?)

    ws = cornerfreq/nyq
    wp = stopfreq/nyq

    # for bandpass:
    # wp = [0.2, 0.5], ws = [0.1, 0.6]

    N, wn = scipy.signal.buttord(wp, ws, 3, 16)   # (?)

    # for hardcoded order:
    # N = order

    b, a = scipy.signal.butter(N, wn, btype='high')   # should 'high' be here for bandpass?
    sf = scipy.signal.lfilter(b, a, interval)
    return sf

Wie man einen Bandpass-Butterworth-Filter mit Scipy.signal.butter implementiert

Den docs und Beispiele sind verwirrend und unverständlich, aber ich möchte zum implementieren der vorliegenden form in die commend markiert als "bandpass". Die Fragezeichen in die Kommentare zeigen, wo ich gerade Kopie-aufgeklebt einige Beispiel-ohne zu verstehen, was passiert ist.

Ich bin kein Elektrotechnik oder Wissenschaftler, nur eine medizinische Ausrüstung, die designer benötigen, um einige eher einfachen bandpass-Filterung auf EMG-Signale.

Vielen Dank für jede Hilfe!!!

Kommentar zu dem Problem
Ich habe versucht etwas bei dsp.stackexchange, aber Sie konzentrieren sich zu sehr (mehr als ich bewältigen kann) in konzeptionellen Fragen der Technik und nicht so sehr mit den Funktionen scipy. Kommentarautor: heltonbiker

InformationsquelleAutor der Frage heltonbiker | 2012-08-23

Schreibe einen Kommentar