Megosztás a következőn keresztül:


series_iir()

Végtelen impulzusválasz-szűrőt alkalmaz egy sorozatra.

A függvény bemenetként egy dinamikus numerikus tömböt tartalmazó kifejezést vesz fel, és végtelen impulzusválasz-szűrőt alkalmaz. A szűrő együtthatóinak megadásával a függvénnyel a következőket teheti:

A függvény bemenetként felveszi a dinamikus tömböt tartalmazó oszlopot és a szűrő nevezőinek és számlálóinak két statikus dinamikus tömbjét, és alkalmazza a szűrőt az oszlopra. Egy új dinamikus tömboszlopot ad ki, amely a szűrt kimenetet tartalmazza.

Syntax

series_iir(Sorozat,számlálók,nevezők)

További információ a szintaxis konvenciókról.

Paraméterek

Név Típus Kötelező Leírás
Sorozat dynamic ✔️ Numerikus értékek tömbje, általában a make-series vagy make_list operátorok eredményül kapott kimenete.
számlálók dynamic ✔️ Numerikus értékek tömbje, amely a szűrő számláló együtthatóit tartalmazza.
nevezők dynamic ✔️ Numerikus értékek tömbje, amely a szűrő nevező együtthatóit tartalmazza.

Fontos

A (azaz a[0]) első eleme a nem lehet nulla, hogy elkerülje a 0-ra való osztást. Tekintse meg az alábbi képletet.

A szűrő rekurzív képlete

  • Vegyünk egy X bemeneti tömböt, és az együtthatók a és b hosszúságú tömböket n_a és n_b. Az Y kimeneti tömböt létrehozó szűrő átviteli függvényét a következő határozza meg:
Yi = a 0-1(b0Xi + b1Xi-1 + ... + bnb-1 Xi-nb-1 - a1Yi-1-a2Yi-2 - ... - ana-1 Yi-na-1)

Példa

Összeg összegének kiszámítása. Használja az iir szűrőt a nevező=[1,-1] és számlálókkal=[1]:

let x = range(1.0, 10, 1);
print x=x, y = series_iir(x, dynamic([1]), dynamic([1,-1]))
| mv-expand x, y

Kimenet

x é
1.0 1.0
2.0 3,0
3,0 6.0
4,0 10,0

Az alábbiak szerint burkolhatja egy függvénybe:

let vector_sum=(x: dynamic) {
    let y=array_length(x) - 1;
    todouble(series_iir(x, dynamic([1]), dynamic([1, -1]))[y])
};
print d=dynamic([0, 1, 2, 3, 4])
| extend dd=vector_sum(d)

Kimenet

n nn
[0,1,2,3,4] 10