series_iir()
Gilt für: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft 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:
- Berechnen der kumulierten Summe der Datenreihe
- Anwenden von Glättungsvorgängen
- Verschiedene High-Pass-, Band-Pass- und Low-Pass-Filter anwenden
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:
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 |