group_delay#
- scipy.signal.group_delay(system, w=512, whole=False, fs=6.283185307179586)[Quelle]#
Berechnet die Grupplaufzeit eines digitalen Filters.
Die Grupplaufzeit misst, um wie viele Samples die Amplituden-Einhüllenden verschiedener Spektralkomponenten eines Signals durch einen Filter verzögert werden. Sie ist formal definiert als die Ableitung der kontinuierlichen (unverpackten) Phase
d jw D(w) = - -- arg H(e) dw
- Parameter:
- systemTupel aus array_like (b, a)
Koeffizienten des Zählers und Nenner einer Filterübertragungsfunktion.
- w{None, int, array_like}, optional
Wenn eine einzelne Ganzzahl, dann bei dieser Anzahl von Frequenzen berechnen (Standard ist N=512).
Wenn array_like, berechnen Sie die Verzögerung bei den gegebenen Frequenzen. Diese sind in den gleichen Einheiten wie fs.
- wholebool, optional
Normalerweise werden die Frequenzen von 0 bis zur Nyquist-Frequenz, fs/2 (oberer Teil des Einheitskreises) berechnet. Wenn whole True ist, berechnen Sie Frequenzen von 0 bis fs. Wird ignoriert, wenn w array_like ist.
- fsfloat, optional
Die Abtastfrequenz des digitalen Systems. Standardmäßig 2*pi Radiant/Abtastung (also w von 0 bis pi).
Hinzugefügt in Version 1.2.0.
- Rückgabe:
- wndarray
Die Frequenzen, bei denen die Grupplaufzeit berechnet wurde, in den gleichen Einheiten wie fs. Standardmäßig wird w auf den Bereich [0, pi) (Radiant/Abtastung) normalisiert.
- gdndarray
Die Grupplaufzeit.
Siehe auch
freqzFrequenzgang eines digitalen Filters
Hinweise
Die ähnliche Funktion in MATLAB heißt grpdelay.
Wenn die Übertragungsfunktion \(H(z)\) Nullen oder Pole auf dem Einheitskreis hat, ist die Grupplaufzeit bei den entsprechenden Frequenzen undefiniert. In solchen Fällen wird eine Warnung ausgegeben und die Grupplaufzeit wird an diesen Frequenzen auf 0 gesetzt.
Details zur numerischen Berechnung der Grupplaufzeit finden Sie unter [1] oder [2].
Hinzugefügt in Version 0.16.0.
Referenzen
[1]Richard G. Lyons, „Understanding Digital Signal Processing, 3rd edition“, S. 830.
[2]Julius O. Smith III, „Numerical Computation of Group Delay“, in „Introduction to Digital Filters with Audio Applications“, Online-Buch, 2007, https://ccrma.stanford.edu/~jos/fp/Numerical_Computation_Group_Delay.html
Beispiele
>>> from scipy import signal >>> b, a = signal.iirdesign(0.1, 0.3, 5, 50, ftype='cheby1') >>> w, gd = signal.group_delay((b, a))
>>> import matplotlib.pyplot as plt >>> plt.title('Digital filter group delay') >>> plt.plot(w, gd) >>> plt.ylabel('Group delay [samples]') >>> plt.xlabel('Frequency [rad/sample]') >>> plt.show()