series_fir()
Použije filtr FIR (Konečný impulsní odpověď) na řadu.
Funkce přebírá jako vstup výraz obsahující dynamickou číselnou matici a použije filtr Konečný impulsní odpověď . filter
Zadáním koeficientů se dá použít k výpočtu klouzavého průměru, vyhlazování, detekce změn a mnoha dalších případů použití. Funkce vezme sloupec obsahující dynamickou matici a statickou dynamickou matici koeficientů filtru jako vstup a použije filtr na sloupec. Vypíše nový sloupec dynamického pole obsahující filtrovaný výstup.
Syntax
series_fir(
Série,
filter [,
normalize[,
center]])
Přečtěte si další informace o konvencích syntaxe.
Parametry
Název | Typ | Vyžadováno | Popis |
---|---|---|---|
Série | dynamic |
✔️ | Pole číselných hodnot. |
Filtr | dynamic |
✔️ | Pole číselných hodnot obsahující koeficienty filtru. |
Normalizovat | bool |
Určuje, jestli má být filtr normalizován. To znamená, že se vydělí součtem koeficientů. Pokud filtr obsahuje záporné hodnoty, musí být normalizován jako false , jinak bude null výsledek . Pokud není zadán, předpokládá se výchozí hodnota v true závislosti na přítomnosti záporných hodnot ve filtru. Pokud filtr obsahuje aspoň jednu zápornou hodnotu, předpokládá se, že normalizační hodnota je false . |
|
Centrum | bool |
Označuje, jestli je filtr použit symetricky v časovém okně před a za aktuálním bodem, nebo v časovém okně od aktuálního bodu dozadu. Ve výchozím nastavení je false center , což odpovídá scénáři streamování dat, takže filtr můžeme použít pouze na aktuální a starší body. Pro ad hoc zpracování ho ale můžete nastavit na true hodnotu , aby byla synchronizovaná s časovou řadou. Podívejte se na následující příklady: Tento parametr řídí zpoždění skupiny filtru. |
Tip
Normalizace je pohodlný způsob, jak zajistit, aby součet koeficientů byl 1. Při normalizacitrue
filtr řadu nezsiluje ani neztlumí. Například klouzavý průměr čtyř přihrádek může být zadán pomocí filter=[1;1;1;1] a normalizován=true
, což je jednodušší než psaní [0,25,0.25.0.25;0.25].
Návraty
Nový sloupec dynamického pole obsahující filtrovaný výstup.
Příklady
- Vypočítejte klouzavý průměr pěti bodů nastavením filter=[1;1;1;1;1] a normalizujete=
true
(výchozí). Všimněte si efektu center=false
(výchozí) 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
Tento dotaz vrátí:
5h_MovingAvg: Filtr klouzavého průměru s pěti body. Hrot se vyhladí a jeho vrchol posune o (5-1)/2 = 2h.
5h_MovingAvg_centered: Stejný, ale nastavením center=true
zůstane špička v původním umístění.
- Pokud chcete vypočítat rozdíl mezi bodem a předchozím bodem, nastavte 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
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro