Umwandeln von Sample / Grenzfrequenz pi-Radianten / Probe in einer diskreten Zeit abgetastete IIR-Filtersystem

StackOverflow https://stackoverflow.com/questions/4697235

Frage

Ich arbeite einige digitale Filter arbeiten mit Python und Numpy / Scipy auf zu tun.

Ich verwende scipy.signal.iirdesign meinen Filter coefficents zu erzeugen, aber es erfordert den Filterdurchlaßbereichs coefficents in einem Format, ich bin nicht mit

wp, ws : float

  Passband and stopband edge frequencies, normalized from 0 to 1 (1 corresponds 
      to pi radians / sample). 
  For example:
  Lowpass: wp = 0.2, ws = 0.3
  Highpass: wp = 0.3, ws = 0.2

( von hier )

Ich bin nicht vertraut mit digitalen Filtern (Ich bin von einem Hardware-Design-Hintergrund kommen). In einem analogen Zusammenhang möchte ich die gewünschte Neigung und den 3-dB-Punkt nach unten, bestimmen und Komponentenwerte aus, dass berechnen.

In diesem Zusammenhang, wie mache ich eine bekannte Sample-Rate, um eine gewünschte Eckfrequenz, und eine gewünschte rolloff, und berechnen die wp, ws Werte aus dem?

(Dies könnte besser geeignet sein für math.stackexchange. Ich bin sicher nicht)

War es hilfreich?

Lösung

Wenn Sie Ihre Abtastrate fs ist, ist die Nyquist-Rate fs / 2. Dies stellt die höchste darstellbare Frequenz, die Sie ohne Aliasing haben können. Es ist auch gleichbedeutend mit dem normierten Wert von 1 durch die Dokumentation bezeichnet. Deshalb, wenn Sie einen Tiefpassfilter mit einer Eckfrequenz von fc entwerfen, können Sie es als fc geben würde / (fs / 2).

Zum Beispiel haben Sie fs = 8000 so fs / 2 = 4000. Sie wollen einen Tiefpassfilter mit einer Eckfrequenz von 3100 und einem Stoppbandfrequenz von 3300. Die resultierenden Werte würden wp = fc / (fs / 2) = 3100/4000 sein. Der Sperrbereich Frequenz würde 3300/4000 sein.

Sinn?

Andere Tipps

Nehmen Sie die Funktion x(t) = cos(2*pi*fa*t). Wenn wir bei der Frequenz fs sind Abtastung ist die abgetastete Funktion x(n*ts) = x(n/fs) = cos(2*pi*n*fa/fs). Die maximale Frequenz vor Aliasing (Klapp-) ist die Nyquist-Frequenz fa = fs / 2, die zu (fs/2)/fs = 1/2 normalisiert. Die normierte Winkelfrequenz ist 2*pi*1/2 rad/sample = pi rad/sample. Somit wird das Signal x[n] = cos[pi*n] = [1,-1,1,-1,...].

Die abgetastete Version einer bestimmten Frequenz wie einer Eckfrequenz 2*pi*fc rad/s würde 2*pi*fc/fs rad/sample sein. Als ein Bruchteil der PI-Nyquist-Frequenz, das ist 2*fc/fs = fc/(fs/2).

Einige Formeln zu leben:

exp[j*w*n] = cos[w*n] + j*sin[w*n]
x_even[n] = 0.5*x[n] + 0.5*x[-n]
cos[w*n] = 0.5*exp[j*w*n] + 0.5*exp[-j*w*n]    # cos is even
x_odd[n] = 0.5*x[n] - 0.5*x[-n]
j*sin[w*n] = 0.5*exp[j*w*n] - 0.5*exp[-j*w*n]  # sin is odd

Die DFT der geradzahligen Komponente (eine Summe von Cosinus) ein reellwertigen Signal real und symmetrisch sein, während die DFT der Quote Komponente (eine Summe von Sinussen) imaginär sein und anti-symmetrisch. So für reellwertige Signale wie beispielsweise die Impulsantwort eines typischen Filters ist das Betragsspektrum symmetrisch, während das Phasenspektrum antisymmetrisch ist. So haben Sie nur einen Filter für den Bereich von 0 bis pi zu spezifizieren, die auf [0,1] normiert.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top