Condividi tramite


series_iir()

Si applica a: ✅Microsoft Fabric✅Azure Esplora dati Azure MonitorMicrosoft Sentinel

Applica un filtro Infinite Impulse Response su una serie.

La funzione accetta un'espressione contenente una matrice numerica dinamica come input e applica un filtro Infinite Impulse Response . Specificando i coefficienti di filtro, è possibile usare la funzione per:

La funzione accetta come input la colonna contenente la matrice dinamica e due matrici dinamiche statiche dei denominatori e dei coefficienti numeratori del filtro e applica il filtro sulla colonna. Restituisce una nuova colonna di matrice dinamica, che contiene l'output filtrato.

Sintassi

series_iir(denominatori di numeratori di serie , , )

Altre informazioni sulle convenzioni di sintassi.

Parametri

Nome Digita Obbligatorio Descrizione
serie dynamic ✔️ Matrice di valori numerici, in genere l'output risultante di operatori make-series o make_list .
Numeratori dynamic ✔️ Matrice di valori numerici contenente i coefficienti numeratori del filtro.
Denominatori dynamic ✔️ Matrice di valori numerici contenente i coefficienti denominatori del filtro.

Importante

Il primo elemento di a (ovvero a[0], ) non deve essere zero, per evitare la divisione per 0. Vedere la formula seguente.

Formula ricorsiva del filtro

  • Si consideri una matrice di input X e le matrici di coefficienti a e b di lunghezze rispettivamente n_a e n_b. La funzione di trasferimento del filtro che genererà la matrice di output Y è definita da:
Y i = a 0-1(b0Xi + b1Xi-1 + ... + bn b-1 Xi-nb-1 - a1Yi-1-a 2Yi-2 - ... - ana-1 Yi-na-1)

Esempio

Calcolare una somma cumulativa. Usare il filtro iir con coefficienti denominator=[1,-1] e numeratori=[1]:

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

Output

x y
1.0 1.0
2.0 3.0
3.0 6.0
4.0 10.0

Ecco come eseguire il wrapping in una funzione:

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)

Output

d dd
[0,1,2,3,4] 10