decimate#
- scipy.signal.decimate(x, q, n=None, ftype='iir', axis=-1, zero_phase=True)[Quelle]#
Signal nach Anwendung eines Alias-Unterdrückungsfilters absampeln.
Standardmäßig wird ein Chebyshev-Typ-I-Filter 8. Ordnung verwendet. Wenn ftype auf ‘fir’ gesetzt ist, wird ein FIR-Filter mit 30 Punkten und Hamming-Fenster verwendet.
- Parameter:
- xarray_like
Das Eingangssignal besteht aus äquidistanten Abtastwerten. Wenn x ein mehrdimensionales Array ist, gibt der Parameter axis die Zeitachse an.
- qint
Der Abtastratenreduktionsfaktor, eine positive Ganzzahl. Bei der Verwendung von IIR-Abtastratenreduktion wird empfohlen,
decimatemehrmals für Abtastratenreduktionsfaktoren größer als 13 aufzurufen.- nint, optional
Die Ordnung des Filters (1 weniger als die Länge bei 'fir'). Standardmäßig 8 für 'iir' und das 20-fache des Abtastratenreduktionsfaktors für 'fir'.
- ftypestr {‘iir’, ‘fir’} oder
dlti-Instanz, optional Wenn ‘iir’ oder ‘fir’, gibt den Typ des Tiefpassfilters an. Wenn eine Instanz eines
dlti-Objekts, verwendet dieses Objekt zum Filtern vor dem Absampeln.- axisint, optional
Die Achse, entlang der abgetastet wird.
- zero_phasebool, optional
Verhindert Phasenverschiebungen durch Filterung mit
filtfiltanstelle vonlfilterbei Verwendung eines IIR-Filters und durch Zurückverschiebung der Ausgaben um die Gruppenverzögerung des Filters bei Verwendung eines FIR-Filters. Der StandardwertTruewird empfohlen, da eine Phasenverschiebung im Allgemeinen nicht erwünscht ist.Hinzugefügt in Version 0.18.0.
- Rückgabe:
- yndarray
Das abgetastete Signal.
Siehe auch
resampleNeuabtastung nach oben oder unten unter Verwendung der FFT-Methode.
resample_polyNeuabtastung unter Verwendung von Polyphasenfiltern und einem FIR-Filter.
Hinweise
Für nicht-ganzzahlige Abtastratenreduktionsfaktoren kann
resampleverwendet werden. Konsultieren Sie das Modulscipy.interpolatefür Methoden zur Neuabtastung von Signalen mit nicht-konstanten Abtastintervallen.Das Schlüsselwort
zero_phasewurde in 0.18.0 hinzugefügt. Die Möglichkeit, Instanzen vondltialsftypezu verwenden, wurde in 0.18.0 hinzugefügt.Beispiele
>>> import numpy as np >>> from scipy import signal >>> import matplotlib.pyplot as plt
Definiere Wellenparameter.
>>> wave_duration = 3 >>> sample_rate = 100 >>> freq = 2 >>> q = 5
Berechne die Anzahl der Abtastwerte.
>>> samples = wave_duration*sample_rate >>> samples_decimated = int(samples/q)
Erzeuge Kosinuswelle.
>>> x = np.linspace(0, wave_duration, samples, endpoint=False) >>> y = np.cos(x*np.pi*freq*2)
Kosinuswelle absampeln.
>>> ydem = signal.decimate(y, q) >>> xnew = np.linspace(0, wave_duration, samples_decimated, endpoint=False)
Original- und abgetastete Wellen plotten.
>>> plt.plot(x, y, '.-', xnew, ydem, 'o-') >>> plt.xlabel('Time, Seconds') >>> plt.legend(['data', 'decimated'], loc='best') >>> plt.show()