Tuesday 5 December 2017

Exponencial média móvel média no Brasil


Um filtro digital fácil de usar A média móvel exponencial (EMA) é um tipo de filtro de resposta de impulso infinito (IIR) que pode ser usado em muitas aplicações DSP incorporadas. Requer apenas uma pequena quantidade de RAM e poder de computação. O que é um Filter Filters vem em formas analógicas e digitais e existe para remover freqüências específicas de um sinal. Um filtro analógico comum é o filtro RC de passagem baixa mostrado abaixo. Os filtros analógicos são caracterizados pela resposta de freqüência que é o quanto as freqüências são atenuadas (resposta de magnitude) e deslocadas (resposta de fase). A resposta de freqüência pode ser analisada usando uma transformada de Laplace que define uma função de transferência no domínio S. Para o circuito acima, a função de transferência é dada por: Para R é igual a um quilo-ohm e C é igual a um microfarad, a resposta de magnitude é mostrada abaixo. Observe que o eixo dos x é logarítmico (cada marca é 10 vezes maior que a última). O eixo y está em decibéis (o que é uma função logarítmica da saída). A frequência de corte para este filtro é de 1000 rads ou 160 Hz. Este é o ponto em que menos da metade do poder em uma determinada freqüência é transferida da entrada para a saída do filtro. Os filtros analógicos devem ser usados ​​em projetos embutidos quando amostragem de um sinal usando um conversor analógico para digital (ADC). O ADC apenas captura freqüências que são até metade da freqüência de amostragem. Por exemplo, se o ADC adquire 320 amostras por segundo, o filtro acima (com uma freqüência de corte de 160Hz) é colocado entre o sinal ea entrada ADC para evitar aliasing (que é um fenômeno onde as freqüências mais altas aparecem no sinal amostrado como Freqüências mais baixas). Filtros digitais Os filtros digitais atenuam as freqüências em software em vez de usar componentes analógicos. Sua implementação inclui amostragem dos sinais analógicos com um ADC, em seguida, aplicando um algoritmo de software. Duas abordagens de design comuns para filtragem digital são filtros FIR e filtros IIR. Os filtros Filtros de Filtros finitos de Resposta a Impulso (FIR) utilizam um número finito de amostras para gerar a saída. Uma média móvel simples é um exemplo de um filtro FIR de baixa passagem. As freqüências mais altas são atenuadas porque a média suaviza o sinal. O filtro é finito porque a saída do filtro é determinada por um número finito de amostras de entrada. Como exemplo, um filtro de média móvel de 12 pontos acrescenta as 12 amostras mais recentes, em seguida, divide-se por 12. A saída de filtros IIR é determinada por (até) um número infinito de amostras de entrada. Filtros IIR Os filtros Infinite Impulse Response (IIR) são um tipo de filtro digital onde a saída é inifinetelyin teoria de qualquer forma influenciada por uma entrada. A média móvel exponencial é um exemplo de um filtro IIR de passagem baixa. Filtro médio exponencial exponencial Uma média móvel exponencial (EMA) aplica pesos exponenciais a cada amostra para calcular uma média. Embora isso pareça complicado, a equação conhecida em linguagem de filtragem digital como a equação de diferença para calcular a saída é simples. Na equação abaixo, y é a saída x é a entrada e alfa é uma constante que define a freqüência de corte. Para analisar como esse filtro afeta a freqüência da saída, a função de transferência do domínio Z é usada. A resposta de magnitude é mostrada abaixo para alfa igual a 0,5. O eixo dos e é, novamente, mostrado em decibéis. O eixo dos x é logarítmico de 0,001 a pi. A freqüência do mundo real se correlaciona com o eixo x, sendo zero a tensão CC e sendo igual a metade da frequência de amostragem. Quaisquer freqüências que são maiores que metade da freqüência de amostragem serão alias. Como mencionado, um filtro analógico pode garantir que praticamente todas as freqüências no sinal digital estão abaixo da metade da freqüência de amostragem. O filtro EMA é benéfico em projetos incorporados por dois motivos. Primeiro, é fácil ajustar a freqüência de corte. Diminuir o valor do alfa diminuirá a freqüência de corte do filtro como ilustrado pela comparação do gráfico alfa 0.5 acima com o gráfico abaixo, onde alfa 0.1. Em segundo lugar, o EMA é fácil de codificar e requer apenas uma pequena quantidade de energia e memória informática. A implementação do código do filtro usa a equação de diferença. Existem duas operações de múltiplas operações e uma operação de adição para cada saída. Isso ignora as operações necessárias para arredondar matemática de ponto fixo. Somente a amostra mais recente deve ser armazenada na RAM. Isto é substancialmente menor do que o uso de um filtro de média móvel simples com N pontos que requer N operações de multiplicação e adição, bem como N amostras a serem armazenadas na RAM. O código a seguir implementa o filtro EMA usando matemática de ponto fixo de 32 bits. O código abaixo é um exemplo de como usar a função acima. Os filtros de conclusão, tanto analógicos como digitais, são parte essencial dos projetos incorporados. Eles permitem aos desenvolvedores se livrar de freqüências indesejadas ao analisar a entrada do sensor. Para que os filtros digitais sejam úteis, os filtros analógicos devem remover todas as frequências acima da metade da frequência de amostragem. Os filtros digitais IIR podem ser ferramentas poderosas no design incorporado, onde os recursos são limitados. A média móvel exponencial (EMA) é um exemplo de um filtro que funciona bem em projetos incorporados devido aos requisitos de memória e de computação baixos. Teste o filtro IIR de primeira ordem: yn alfa xn (1 - alfa) yn - 1 Como pode Eu escolho o parâmetro alpha st O IIR aproxima o melhor possível o FIR, que é a média aritmética das últimas k amostras: Onde n em k, infty), o que significa que a entrada para o IIR pode ser maior do que k e ainda Id gostaria de ter a melhor aproximação da Significa as últimas entradas k. Eu sei que o IIR tem uma resposta de impulso infinita, daí estou procurando a melhor aproximação. Eu estou feliz por uma solução analítica, seja para ou. Como esses problemas de otimização podem ser solucionados, dado o único IIR de 1ª ordem. Perguntou 6 de outubro 11 às 13:15 Precisa seguir yn alfa xn (1 - alfa) yn - 1 precisamente ndash Phonon 6 de outubro 11 às 13:32 Isso é obrigado a se tornar uma aproximação muito pobre. Você pode pagar qualquer coisa mais do que um número de ordem IIR ndash leftaroundabout 6 de outubro 11 às 13:42 Você pode querer editar sua pergunta para que você não use yn para significar duas coisas diferentes, p. A segunda equação exibida poderia ler zn frac xn cdots frac xn-k1, e você pode querer dizer qual é exatamente o seu critério de cotas quanto possível, por exemplo, Você quer que o yn-znvert seja o mais pequeno possível para todos os n, ou vert yn-znvert2 para ser o menor possível para todos os n. Ndash Dilip Sarwate 6 de outubro 11 às 13:45 niaren Eu sei que este é um post antigo, então se você se lembrar: como sua função 39f39 derivou eu codificou uma coisa semelhante, mas usando as funções de transferência complexas para FIR (H1) e IIR (H2 ) E depois fazendo soma (abs (H1 - H2) 2). Eu comparei isso com sua soma (fj), mas obtive diferentes resultados resultantes. Pensei em perguntar antes de arar através da matemática. Ndash Dom Jun 7 13 às 13:47 OK, vamos tentar derivar o melhor: começar yn ampamp alpha xn (1 - alpha) yn - 1 ampamp alfa xn (1 - alfa) alfa xn-1 (1 - alfa) 2 yn - 2 ampamp alpha xn (1 - alfa) alfa xn-1 (1-alfa) 2 alfa xn-2 (1-alfa) 3 yn-3 fim para que o coeficiente de xn-m seja alfa (1-alfa) m . O próximo passo é tomar derivativos e equivaler a zero. Olhando para um enredo do derivado J para K 1000 e alfa de 0 para 1, parece que o problema (como eu configurei) é mal posado, porque a melhor resposta é alfa 0. Eu acho que há um erro aqui. A maneira como deve ser de acordo com os meus cálculos é: usar o código a seguir em MATLAB produz algo equivalente embora diferente: de qualquer forma, essas funções têm mínimo. Então, vamos assumir que realmente nos preocupamos com a aproximação sobre o suporte (comprimento) do filtro FIR. Nesse caso, o problema de otimização é apenas: Soma J2 (alfa) (alfa (1-alfa) m-frac) 2 Traçar J2 (alfa) para vários valores de K versus resultados alfa na data nas parcelas e tabela abaixo. Para K 8. alfa 0.1533333 Para K 16. alfa 0.08 Para K 24. alfa 0.0533333 Para K 32. alfa 0.04 Para K 40. alfa 0.0333333 Para K 48. alfa 0.0266667 Para K 56. alfa 0.0233333 Para K 64. alfa 0.02 Para K 72. alpha 0.0166667 As linhas tracejadas vermelhas são 1K e as linhas verdes são alfa, o valor de alfa que minimiza J2 (alfa) (escolhido de tt alfa 0: .01: 13). Há uma boa discussão sobre este problema no processamento de sinal incorporado com a arquitetura de micro-sinal. Aproximadamente entre as páginas 63 e 69. Na página 63, inclui uma derivação do filtro de média móvel recursiva exata (que Niaren deu em sua resposta), por conveniência em relação à seguinte discussão, corresponde à seguinte equação de diferença: A aproximação Que coloca o filtro na forma que você especificou exige assumindo que x aproximadamente y, porque (e cito a partir da página 68) y é a média das amostras xn. Essa aproximação nos permite simplificar a equação de diferença anterior da seguinte maneira: Configurando alfa, chegamos à sua forma original, y alfa xn (1-alfa) y, que mostra que o coeficiente que você deseja (em relação a essa aproximação) é exatamente 1 (Onde N é o número de amostras). Essa aproximação é a melhor em algum aspecto. É certamente elegante. Heres como a resposta de magnitude se compara a 44,1 kHz para N 3 e como N aumenta para 10 (aproximação em azul): Como a resposta de Peters sugere, aproximar um filtro FIR com um filtro recursivo pode ser problemático sob uma norma de mínimos quadrados. Uma ampla discussão sobre como resolver este problema em geral pode ser encontrada na tese JOSs, Técnicas para Design de Filtro Digital e Identificação do Sistema com Aplicação ao Violino. Ele defende o uso da Norma de Hankel, mas nos casos em que a resposta de fase não importa, ele também cobre o Método Kopecs, que pode funcionar bem neste caso (e usa uma norma L2). Uma ampla visão geral das técnicas na tese pode ser encontrada aqui. Eles podem produzir outras aproximações interessantes. A média móvel exponencial é um tipo de filtro IIR que é fácil de implementar em C e usa recursos mínimos. Ao contrário de uma média móvel simples, não requer uma memória RAM para armazenar amostras anteriores. Apenas tem que armazenar um valor (a média anterior). Uma média móvel exponencial é expressa como a seguinte equação: avgn (em alfa) avgn-1 (1-alfa). Implementar esta equação usando matemática de ponto flutuante é direto, mas usar variáveis ​​de ponto fixo é um pouco complicado. O trecho de código aqui usa inteiros assinados de 32 bits para a média e os valores de entrada. Os valores intermediários precisam usar matemática de 64 bits para evitar erros de transbordamento. Os valores alfa próximos a zero representam uma média pesada, enquanto um valor alfa de um não possui uma média. Na linha em que o temp0 é calculado, acredito que o fim da linha deve ser lido (65535 - alfa) Caso contrário, um alfa de 1 incluiria incorretamente a média anterior e o novo valor.

No comments:

Post a Comment