series_iir()

Wendet einen Filter mit unendlicher Impulsantwort (Infinite Impulse Response, IIR) auf eine Reihe an.

Die Funktion akzeptiert einen Ausdruck, der ein dynamisches numerisches Array als Eingabe enthält, und wendet einen Filter für unendliche Impulsantwort an . Wenn Sie die Filterkoeffizienten angeben, können Sie die Funktion für Folgendes verwenden:

Die Funktion übernimmt als Eingabe die Spalte, die das dynamische Array und zwei statische dynamische Arrays der Nenner - und Zählerkoeffizienten des Filters enthält, und wendet den Filter auf die Spalte an. Sie gibt eine neue dynamische Array-Spalte mit der gefilterten Ausgabe aus.

Syntax

series_iir(Serie,Numeratoren,Nenner)

Erfahren Sie mehr über Syntaxkonventionen.

Parameter

Name Typ Erforderlich BESCHREIBUNG
Serie dynamic ✔️ Ein Array numerischer Werte, in der Regel die resultierende Ausgabe von Make-Series- oder make_list-Operatoren .
Numeratoren dynamic ✔️ Ein Array numerischer Werte, das die Zählerkoeffizienten des Filters enthält.
Nenner dynamic ✔️ Ein Array numerischer Werte, das die Nennerkoeffizienten des Filters enthält.

Wichtig

Das erste Element von a (d. h. a[0]) darf nicht 0 sein, um eine Aufteilung durch 0 zu vermeiden. Siehe die folgende Formel.

Die rekursive Formel des Filters

  • Betrachten Sie ein Eingabearray X und koeffizienten Arrays a und b der Längen n_a bzw. n_b. Die Übertragungsfunktion des Filters, der das Ausgabearray Y generiert, wird definiert durch:
Yi = a 0-1(b0Xi + b1Xi-1 + ... + bnb-1 Xi-nb-1 - a1Yi-1-a2Yi-2 - ... - ana-1 Yi-na-1)

Beispiel

Berechnen Sie eine kumulative Summe. Verwenden Sie den iir-Filter mit den Koeffizienten denominatoren=[1,-1] und Numeratoren=[1]:

let x = range(1.0, 10, 1);
print x=x, y = series_iir(x, dynamic([1]), dynamic([1,-1]))
| mv-expand x, y

Ausgabe

x Y
1.0 1.0
2.0 3.0
3.0 6.0
4,0 10.0

So umschließen Sie ihn in eine Funktion:

let vector_sum=(x: dynamic) {
    let y=array_length(x) - 1;
    todouble(series_iir(x, dynamic([1]), dynamic([1, -1]))[y])
};
print d=dynamic([0, 1, 2, 3, 4])
| extend dd=vector_sum(d)

Ausgabe

T dd
[0,1,2,3,4] 10