scipy.signal.

normalize#

scipy.signal.normalize(b, a)[Quelle]#

Normalisiert Zähler/Nenner einer kontinuierlichen Übertragungsfunktion.

Wenn Werte von b zu nahe an 0 liegen, werden sie entfernt. In diesem Fall wird eine BadCoefficients-Warnung ausgegeben.

Parameter:
b: array_like

Zähler der Übertragungsfunktion. Kann ein 2D-Array sein, um mehrere Übertragungsfunktionen zu normalisieren.

a: array_like

Nenner der Übertragungsfunktion. Maximal 1D.

Rückgabe:
num: array

Der Zähler der normalisierten Übertragungsfunktion. Mindestens ein 1D-Array. Ein 2D-Array, wenn das Eingabe- num ein 2D-Array ist.

den: 1D-Array

Der Nenner der normalisierten Übertragungsfunktion.

Hinweise

Koeffizienten sowohl für den Zähler als auch für den Nenner sollten in absteigender Reihenfolge der Exponenten angegeben werden (z. B. s^2 + 3s + 5 wird als [1, 3, 5] dargestellt).

Beispiele

>>> from scipy.signal import normalize

Normalisieren Sie die Koeffizienten der Übertragungsfunktion (3*s^2 - 2*s + 5) / (2*s^2 + 3*s + 1)

>>> b = [3, -2, 5]
>>> a = [2, 3, 1]
>>> normalize(b, a)
(array([ 1.5, -1. ,  2.5]), array([1. , 1.5, 0.5]))

Eine Warnung wird generiert, wenn beispielsweise der erste Koeffizient von b 0 ist. Im folgenden Beispiel ist das Ergebnis wie erwartet

>>> import warnings
>>> with warnings.catch_warnings(record=True) as w:
...     num, den = normalize([0, 3, 6], [2, -5, 4])
>>> num
array([1.5, 3. ])
>>> den
array([ 1. , -2.5,  2. ])
>>> print(w[0].message)
Badly conditioned filter coefficients (numerator): the results may be meaningless