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
,讓尖峰維持在其原始位置。
- 若要計算點和上一個點之間的差異,請設定 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
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應