series_iir()
Si applica a: ✅Microsoft Fabric✅Azure Esplora dati✅ Azure Monitor✅Microsoft 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:
- calcolare la somma cumulativa della serie
- applicare operazioni di smoothing
- applicare vari filtri di passaggio elevato, passaggio di banda e pass basso
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:
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 |