series_fir()
Wendet einen FiR-Filter (Finite Impulse Response) auf eine Reihe an.
Die Funktion verwendet einen Ausdruck, der ein dynamisches numerisches Array als Eingabe enthält, und wendet einen Finite Impulse Response-Filter an . Durch Die Angabe der filter
Koeffizienten kann es für die Berechnung eines gleitenden Durchschnitts, glätten, Änderungserkennung und viele weitere Anwendungsfälle verwendet werden. Die Funktion verwendet die Spalte, die das dynamische Array und ein statisches dynamisches Array der Filterkoeffizienten enthält, als Eingabe und wendet den Filter auf die Spalte an. Sie gibt eine neue dynamische Array-Spalte mit der gefilterten Ausgabe aus.
Syntax
series_fir(
Serie,
filter [,
normalize[,
center]])
Erfahren Sie mehr über Syntaxkonventionen.
Parameter
Name | Typ | Erforderlich | BESCHREIBUNG |
---|---|---|---|
Serie | dynamic |
✔️ | Ein Array numerischer Werte. |
filter | dynamic |
✔️ | Ein Array numerischer Werte, die die Koeffizienten des Filters enthalten. |
normalize | bool |
Gibt an, ob der Filter normalisiert werden soll. Das heißt, dividiert durch die Summe der Koeffizienten. Wenn filter negative Werte enthält, muss normalize als false angegeben werden, andernfalls ist null result . Wenn nicht angegeben, wird abhängig vom Vorhandensein negativer Werte im Filter ein Standardwert von true angenommen. Wenn filter mindestens einen negativen Wert enthält, wird normalize als angenommen false . |
|
Zentrum | bool |
Gibt an, ob der Filter symmetrisch auf ein Zeitfenster vor und nach dem aktuellen Punkt oder auf ein Zeitfenster ab dem aktuellen Punkt rückwärts angewendet wird. Standardmäßig ist false center , was dem Szenario des Streamings von Daten entspricht, sodass wir den Filter nur auf die aktuellen und älteren Punkte anwenden können. Für die Ad-hoc-Verarbeitung können Sie sie jedoch auf true festlegen, wobei sie mit der Zeitreihe synchronisiert bleibt. Siehe folgende Beispiele. Dieser Parameter steuert die Gruppenverzögerung des Filters. |
Tipp
Die Normalisierung ist eine bequeme Möglichkeit, um sicherzustellen, dass die Summe der Koeffizienten 1 ist. Wenn normalisiert ist true
, wird die Reihe vom Filter nicht verstärkt oder abgeschwächt. Beispielsweise könnte der gleitende Durchschnitt von vier Behältern durch filter=[1,1,1,1] angegeben und normalisiert=true
werden, was einfacher ist als die Eingabe von [0.25,0.25.0.25,0.25, 0.25].
Gibt zurück
Eine neue dynamische Arrayspalte, die die gefilterte Ausgabe enthält.
Beispiele
- Berechnen Sie einen gleitenden Durchschnitt von fünf Punkten, indem Sie filter=[1,1,1,1,1] und normalisieren=
true
(Standard) festlegen. Beachten Sie die Auswirkungen von Zentriert=false
(Standard) im Vergleichtrue
:
range t from bin(now(), 1h) - 23h to bin(now(), 1h) step 1h
| summarize t=make_list(t)
| project
id='TS',
val=dynamic([0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 20, 40, 100, 40, 20, 10, 0, 0, 0, 0, 0, 0, 0, 0]),
t
| extend
5h_MovingAvg=series_fir(val, dynamic([1, 1, 1, 1, 1])),
5h_MovingAvg_centered=series_fir(val, dynamic([1, 1, 1, 1, 1]), true, true)
| render timechart
Diese Abfrage gibt Folgendes zurück:
5h_MovingAvg: Filter für den gleitenden Durchschnitt von fünf Punkten. Die Spitze wird geglättet und um (5-1)/2 = 2 Stunden verschoben.
5h_MovingAvg_centered: Identisch, aber durch festlegen center=true
bleibt der Peak an seinem ursprünglichen Standort.
- Legen Sie filter=[1,-1] fest, um die Differenz zwischen einem Punkt und seinem vorangehenden Punkt zu berechnen.
range t from bin(now(), 1h) - 11h to bin(now(), 1h) step 1h
| summarize t=make_list(t)
| project id='TS', t, value=dynamic([0, 0, 0, 0, 2, 2, 2, 2, 3, 3, 3, 3])
| extend diff=series_fir(value, dynamic([1, -1]), false, false)
| render timechart
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für