series_fir()
Applique un filtre FIR (Finite Impulse Response) sur une série.
La fonction prend une expression contenant un tableau numérique dynamique en tant qu’entrée et applique un filtre de réponse impulsionnelle finie . En spécifiant les filter
coefficients, il peut être utilisé pour calculer une moyenne mobile, le lissage, la détection des modifications et bien d’autres cas d’usage. La fonction prend la colonne contenant le tableau dynamique et un tableau dynamique statique des coefficients du filtre comme entrée, puis applique le filtre sur la colonne. Elle génère une nouvelle colonne de tableau dynamique, qui contient la sortie filtrée.
Syntax
series_fir(
Série,
filter [,
normalize[,
center]])
Découvrez les conventions de syntaxe.
Paramètres
Nom | Type | Obligatoire | Description |
---|---|---|---|
Série | dynamic |
✔️ | Tableau de valeurs numériques. |
filter | dynamic |
✔️ | Tableau de valeurs numériques contenant les coefficients du filtre. |
normalize | bool |
Indique si le filtre doit être normalisé. Autrement dit, divisé par la somme des coefficients. Si le filtre contient des valeurs négatives, normalize doit être spécifié comme false , sinon le résultat sera null . Si elle n’est pas spécifiée, une valeur par défaut est supposée, en fonction de true la présence de valeurs négatives dans le filtre. Si le filtre contient au moins une valeur négative, normalize est supposé être false . |
|
centre | bool |
Indique si le filtre est appliqué symétriquement sur une fenêtre de temps avant et après le point actuel, ou sur une fenêtre de temps à partir du point actuel vers l’arrière. Par défaut, center est false , qui correspond au scénario de diffusion en continu des données afin que nous puissions appliquer le filtre uniquement sur les points actuels et plus anciens. Toutefois, pour le traitement ad hoc, vous pouvez le définir sur true , en le maintenant synchronisé avec la série chronologique. Voir les exemples ci-dessous. Ce paramètre contrôle le délai de groupe du filtre. |
Conseil
La normalisation est un moyen pratique de s’assurer que la somme des coefficients est 1. Lorsque normalisé a la valeur true
, le filtre n’amplifie pas ou n’atténue pas la série. Par exemple, la moyenne mobile de quatre compartiments peut être spécifiée par filter=[1,1,1,1] et normalisée=true
, ce qui est plus simple que de taper [0.25,0.25.0.25,0.25].
Retours
Nouvelle colonne de tableau dynamique contenant la sortie filtrée.
Exemples
- Calculez une moyenne mobile de cinq points en définissant filter=[1,1,1,1,1] et normalisez=
true
(valeur par défaut). Notez l’effet du centre=false
(par défaut) par rapporttrue
à :
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
Cette requête renvoie :
5h_MovingAvg : filtre de moyenne mobile de cinq points. Le pic est lissé et son point culminant est déplacé de (5-1)/2 = 2 h.
5h_MovingAvg_centered : Identique, mais en définissant center=true
, le pic reste à son emplacement d’origine.
- Pour calculer la différence entre un point et son point précédent, définissez filter=[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
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour