scipy.signal.

dfreqresp#

scipy.signal.dfreqresp(system, w=None, n=10000, whole=False)[Quellcode]#

Berechnet die Frequenzantwort eines zeitdiskreten Systems.

Parameter:
systemdlti | tuple

Eine Instanz der LTI-Klasse dlti oder ein Tupel, das das System beschreibt. Die Anzahl der Elemente im Tupel bestimmt die Interpretation. D. h.

  • system: Instanz der LTI-Klasse dlti. Beachten Sie, dass abgeleitete Instanzen, wie z. B. Instanzen von TransferFunction, ZerosPolesGain oder StateSpace, ebenfalls zulässig sind.

  • (num, den, dt): Rationale Polynome, wie in TransferFunction beschrieben. Die Koeffizienten der Polynome sollten in absteigender Exponentenreihenfolge angegeben werden, z.B. z² + 3z + 5 würde als [1, 3, 5] dargestellt werden.

  • (zeros, poles, gain, dt): Nullstellen-, Pol-, Verstärkungsform, wie in ZerosPolesGain beschrieben.

  • (A, B, C, D, dt): Zustandsraumform, wie in StateSpace beschrieben.

warray_like, optional

Array von Frequenzen (in Radiant/Sample). Amplituden- und Phasendaten werden für jeden Wert in diesem Array berechnet. Wenn nicht angegeben, wird ein angemessenes Set berechnet.

nint, optional

Anzahl der Frequenzpunkte, die berechnet werden sollen, wenn w nicht angegeben ist. Die n Frequenzen sind logarithmisch in einem Intervall verteilt, das so gewählt wird, dass es den Einfluss der Pole und Nullstellen des Systems erfasst.

wholebool, optional

Normalerweise, wenn 'w' nicht gegeben ist, werden die Frequenzen von 0 bis zur Nyquist-Frequenz, pi Radiant/Sample (oberer Halbkreis des Einheitskreises), berechnet. Wenn whole True ist, werden die Frequenzen von 0 bis 2*pi Radiant/Sample berechnet.

Rückgabe:
w1D ndarray

Frequenz-Array [Radiant/Sample]

H1D ndarray

Array von komplexen Amplitudenwerten

Hinweise

Wenn (num, den) für system übergeben wird, sollten die Koeffizienten für Zähler und Nenner in absteigender Reihenfolge der Exponenten angegeben werden (z. B. z^2 + 3z + 5 würde als [1, 3, 5] dargestellt werden).

Hinzugefügt in Version 0.18.0.

Beispiele

Das folgende Beispiel generiert das Nyquist-Diagramm der Übertragungsfunktion \(H(z) = \frac{1}{z^2 + 2z + 3}\) mit einer Abtastzeit von 0,05 Sekunden

>>> from scipy import signal
>>> import matplotlib.pyplot as plt
>>> sys = signal.TransferFunction([1], [1, 2, 3], dt=0.05)  # construct H(z)
>>> w, H = signal.dfreqresp(sys)
...
>>> fig0, ax0 = plt.subplots()
>>> ax0.plot(H.real, H.imag, label=r"$H(z=e^{+j\omega})$")
>>> ax0.plot(H.real, -H.imag, label=r"$H(z=e^{-j\omega})$")
>>> ax0.set_title(r"Nyquist Plot of $H(z) = 1 / (z^2 + 2z + 3)$")
>>> ax0.set(xlabel=r"$\text{Re}\{z\}$", ylabel=r"$\text{Im}\{z\}$",
...         xlim=(-0.2, 0.65), aspect='equal')
>>> ax0.plot(H[0].real, H[0].imag, 'k.')  # mark H(exp(1j*w[0]))
>>> ax0.text(0.2, 0, r"$H(e^{j0})$")
>>> ax0.grid(True)
>>> ax0.legend()
>>> plt.show()
../../_images/scipy-signal-dfreqresp-1.png