Saturday 18 November 2017

Projeto de filtro de média móvel exponencial


Filtro exponencial Esta página descreve a filtragem exponencial, o filtro mais simples e mais popular. Isso faz parte da seção Filtragem que faz parte de Um guia para detecção de falhas e diagnóstico. Visão geral, constante de tempo e equivalente analógico O filtro mais simples é o filtro exponencial. Ele tem apenas um parâmetro de ajuste (diferente do intervalo de amostra). Ele requer o armazenamento de apenas uma variável - a saída anterior. É um filtro IIR (auto-regressivo) - os efeitos de uma mudança de entrada decai exponencialmente até que os limites das telas ou a aritmética do computador o escondam. Em várias disciplinas, o uso deste filtro também é referido como suavização 8220exponencial8221. Em algumas disciplinas, como a análise de investimento, o filtro exponencial é chamado de 8220Motiva Mínima PonderadaExponencialmente (EWMA), ou apenas 8220Motiva MínimaExponencial8221 (EMA). Isso viola a tradicional terminologia ARMA 8220moving average8221 da análise de séries temporais, uma vez que não há histórico de entrada usado - apenas a entrada atual. É o equivalente em tempo discreto do lag8221 de primeira ordem comumente usado na modelagem analógica de sistemas de controle de tempo contínuo. Em circuitos elétricos, um filtro RC (filtro com um resistor e um capacitor) é um atraso de primeira ordem. Quando se enfatiza a analogia com os circuitos analógicos, o parâmetro de ajuste único é a constante de tempo 8220, geralmente escrita como a letra grega Tau (). De facto, os valores nos tempos de amostra discretos correspondem exactamente ao intervalo de tempo contínuo equivalente com a mesma constante de tempo. A relação entre a implementação digital e a constante de tempo é mostrada nas equações abaixo. Equações do filtro exponencial e inicialização O filtro exponencial é uma combinação ponderada da estimativa anterior (saída) com os dados de entrada mais recentes, com a soma dos pesos iguais a 1 de modo que a saída corresponde à entrada no estado estacionário. Seguindo a notação de filtro já introduzida: y (k) ay (k-1) (1-a) x (k) onde x (k) é a entrada bruta no tempo ky (k) é a saída filtrada no tempo passo ka É uma constante entre 0 e 1, normalmente entre 0,8 e 0,99. (A-1) ou a é às vezes chamado 8220smoothing constante8221. Para sistemas com um passo de tempo fixo T entre amostras, a constante 8220a8221 é calculada e armazenada por conveniência apenas quando o programador de aplicações especifica um novo valor da constante de tempo desejada. Para sistemas com amostragem de dados em intervalos irregulares, a função exponencial acima deve ser usada com cada passo de tempo, onde T é o tempo desde a amostra anterior. A saída do filtro normalmente é inicializada para corresponder à primeira entrada. À medida que a constante de tempo se aproxima de 0, a vai para zero, então não há filtragem 8211 a saída é igual à nova entrada. Como a constante de tempo fica muito grande, um aproxima-se 1, de modo que a nova entrada é quase ignorado 8211 filtragem muito pesado. A equação de filtro acima pode ser rearranjada no seguinte equi - valente preditor-corretor: Esta forma torna mais aparente que a estimativa variável (saída do filtro) é predita como inalterada da estimativa anterior y (k-1) mais um termo de correção baseado No inesperado 8220innovation8221 - a diferença entre a nova entrada x (k) ea previsão y (k-1). Esta forma é também o resultado de derivar o filtro exponencial como um simples caso especial de um filtro de Kalman. Que é a solução ótima para um problema de estimação com um conjunto particular de suposições. Passo resposta Uma maneira de visualizar o funcionamento do filtro exponencial é traçar sua resposta ao longo do tempo para uma entrada passo. Ou seja, começando com a entrada e saída do filtro em 0, o valor de entrada é repentinamente alterado para 1. Os valores resultantes são plotados abaixo: No gráfico acima, o tempo é dividido pela constante de tempo do filtro tau para que você possa mais facilmente prever Os resultados para qualquer período de tempo, para qualquer valor da constante de tempo do filtro. Após um tempo igual à constante de tempo, a saída do filtro aumenta para 63,21 do seu valor final. Após um tempo igual a 2 constantes de tempo, o valor sobe para 86,47 do seu valor final. As saídas após tempos iguais a 3,4 e 5 constantes de tempo são 95,02, 98,17 e 99,33 do valor final, respectivamente. Uma vez que o filtro é linear, isto significa que estas percentagens podem ser utilizadas para qualquer magnitude da alteração de passo, não apenas para o valor de 1 utilizado aqui. Embora a resposta passo em teoria leva um tempo infinito, de um ponto de vista prático, pense no filtro exponencial como 98 a 99 8220 done8221 respondendo após um tempo igual a 4 a 5 constantes de tempo de filtro. Variações no filtro exponencial Existe uma variação do filtro exponencial chamado filtro exponencial não-linear, que pretende filtrar fortemente o ruído dentro de uma determinada amplitude, mas então responder mais rapidamente a alterações maiores. Este exemplo mostra como usar filtros de média móvel e reamostragem para isolar o efeito de componentes periódicos da hora do dia em leituras de temperatura por hora, bem como remover ruídos de linha indesejados de um ambiente aberto - medição de voltagem. O exemplo também mostra como suavizar os níveis de um sinal de relógio enquanto preserva as bordas usando um filtro mediano. O exemplo também mostra como usar um filtro Hampel para remover outliers grandes. Motivação A suavização é como descobrimos padrões importantes em nossos dados enquanto deixamos de lado coisas que não são importantes (ou seja, ruído). Utilizamos a filtragem para realizar este alisamento. O objetivo do alisamento é produzir mudanças lentas no valor de modo que seu mais fácil ver tendências em nossos dados. Às vezes, quando você examinar os dados de entrada, você pode desejar suavizar os dados para ver uma tendência no sinal. No nosso exemplo, temos um conjunto de leituras de temperatura em Celsius tomadas a cada hora no Aeroporto Logan para todo o mês de janeiro de 2011. Note que podemos ver visualmente o efeito que a hora do dia tem sobre as leituras de temperatura. Se você está interessado somente na variação diária da temperatura durante o mês, as flutuações de hora em hora só contribuem o ruído, que pode fazer as variações diárias difíceis de discernir. Para remover o efeito da hora do dia, gostaríamos agora de suavizar nossos dados usando um filtro de média móvel. Um Filtro de Média Móvel Em sua forma mais simples, um filtro de média móvel de comprimento N toma a média de cada N amostras consecutivas da forma de onda. Para aplicar um filtro de média móvel a cada ponto de dados, construímos nossos coeficientes de nosso filtro de modo que cada ponto seja igualmente ponderado e contribua 124 para a média total. Isso nos dá a temperatura média ao longo de cada período de 24 horas. Filter Delay Note que a saída filtrada está atrasada em cerca de doze horas. Isto é devido ao fato de que nosso filtro de média móvel tem um atraso. Qualquer filtro simétrico de comprimento N terá um atraso de (N-1) 2 amostras. Podemos contabilizar esse atraso manualmente. Extraindo Diferenças Médicas Alternativamente, também podemos usar o filtro de média móvel para obter uma melhor estimativa de como a hora do dia afeta a temperatura global. Para fazer isso, primeiro, subtraia os dados suavizados das medições de temperatura por hora. Em seguida, segmente os dados diferenciados em dias e tome a média em todos os 31 dias do mês. Extraindo o Envelope de Pico Às vezes gostaríamos também de ter uma estimativa suavemente variável de como os altos e baixos do nosso sinal de temperatura mudam diariamente. Para fazer isso, podemos usar a função envelope para conectar altos e baixos extremos detectados em um subconjunto do período de 24 horas. Neste exemplo, garantimos que haja pelo menos 16 horas entre cada extrema alta e extrema baixa. Podemos também ter uma noção de como os altos e baixos tendem tomando a média entre os dois extremos. Filtros de Média Móvel Ponderada Outros tipos de filtros de média móvel não pesam igualmente cada amostra. Outro filtro comum segue a expansão binomial de (12,12) n Este tipo de filtro se aproxima de uma curva normal para grandes valores de n. É útil para filtrar o ruído de alta freqüência para pequenas n. Para encontrar os coeficientes para o filtro binomial, convolve 12 12 com ele mesmo e então convolua iterativamente a saída com 12 12 um número prescrito de vezes. Neste exemplo, use cinco iterações totais. Outro filtro um pouco semelhante ao filtro de expansão gaussiano é o filtro de média móvel exponencial. Este tipo de filtro de média móvel ponderada é fácil de construir e não requer um tamanho de janela grande. Você ajusta um filtro de média móvel ponderado exponencialmente por um parâmetro alfa entre zero e um. Um valor maior de alfa terá menos suavização. Amplie as leituras durante um dia. Selecione o seu País É possível implementar uma média móvel em C sem a necessidade de uma janela de amostras Ive descobri que eu posso otimizar um pouco, escolhendo um tamanho de janela thats um poder de dois para permitir bit-shifting em vez de dividir, mas Não precisava de um buffer seria bom. Existe uma maneira de expressar um novo resultado da média móvel apenas como uma função do antigo resultado e da nova amostra Definir um exemplo de média móvel, através de uma janela de 4 amostras para ser: Adicionar nova amostra e: Uma média móvel pode ser implementada recursivamente , Mas para um cálculo exato da média móvel você deve se lembrar da amostra de entrada mais antiga na soma (ou seja, o a no seu exemplo). Para um comprimento N média móvel você calcula: onde yn é o sinal de saída e xn é o sinal de entrada. Eq. (1) pode ser escrito recursivamente como Então você sempre precisa lembrar a amostra xn-N para calcular (2). Como indicado por Conrad Turner, você pode usar uma janela exponencial (infinitamente longa), que permite calcular a saída somente da saída anterior e da entrada atual: mas esta não é uma média móvel padrão (não ponderada), mas uma média exponencial Ponderada média móvel, onde as amostras mais no passado obter um menor peso, mas (pelo menos em teoria) você nunca se esqueça nada (os pesos apenas ficar menor e menor para amostras no passado). Eu implementei uma média móvel sem memória de item individual para um programa de rastreamento GPS que eu escrevi. Eu começo com 1 amostra e dividir por 1 para obter o avg atual. Eu adiciono então uma outra amostra e divido por 2 à corrente avg. Isso continua até que eu chegar ao comprimento da média. Cada vez depois, eu adiciono na nova amostra, obter a média e remover essa média do total. Eu não sou um matemático, mas isso parecia ser uma boa maneira de fazê-lo. Eu imaginei que iria transformar o estômago de um cara de matemática real, mas, verifica-se que é uma das formas aceitas de fazê-lo. E funciona bem. Basta lembrar que quanto maior o seu comprimento, mais lento é seguir o que você deseja seguir. Isso pode não importar a maior parte do tempo, mas quando os satélites seguintes, se você é lento, a trilha poderia estar longe da posição real e vai ficar mal. Você poderia ter uma lacuna entre o sat e os pontos de arrasto. Eu escolhi um comprimento de 15 atualizado 6 vezes por minuto para obter alisamento adequado e não ficar muito longe da posição real sentado com os pontos de trilha suavizada. Respondida Nov 16 16 at 23:03 initialize total 0, count0 (cada vez vendo um novo valor Então uma entrada (scanf), um add totalnewValue, um incremento (count), uma divide average (totalcount) Todas as entradas Para calcular a média apenas nas últimas 4 entradas, seria necessário 4 variáveis ​​de entrada, talvez copiando cada entrada para uma variável de entrada mais antiga, calculando a nova média móvel como a soma das 4 variáveis ​​de entrada, dividida por 4 Bom se todos os insumos foram positivos para fazer o cálculo médio respondido Feb 3 15 at 4:06 Isso vai realmente calcular a média total e não a média móvel. Como a contagem fica maior o impacto de qualquer nova amostra de entrada torna-se ndash nitidamente pequeno Hilmar fevereiro A resposta de freqüência de um sistema LTI é a DTFT da resposta de impulso, A resposta de impulso de uma média móvel de L-amostra é Como a resposta de freqüência de um sistema LTI é a DTFT da resposta de impulso, Filtro de média móvel é FIR, a resposta de freqüência reduz para a soma finita Podemos usar a identidade muito útil para escrever a resposta de freqüência como onde temos deixar um e menos jomega. N 0 e M L menos 1. Podemos estar interessados ​​na magnitude desta função para determinar quais freqüências passam pelo filtro sem atenuação e quais são atenuadas. Abaixo está um gráfico da magnitude desta função para L 4 (vermelho), 8 (verde) e 16 (azul). O eixo horizontal varia de zero a pi radianos por amostra. Observe que, em todos os três casos, a resposta de freqüência tem uma característica de passagem baixa. Uma componente constante (frequência zero) na entrada passa através do filtro sem ser atenuada. Determinadas frequências mais elevadas, tais como pi 2, são completamente eliminadas pelo filtro. No entanto, se a intenção era projetar um filtro lowpass, então não temos feito muito bem. Algumas das freqüências mais altas são atenuadas apenas por um fator de cerca de 110 (para a média móvel de 16 pontos) ou 13 (para a média móvel de quatro pontos). Podemos fazer muito melhor do que isso. O gráfico acima foi criado pelo seguinte código Matlab: omega 0: pi400: pi H4 (14) (1-exp (-iomega4)) (1-exp (-iomega)) H8 (18) (1-exp (- (1-exp (-iomega)) (1-exp (-iomega)) traço (omega, abs (H4) abs (H8) abs ( H16)) eixo (0, pi, 0, 1) Cópia de direitos autorais 2000 - Universidade da Califórnia, Berkeley

No comments:

Post a Comment