scipy.signal.

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, decimate mehrmals 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 filtfilt anstelle von lfilter bei Verwendung eines IIR-Filters und durch Zurückverschiebung der Ausgaben um die Gruppenverzögerung des Filters bei Verwendung eines FIR-Filters. Der Standardwert True wird 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

resample

Neuabtastung nach oben oder unten unter Verwendung der FFT-Methode.

resample_poly

Neuabtastung unter Verwendung von Polyphasenfiltern und einem FIR-Filter.

Hinweise

Für nicht-ganzzahlige Abtastratenreduktionsfaktoren kann resample verwendet werden. Konsultieren Sie das Modul scipy.interpolate für Methoden zur Neuabtastung von Signalen mit nicht-konstanten Abtastintervallen.

Das Schlüsselwort zero_phase wurde in 0.18.0 hinzugefügt. Die Möglichkeit, Instanzen von dlti als ftype zu 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()
../../_images/scipy-signal-decimate-1.png