series_fir()

Applica un filtro FIR (Finite Impulse Response) su una serie.

La funzione accetta un'espressione contenente una matrice numerica dinamica come input e applica un filtro Di risposta impulso finito . Specificando i filter coefficienti, può essere usato per calcolare una media mobile, un smoothing, un rilevamento delle modifiche e molti altri casi d'uso. La funzione accetta la colonna contenente la matrice dinamica e una matrice dinamica statica dei coefficienti del filtro come input e applica il filtro sulla colonna. Restituisce una nuova colonna di matrice dinamica, che contiene l'output filtrato.

Sintassi

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

Altre informazioni sulle convenzioni di sintassi.

Parametri

Nome Tipo Obbligatoria Descrizione
Serie dynamic ✔️ Matrice di valori numerici.
filter dynamic ✔️ Matrice di valori numerici contenente i coefficienti del filtro.
Normalizzare bool Indica se il filtro deve essere normalizzato. Ovvero, diviso per la somma dei coefficienti. Se il filtro contiene valori negativi, è necessario specificare normalize come false. In caso contrario, il risultato sarà null. Se non specificato, viene assunto un valore predefinito di true , a seconda della presenza di valori negativi nel filtro. Se il filtro contiene almeno un valore negativo, si presuppone che normalize sia false.
center bool Indica se il filtro viene applicato simmetricamente in un intervallo di tempo prima e dopo il punto corrente o in un intervallo di tempo dal punto corrente all'indietro. Per impostazione predefinita, center è false, che si adatta allo scenario dei dati di streaming in modo che sia possibile applicare il filtro solo ai punti correnti e precedenti. Tuttavia, per l'elaborazione ad hoc è possibile impostarla su true, mantenendola sincronizzata con la serie temporale. Vedere gli esempi di seguito. Questo parametro controlla il ritardo del gruppo del filtro.

Suggerimento

La normalizzazione è un modo pratico per assicurarsi che la somma dei coefficienti sia 1. Quando normalizzato è true, il filtro non amplifica o attenua la serie. Ad esempio, la media mobile di quattro bin può essere specificata da filter=[1,1,1,1] e normalizzata=true, più semplice della digitazione [0,25,0,25,0,25,0,25,0,25].

Restituisce

Nuova colonna di matrice dinamica contenente l'output filtrato.

Esempio

  • Calcolare una media mobile di cinque punti impostando filter=[1,1,1,1,1] e normalizzare=true (impostazione predefinita). Si noti l'effetto del centro=false (impostazione predefinita) rispetto truea :
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

Questa query restituisce:
5h_MovingAvg: cinque punti del filtro medio mobile. Il picco viene smussato e il massimo viene spostato di (5-1)/2 = 2h.
5h_MovingAvg_centered: uguale, ma impostando center=true, il picco rimane nella posizione originale.

Fir serie.

  • Per calcolare la differenza tra un punto e quello precedente, impostare filter=[1,-1].
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

Serie fir 2.