Sdílet prostřednictvím


series_fir()

Použije filtr konečných impulsových odpovědí (FIR) na řadu.

Funkce přebírá výraz obsahující dynamické číselné pole jako vstup a použije filtr Konečný impuls odpovědi . filter Zadáním koeficientů se dá použít k výpočtu klouzavého průměru, vyhlazování, zjišťování 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.

Syntaxe

series_fir(filtr řad ,[, normalize[, střed]])

Přečtěte si další informace o konvencích syntaxe.

Parametry

Název Type Požadováno Popis
řada dynamic ✔️ Matice číselných hodnot.
filter dynamic ✔️ Matice číselných hodnot obsahující koeficienty filtru.
normalizovat bool Určuje, jestli má být filtr normalizován. To znamená, že děleno součtem koeficientů. Pokud filtr obsahuje záporné hodnoty, musí být normalizován jako false, jinak bude nullvýsledek . Pokud není zadáno, předpokládá se výchozí hodnota true v 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.
střed bool Určuje, zda je filtr použit symetricky v časovém intervalu před a za aktuálním bodem nebo v časovém intervalu od aktuálního bodu zpět. Ve výchozím nastavení je falsestředem , který odpovídá scénáři streamovaných dat, abychom mohli použít filtr pouze na aktuální a starší body. Pro ad hoc zpracování však můžete nastavit , aby truese synchronizovala s časovými řadami. Podívejte se na příklady níže. Tento parametr řídí zpoždění skupiny filtru.

Tip

Normalizace je pohodlný způsob, jak zajistit, aby součet koeficientů byl 1. Pokud je truenormalizováno, filtr nezmenší ani neztlumí řadu. Například klouzavý průměr čtyř intervalů je možné zadat pomocí filter=[1;1;1;1] a normalizovattrue=, což je jednodušší než zadání [0,25,0,25.0,25,0,25,0,25].

Návraty

Nový sloupec dynamického pole obsahující filtrovaný výstup.

Příklady

  • Výpočet klouzavého průměru pěti bodů nastavením filtru=[1;1;1;1;1] a normalizovattrue= (výchozí). Všimněte si efektu středufalse= (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 pěti bodů. Špička se vyhladí a její špička se posune o (5-1)/2 = 2h.
5h_MovingAvg_centered: Stejné, ale nastavením center=truese špička nachází v původním umístění.

Řadafir.

  • Pokud chcete vypočítat rozdíl mezi bodem a jeho předchozím bodem, nastavte filtr=[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 2.