scipy.signal.

cheby2#

scipy.signal.cheby2(N, rs, Wn, btype='low', analog=False, output='ba', fs=None)[Quelle]#

Entwurf von digitalen und analogen Chebyshev-Typ-II-Filtern.

Entwirft einen digitalen oder analogen Chebyshev-Typ-II-Filter der Ordnung N und gibt die Filterkoeffizienten zurück.

Parameter:
Nint

Die Ordnung des Filters.

rsfloat

Die erforderliche Mindestdämpfung im Sperrband. Angegeben in Dezibel als positive Zahl.

Wnarray_like

Ein Skalar oder eine Sequenz der Länge 2, die die kritischen Frequenzen angibt. Bei Typ-II-Filtern ist dies der Punkt im Übergangsbereich, an dem die Verstärkung zuerst -rs erreicht.

Für digitale Filter sind Wn in derselben Einheit wie fs angegeben. Standardmäßig ist fs 2 Halbzyklen/Sample, daher sind diese von 0 bis 1 normalisiert, wobei 1 die Nyquist-Frequenz ist. (Wn sind somit in Halbzyklen / Sample.)

Für analoge Filter ist Wn eine Winkelfrequenz (z. B. rad/s).

btype{‘lowpass’, ‘highpass’, ‘bandpass’, ‘bandstop’}, optional

Der Filtertyp. Standard ist ‘lowpass’.

analogbool, optional

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

output{‘ba’, ‘zpk’, ‘sos’}, optional

Typ der Ausgabe: Zähler/Nenner („ba“), Pol-Nullstelle („zpk“) oder Sektionen zweiter Ordnung („sos“). Standard ist „ba“ aus Gründen der Abwärtskompatibilität, aber „sos“ sollte für allgemeine Filterung verwendet werden.

fsfloat, optional

Die Abtastfrequenz des digitalen Systems.

Hinzugefügt in Version 1.2.0.

Rückgabe:
b, andarray, ndarray

Zähler- (b) und Nenner- (a) Polynome des IIR-Filters. Nur zurückgegeben, wenn output='ba'.

z, p, kndarray, ndarray, float

Nullstellen, Pole und Systemverstärkung der Übertragungsfunktion des IIR-Filters. Nur zurückgegeben, wenn output='zpk'.

sosndarray

Zweistufige Abschnittsdarstellung des IIR-Filters. Nur zurückgegeben, wenn output='sos'.

Siehe auch

cheb2ord, cheb2ap

Hinweise

Der Chebyshev-Typ-II-Filter maximiert die Grenzfrequenz zwischen dem Durchlassbereich und dem Sperrband des Frequenzgangs, auf Kosten von Rippel im Sperrband und erhöhten Schwingungen im Sprungantwort.

Typ-II-Filter rollen nicht so schnell ab wie Typ-I (cheby1).

Der Parameter output='sos' wurde in 0.16.0 hinzugefügt.

Beispiele

Entwurf eines analogen Filters und Darstellung seiner Frequenzgangkurve, wobei die kritischen Punkte gezeigt werden

>>> from scipy import signal
>>> import matplotlib.pyplot as plt
>>> import numpy as np
>>> b, a = signal.cheby2(4, 40, 100, 'low', analog=True)
>>> w, h = signal.freqs(b, a)
>>> plt.semilogx(w, 20 * np.log10(abs(h)))
>>> plt.title('Chebyshev Type II frequency response (rs=40)')
>>> plt.xlabel('Frequency [rad/s]')
>>> plt.ylabel('Amplitude [dB]')
>>> plt.margins(0, 0.1)
>>> plt.grid(which='both', axis='both')
>>> plt.axvline(100, color='green') # cutoff frequency
>>> plt.axhline(-40, color='green') # rs
>>> plt.show()
../../_images/scipy-signal-cheby2-1_00_00.png

Generieren eines Signals, das aus 10 Hz und 20 Hz besteht, abgetastet mit 1 kHz

>>> t = np.linspace(0, 1, 1000, False)  # 1 second
>>> sig = np.sin(2*np.pi*10*t) + np.sin(2*np.pi*20*t)
>>> fig, (ax1, ax2) = plt.subplots(2, 1, sharex=True)
>>> ax1.plot(t, sig)
>>> ax1.set_title('10 Hz and 20 Hz sinusoids')
>>> ax1.axis([0, 1, -2, 2])

Entwirft einen digitalen Hochpassfilter bei 17 Hz, um den 10-Hz-Ton zu entfernen, und wendet ihn auf das Signal an. (Es wird empfohlen, für die Filterung das Format von Sektionen zweiter Ordnung zu verwenden, um numerische Fehler im Übertragungsfunktionsformat (ba) zu vermeiden)

>>> sos = signal.cheby2(12, 20, 17, 'hp', fs=1000, output='sos')
>>> filtered = signal.sosfilt(sos, sig)
>>> ax2.plot(t, filtered)
>>> ax2.set_title('After 17 Hz high-pass filter')
>>> ax2.axis([0, 1, -2, 2])
>>> ax2.set_xlabel('Time [s]')
>>> plt.show()
../../_images/scipy-signal-cheby2-1_01_00.png