series_fir()
Aplica um filtro De Resposta por Impulso Finito (FIR) numa série.
A função utiliza uma expressão que contém uma matriz numérica dinâmica como entrada e aplica um filtro De Resposta por Impulso Finito . Ao especificar os filter
coeficientes, pode ser utilizado para calcular uma média móvel, suavização, deteção de alterações e muitos mais casos de utilização. A função utiliza a coluna que contém a matriz dinâmica e uma matriz dinâmica estática dos coeficientes do filtro como entrada e aplica o filtro na coluna. Produz uma nova coluna de matriz dinâmica, que contém a saída filtrada.
Syntax
series_fir(
série,
filter [,
normalize[,
center]])
Saiba mais sobre as convenções de sintaxe.
Parâmetros
Nome | Tipo | Necessário | Descrição |
---|---|---|---|
série | dynamic |
✔️ | Uma matriz de valores numéricos. |
filtrar | dynamic |
✔️ | Uma matriz de valores numéricos que contêm os coeficientes do filtro. |
normalizar | bool |
Indica se o filtro deve ser normalizado. Ou seja, dividido pela soma dos coeficientes. Se o filtro contiver valores negativos, a normalização tem de ser especificada como false , caso contrário, o resultado será null . Se não for especificado, assume-se um valor predefinido de true , consoante a presença de valores negativos no filtro. Se o filtro contiver pelo menos um valor negativo, assume-sefalse que a normalização é . |
|
centro | bool |
Indica se o filtro é aplicado simetricamente numa janela de tempo antes e depois do ponto atual ou numa janela de tempo do ponto atual para trás. Por predefinição, o centro é false , que se adequa ao cenário de transmissão em fluxo de dados para que só possamos aplicar o filtro nos pontos atuais e mais antigos. No entanto, para o processamento ad-hoc, pode defini-lo como true , mantendo-o sincronizado com a série temporal. Veja os exemplos abaixo. Este parâmetro controla o atraso do grupo do filtro. |
Dica
A normalização é uma forma conveniente de garantir que a soma dos coeficientes é 1. Quando normalizado é true
, o filtro não amplifica nem atenua a série. Por exemplo, a média móvel de quatro classes pode ser especificada por filter=[1,1,1,1] e normalizada=true
, o que é mais simples do que escrever [0,25,0,25,0,25,0,0,25].
Devoluções
Uma nova coluna de matriz dinâmica que contém a saída filtrada.
Exemplos
- Calcular uma média móvel de cinco pontos ao definir filter=[1,1,1,1,1] e normalizar=
true
(predefinição). Tenha em atenção o efeito do centro=false
(predefinição) vs.true
:
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
Esta consulta devolve:
5h_MovingAvg: Filtro médio móvel de cinco pontos. O pico é suavado e o seu pico foi deslocado por (5-1)/2 = 2h.
5h_MovingAvg_centered: o mesmo, mas ao definir center=true
, o pico permanece na localização original.
- Para calcular a diferença entre um ponto e o anterior, defina 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
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários