unit_impulse#
- scipy.signal.unit_impulse(shape, idx=None, dtype=<class 'float'>)[Quelle]#
Einheitlicher Impulssignal (diskrete Deltafunktion) oder Einheitsbasisvektor.
- Parameter:
- shapeint oder Tupel von int
Anzahl der Samples in der Ausgabe (1-D) oder ein Tupel, das die Form der Ausgabe (N-D) darstellt.
- idxNone oder int oder Tupel von int oder ‚mid‘, optional
Index, an dem der Wert 1 ist. Wenn None, wird standardmäßig das 0-te Element verwendet. Wenn
idx='mid', wird der Impuls in allen Dimensionen aufshape // 2zentriert. Wenn ein int, wird der Impuls in allen Dimensionen an idx platziert.- dtypeDatentyp, optional
Der gewünschte Datentyp für das Array, z. B.
numpy.int8. Standard istnumpy.float64.
- Rückgabe:
- yndarray
Ausgabe-Array, das ein Impulssignal enthält.
Hinweise
In der Literatur zur digitalen Signalverarbeitung wird das Einheitssignal oft durch die Kronecker-Delta-Funktion dargestellt. [1] D. h., ein Signal \(u_k[n]\), das überall null ist, außer an der \(k\)-ten Abtastung, wo es eins ist, kann ausgedrückt werden als
\[u_k[n] = \delta[n-k] \equiv \delta_{n,k}\ .\]Darüber hinaus wird der Einheitspuls häufig als diskrete Zeitversion der kontinuierlichen Dirac-Distribution interpretiert. [2]
Referenzen
[1]„Kronecker delta“, Wikipedia, https://en.wikipedia.org/wiki/Kronecker_delta#Digital_signal_processing
[2]„Dirac delta function“ Wikipedia, https://en.wikipedia.org/wiki/Dirac_delta_function#Relationship_to_the_Kronecker_delta
Hinzugefügt in Version 0.19.0.
Beispiele
Ein Impuls am 0. Element (\(\\delta[n]\))
>>> from scipy import signal >>> signal.unit_impulse(8) array([ 1., 0., 0., 0., 0., 0., 0., 0.])
Impuls um 2 Samples versetzt (\(\\delta[n-2]\))
>>> signal.unit_impulse(7, 2) array([ 0., 0., 1., 0., 0., 0., 0.])
2-dimensionaler Impuls, zentriert
>>> signal.unit_impulse((3, 3), 'mid') array([[ 0., 0., 0.], [ 0., 1., 0.], [ 0., 0., 0.]])
Impuls bei (2, 2), unter Verwendung von Broadcasting
>>> signal.unit_impulse((4, 4), 2) array([[ 0., 0., 0., 0.], [ 0., 0., 0., 0.], [ 0., 0., 1., 0.], [ 0., 0., 0., 0.]])
Plot der Impulsantwort eines Tiefpassfilters vom 4. Ordnung nach Butterworth
>>> imp = signal.unit_impulse(100, 'mid') >>> b, a = signal.butter(4, 0.2) >>> response = signal.lfilter(b, a, imp)
>>> import numpy as np >>> import matplotlib.pyplot as plt >>> plt.plot(np.arange(-50, 50), imp) >>> plt.plot(np.arange(-50, 50), response) >>> plt.margins(0.1, 0.1) >>> plt.xlabel('Time [samples]') >>> plt.ylabel('Amplitude') >>> plt.grid(True) >>> plt.show()