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 nullvý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 falsecenter , 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 truehodnotu , 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 normalizacitruefiltr ř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=truezůstane špička v původním umístění.

Jedle řady.

  • 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

Řada jedle 2.