sweep_poly#
- scipy.signal.sweep_poly(t, poly, phi=0)[Quelle]#
Frequenz-Sweep-Cosinus-Generator mit zeitabhängiger Frequenz.
Diese Funktion erzeugt eine sinusförmige Funktion, deren momentane Frequenz sich mit der Zeit ändert. Die Frequenz zum Zeitpunkt t wird durch das Polynom poly gegeben.
- Parameter:
- tndarray
Zeitpunkte, zu denen die Wellenform ausgewertet werden soll.
- poly1-D array_like oder Instanz von numpy.poly1d
Die gewünschte Frequenz, ausgedrückt als Polynom. Wenn poly eine Liste oder ein ndarray der Länge n ist, dann sind die Elemente von poly die Koeffizienten des Polynoms und die momentane Frequenz ist
f(t) = poly[0]*t**(n-1) + poly[1]*t**(n-2) + ... + poly[n-1]Wenn poly eine Instanz von numpy.poly1d ist, dann ist die momentane Frequenz
f(t) = poly(t)- phifloat, optional
Phasenverschiebung in Grad, Standard: 0.
- Rückgabe:
- sweep_polyndarray
Ein Numpy-Array, das das Signal enthält, das zu t mit der angeforderten zeitvariablen Frequenz ausgewertet wurde. Genauer gesagt gibt die Funktion
cos(phase + (pi/180)*phi)zurück, wobei phase das Integral (von 0 bis t) von2 * pi * f(t)ist;f(t)ist wie oben definiert.
Siehe auch
Hinweise
Hinzugefügt in Version 0.8.0.
Wenn poly eine Liste oder ein ndarray der Länge n ist, dann sind die Elemente von poly die Koeffizienten des Polynoms und die momentane Frequenz ist
f(t) = poly[0]*t**(n-1) + poly[1]*t**(n-2) + ... + poly[n-1]Wenn poly eine Instanz von
numpy.poly1dist, dann ist die momentane Frequenzf(t) = poly(t)Schließlich ist die Ausgabe s
cos(phase + (pi/180)*phi)wobei phase das Integral von 0 bis t von
2 * pi * f(t)ist,f(t)wie oben definiert.Beispiele
Berechnet die Wellenform mit der momentanen Frequenz
f(t) = 0.025*t**3 - 0.36*t**2 + 1.25*t + 2
über das Intervall 0 <= t <= 10.
>>> import numpy as np >>> from scipy.signal import sweep_poly >>> p = np.poly1d([0.025, -0.36, 1.25, 2.0]) >>> t = np.linspace(0, 10, 5001) >>> w = sweep_poly(t, p)
Zeichne sie
>>> import matplotlib.pyplot as plt >>> plt.subplot(2, 1, 1) >>> plt.plot(t, w) >>> plt.title("Sweep Poly\nwith frequency " + ... "$f(t) = 0.025t^3 - 0.36t^2 + 1.25t + 2$") >>> plt.subplot(2, 1, 2) >>> plt.plot(t, p(t), 'r', label='f(t)') >>> plt.legend() >>> plt.xlabel('t') >>> plt.tight_layout() >>> plt.show()