series_fir()

在序列上套用有限脈衝響應 (FIR) 濾波器。

該函式會採用包含動態數值陣列的運算式作為輸入,並套用有限脈衝響應濾波器。 藉由指定 filter 係數,可將其用於計算移動平均、平滑化、變更偵測和許多其他使用案例。 此函式會採用包含濾波器係數的動態陣列,以及靜態動態陣列的資料行作為輸入,並在資料行上套用濾波器。 它會輸出新的動態陣列資料行,其中包含已篩選的輸出。

語法

series_fir(系列,filter [normalize[,,center]])

深入瞭解 語法慣例

參數

名稱 類型 必要 Description
系列 dynamic ✔️ 數值的陣列。
篩選 dynamic ✔️ 包含篩選係數的數值陣列。
normalize bool 指出篩選條件是否應該正規化。 意即除以係數的總和。 如果 filter 包含負值,則必須將 normalize 指定為 false,否則結果將會是 null。 如果未指定,則會假設的預設值 true ,視 篩選中是否有負值而定。 如果 filter 包含至少一個負值,則 normalize 會假設為 false
中心 bool 指出篩選條件是對稱地套用在目前點前後的時間範圍,還是從目前點向後套用的時間範圍。 根據預設,center 是 false,其符合串流數據的案例,因此我們只能在目前和較舊的點上套用篩選。 不過,您可以將其設定為 true,使其與時間序列保持同步,以便進行臨機操作處理。 請參閱下列範例。 此參數會控制濾波器的群組延遲

提示

標準化可讓您輕鬆確保係數總和為 1。 當 正規化true時,篩選不會放大或衰減數列。 例如,可以透過 filter=[1,1,1,1,1] 和 標準化=true來指定四個量化的移動平均,這比輸入 [0.25,0.25.0.25,0.25] 更簡單。

傳回

包含篩選輸出的新動態數位數據行。

範例

  • 設定 filter=[1,1,1,1,1] 和 normalize=true (預設),來計算五個點的移動平均。 請注意 center=false (預設) 與 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

此查詢會傳回︰
5h_MovingAvg: 五個移動平均濾波器的點。 會將響應平滑化,且其高峰會移位 (5-1)/2 = 2 小時。
5h_MovingAvg_centered: 與前者相同,但會設定 center=true,讓尖峰維持在其原始位置。

數列 fir。

  • 若要計算點和上一個點之間的差異,請設定 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

數列 fir 2。