series_fir()

Wendet einen Finite Impulse Response -Filter (FIR) in einer Serie an.

Die Funktion verwendet einen Ausdruck, der ein dynamisches numerisches Array als Eingabe enthält und einen Finite Impulse Response-Filter anwendet. Durch Die Angabe der filter Koeffizienten kann sie zum Berechnen eines gleitenden Mittelwerts, der Verglättung, der Änderungserkennung und vieler weiterer Anwendungsfälle verwendet werden. Die Funktion verwendet die Spalte, die das dynamische Array und ein statisches dynamisches Array der Koeffizienten des Filters als Eingabe enthält, und wendet den Filter auf der Spalte an. Sie gibt eine neue dynamische Array-Spalte mit der gefilterten Ausgabe aus.

Syntax

series_fir(X,filter [normalize[,,center]])

Argumente

  • x: Dynamisches Array numerischer Werte. In der Regel die resultierende Ausgabe von Make-Series- oder make_list Operatoren.
  • filter: Dynamisches Array numerischer Werte, die die Koeffizienten des Filters enthalten.
  • normalisieren: Optionaler boolescher Wert, der angibt, ob der Filter normalisiert werden soll. Das heißt, geteilt durch die Summe der Koeffizienten. Wenn Filter negative Werte enthält, muss die Normalisierung als false, andernfalls wird das Ergebnis nullangegeben. Wenn nicht angegeben, wird je nach Anwesenheit negativer Werte im Filter ein Standardwert der Normalisierung angenommen. Wenn filter mindestens einen negativen Wert enthält, wird die Normalisierung angenommen false.
    Die Normalisierung ist eine bequeme Möglichkeit, sicherzustellen, dass die Summe der Koeffizienten 1 ist. Anschließend wird der Filter die Datenreihe nicht amplifizieren oder aktivieren. Beispielsweise könnte der gleitende Mittelwert von vier Bins durch filter=[1,1,1,1] und normalisiert=true angegeben werden, was einfacher als die Eingabe [0,25,0.25.0.25.25,0.25] ist.
  • mitte: Ein optionaler boolescher Wert, der angibt, ob der Filter symmetrisch auf einem Zeitfenster vor und nach dem aktuellen Punkt oder auf einem Zeitfenster aus dem aktuellen Punkt rückwärts angewendet wird. Standardmäßig ist center false, was dem Szenario von Streamingdaten entspricht, wobei wir nur den Filter auf die aktuellen und älteren Punkte anwenden können. Für die Ad-hoc-Verarbeitung können Sie sie jedoch auf truefestlegen, damit sie mit der Zeitreihe synchronisiert wird. Siehe folgende Beispiele. Dieser Parameter steuert die Gruppenverzögerung des Filters.

Beispiele

  • Berechnen Sie einen gleitenden Durchschnitt von fünf Punkten, indem Sie filter=[1,1,1,1,1] und normalisieren=true (Standard). Beachten Sie den Effekt des=false Zentrierens (Standard) vs. true:
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: Fünf Punkte, die den gleitenden Durchschnitt filtern. Die Spitze wird geglättet und um (5-1)/2 = 2 Stunden verschoben.
5h_MovingAvg_centered: Identisch, aber durch Festlegen center=truebleibt der Spitzenpunkt an seinem ursprünglichen Ort.

Series fir.

  • Um den Unterschied zwischen einem Punkt und seinem vorhergehenden zu berechnen, legen Sie filter=[1,-1] fest.
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

Series fir 2.