Freigeben über


series_iir()

Gilt für: ✅Microsoft Fabric✅Azure Data ExplorerAzure MonitorMicrosoft Sentinel

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

Die Funktion verwendet einen Ausdruck, der dynamische numerische Array als Eingabe enthält, und wendet einen Infinite Impulse Response-Filter an. Durch Angeben der Filterkoeffizienten können Sie die Funktion verwenden, um:

Die Funktion verwendet als Eingabe der Spalte, die das dynamische Array und zwei statische dynamische Arrays der Nenner und Zähler 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(, Reihenzähler , )

Erfahren Sie mehr über Syntaxkonventionen.

Parameter

Name Type Erforderlich Beschreibung
Reihe dynamic ✔️ Ein Array numerischer Werte, in der Regel die resultierende Ausgabe von Make-Series - oder make_list Operatoren.
Zähler 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 null sein, um division by 0 zu vermeiden. Weitere Informationen finden Sie in der folgenden Formel.

Rekursive Formel des Filters

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

Beispiel

Berechnen einer kumulierten Summe. Verwenden Sie den Iir-Filter mit Denominatoren=[1,-1] und Zählern=[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

Hier erfahren Sie, wie Sie sie in eine Funktion umschließen:

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)

Output

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