series_fir()
Past een FIR-filter (Finite Impulse Response) toe op een reeks.
De functie gebruikt een expressie met een dynamische numerieke matrix als invoer en past een eindige impulsreactiefilter toe. Door de filter
coëfficiënten op te geven, kan het worden gebruikt voor het berekenen van een voortschrijdend gemiddelde, het afvlakken, het detecteren van wijzigingen en nog veel meer gebruiksvoorbeelden. De functie neemt de kolom met de dynamische matrix en een statische dynamische matrix van de filtercoëfficiënten als invoer en past het filter toe op de kolom. Er wordt een nieuwe dynamische matrixkolom uitgevoerd, die de gefilterde uitvoer bevat.
Syntax
series_fir(
Serie,
filter [,
normaliseren[,
centreren]])
Meer informatie over syntaxisconventies.
Parameters
Naam | Type | Vereist | Beschrijving |
---|---|---|---|
Serie | dynamic |
✔️ | Een matrix van numerieke waarden. |
Filter | dynamic |
✔️ | Een matrix van numerieke waarden met de coëfficiënten van het filter. |
Normalize | bool |
Geeft aan of het filter moet worden genormaliseerd. Dat wil gezegd, gedeeld door de som van de coëfficiënten. Als het filter negatieve waarden bevat, moet normaliseren worden opgegeven als false , anders wordt null het resultaat . Als dit niet is opgegeven, wordt uitgegaan van een standaardwaarde van true , afhankelijk van de aanwezigheid van negatieve waarden in het filter. Als het filter ten minste één negatieve waarde bevat, wordt van normaliseren uitgegaan false van . |
|
Center | bool |
Hiermee wordt aangegeven of het filter symmetrisch wordt toegepast op een tijdvenster vóór en na het huidige punt, of op een tijdvenster vanaf het huidige punt naar achteren. Standaard is false het midden , wat past bij het scenario van streaminggegevens, zodat we het filter alleen kunnen toepassen op de huidige en oudere punten. Voor ad-hocverwerking kunt u deze echter instellen op true , zodat deze gesynchroniseerd blijft met de tijdreeks. Zie de onderstaande voorbeelden. Deze parameter bepaalt de groepsvertraging van het filter. |
Tip
Normalisatie is een handige manier om ervoor te zorgen dat de som van de coëfficiënten 1 is. Wanneer genormaliseerd is, wordt true
de reeks niet versterkt of verzwak door het filter. Het zwevende gemiddelde van vier klassen kan bijvoorbeeld worden opgegeven door filter=[1,1,1,1 ], wat=true
eenvoudiger is dan het typen van [0,25,0.25.0.25,0,25].
Retouren
Een nieuwe dynamische matrixkolom met de gefilterde uitvoer.
Voorbeelden
- Bereken een zwevend gemiddelde van vijf punten door filter=[1,1,1,1,1] in te stellen en te normaliseren=
true
(standaard). Let op het effect van centreren=false
(standaard) versustrue
:
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
Deze query retourneert:
5h_MovingAvg: filter voor zwevend gemiddelde van vijf punten. De piek wordt afgevlakt en de piek verschoven met (5-1)/2 = 2u.
5h_MovingAvg_centered: Hetzelfde, maar door in te stellen center=true
, blijft de piek op de oorspronkelijke locatie.
- Als u het verschil tussen een punt en het voorafgaande wilt berekenen, stelt u filter=[1,-1] in.
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
Feedback
https://aka.ms/ContentUserFeedback.
Binnenkort beschikbaar: In de loop van 2024 zullen we GitHub-problemen geleidelijk uitfaseren als het feedbackmechanisme voor inhoud en deze vervangen door een nieuw feedbacksysteem. Zie voor meer informatie:Feedback verzenden en weergeven voor