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'.
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()
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()