scipy.signal.

buttord#

scipy.signal.buttord(wp, ws, gpass, gstop, analog=False, fs=None)[Quelle]#

Bestimmung der Ordnung eines Butterworth-Filters.

Gibt die Ordnung des niedrigsten digitalen oder analogen Butterworth-Filters zurück, der im Durchlassbereich nicht mehr als gpass dB verliert und im Sperrbereich mindestens gstop dB Dämpfung aufweist.

Parameter:
wp, wsfloat

Grenzfrequenzen des Durchlass- und Sperrbereichs.

Für digitale Filter sind diese in denselben Einheiten wie fs angegeben. Standardmäßig ist fs 2 Halbzyklen/Sample, sodass diese von 0 bis 1 normalisiert sind, wobei 1 die Nyquist-Frequenz ist. (wp und ws sind somit in Halbzyklen / Sample.) Zum Beispiel

  • Tiefpass: wp = 0.2, ws = 0.3

  • Hochpass: wp = 0.3, ws = 0.2

  • Bandpass: wp = [0.2, 0.5], ws = [0.1, 0.6]

  • Bandstopp: wp = [0.1, 0.6], ws = [0.2, 0.5]

Für analoge Filter sind wp und ws Winkelgeschwindigkeiten (z. B. rad/s).

gpassfloat

Der maximale Verlust im Durchlassbereich (dB).

gstopfloat

Die minimale Dämpfung im Sperrbereich (dB).

analogbool, optional

Wenn True, wird ein analoger Filter zurückgegeben, andernfalls ein digitaler Filter.

fsfloat, optional

Die Abtastfrequenz des digitalen Systems.

Hinzugefügt in Version 1.2.0.

Rückgabe:
ordint

Die niedrigste Ordnung für einen Butterworth-Filter, der die Spezifikationen erfüllt.

wnndarray oder float

Die natürliche Frequenz des Butterworth-Filters (d.h. die „3-dB-Frequenz“). Sollte zusammen mit butter verwendet werden, um Filterergebnisse zu erhalten. Wenn fs angegeben ist, ist dies in den gleichen Einheiten und fs muss ebenfalls an butter übergeben werden.

Siehe auch

butter

Filterentwurf unter Verwendung von Ordnung und kritischen Punkten

cheb1ord

Ordnung und kritische Punkte aus Durchlass- und Sperrbereichsspezifikationen ermitteln

cheb2ord, ellipord
iirfilter

Allgemeines Filterdesign unter Verwendung von Ordnung und kritischen Frequenzen

iirdesign

Allgemeines Filterdesign mit Spezifikationen für Durchlass- und Sperrbereich

Beispiele

Entwerfen Sie einen analogen Bandpassfilter mit einem Durchlassbereich innerhalb von 3 dB von 20 bis 50 rad/s, während er unterhalb von 14 und oberhalb von 60 rad/s mindestens -40 dB Unterdrückung aufweist. Plotten Sie seine Frequenzantwort, die die Durchlass- und Sperrbereichsbeschränkungen in Grau zeigt.

>>> from scipy import signal
>>> import matplotlib.pyplot as plt
>>> import numpy as np
>>> N, Wn = signal.buttord([20, 50], [14, 60], 3, 40, True)
>>> b, a = signal.butter(N, Wn, 'band', True)
>>> w, h = signal.freqs(b, a, np.logspace(1, 2, 500))
>>> plt.semilogx(w, 20 * np.log10(abs(h)))
>>> plt.title('Butterworth bandpass filter fit to constraints')
>>> plt.xlabel('Frequency [rad/s]')
>>> plt.ylabel('Amplitude [dB]')
>>> plt.grid(which='both', axis='both')
>>> plt.fill([1,  14,  14,   1], [-40, -40, 99, 99], '0.9', lw=0) # stop
>>> plt.fill([20, 20,  50,  50], [-99, -3, -3, -99], '0.9', lw=0) # pass
>>> plt.fill([60, 60, 1e9, 1e9], [99, -40, -40, 99], '0.9', lw=0) # stop
>>> plt.axis([10, 100, -60, 3])
>>> plt.show()
../../_images/scipy-signal-buttord-1.png