series_iir()
S’applique à : ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Applique un filtre à réponse impulsionnelle infinie sur une série.
La fonction prend une expression contenant un tableau numérique dynamique comme entrée et applique un filtre de réponse d’impulsion infinie. En spécifiant les coefficients de filtre, vous pouvez utiliser la fonction pour :
- calculer la somme cumulative de la série
- appliquer des opérations de lissage
- appliquer différents filtres à passes élevées, passe-bande et filtres à faible passe
La fonction prend comme entrée la colonne contenant le tableau dynamique et deux tableaux dynamiques statiques des dénominateurs et des coefficients de numérateurs du filtre, et applique le filtre sur la colonne. Elle génère une nouvelle colonne de tableau dynamique, qui contient la sortie filtrée.
Syntaxe
series_iir(
numérateurs de ,
série,
dénominateurs)
En savoir plus sur les conventions de syntaxe.
Paramètres
Nom | Type | Requise | Description |
---|---|---|---|
série | dynamic |
✔️ | Tableau de valeurs numériques, généralement la sortie résultante d’opérateurs make-series ou make_list . |
Numérateurs | dynamic |
✔️ | Tableau de valeurs numériques contenant les coefficients de numérateur du filtre. |
Dénominateurs | dynamic |
✔️ | Tableau de valeurs numériques contenant les coefficients de dénominateur du filtre. |
Important
Le premier élément de a
(autrement dit, a[0]
) ne doit pas être égal à zéro, pour éviter la division par 0. Consultez la formule suivante.
Formule récursive du filtre
- Considérez un tableau d’entrée X et des coefficients tableaux a et b de longueurs n_a et n_b respectivement. La fonction de transfert du filtre qui génère le tableau de sortie Y est définie par :
Exemple
Calculez une somme cumulative. Utilisez le filtre iir avec des coefficients dénominateurs=[1,-1] et des numérateurs=[1] :
let x = range(1.0, 10, 1);
print x=x, y = series_iir(x, dynamic([1]), dynamic([1,-1]))
| mv-expand x, y
Sortie
x | y |
---|---|
1.0 | 1.0 |
2.0 | 3.0 |
3.0 | 6.0 |
4.0 | 10.0 |
Voici comment l’encapsuler dans une fonction :
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)
Sortie
j | dd |
---|---|
[0,1,2,3,4] |
10 |