A Média Móvel como um Filtro A média móvel é freqüentemente usada para suavizar dados na presença de ruído. A média móvel simples nem sempre é reconhecida como o filtro FIR (resposta ao impulso finito) que é, embora seja, na verdade, um dos filtros mais comuns no processamento de sinais. Tratar isso como um filtro permite compará-lo com, por exemplo, filtros windowed-sinc (veja os artigos sobre passa-baixa, passa-banda e filtros de rejeição de banda para exemplos deles). A principal diferença com esses filtros é que a média móvel é adequada para sinais para os quais a informação útil está contida no domínio do tempo. das quais as medições de suavização pela média são um excelente exemplo. Por outro lado, os filtros windowed-sinc são fortes no domínio da frequência. com equalização no processamento de áudio como um exemplo típico. Há uma comparação mais detalhada dos dois tipos de filtros no Domínio do Tempo versus o Desempenho do Domínio de Freqüência dos Filtros. Se você tiver dados para os quais o tempo e o domínio da frequência são importantes, convém dar uma olhada em Variações na Média Móvel. que apresenta um número de versões ponderadas da média móvel que são melhores nisso. A média móvel de comprimento (N) pode ser definida como escrita, como é tipicamente implementada, com a amostra de saída atual como a média das amostras anteriores (N). Visto como um filtro, a média móvel executa uma convolução da seqüência de entrada (xn) com um pulso retangular de comprimento (N) e altura (1 / N) (para fazer a área do pulso e, portanto, o ganho de o filtro, um). Na prática, é melhor tomar (N) ímpar. Embora uma média móvel também possa ser calculada usando um número par de amostras, usar um valor ímpar para (N) tem a vantagem de que o atraso do filtro será um número inteiro de amostras, já que o atraso de um filtro com (N) amostras é exatamente ((N-1) / 2). A média móvel pode então ser alinhada exatamente com os dados originais, deslocando-os por um número inteiro de amostras. Domínio de Tempo Como a média móvel é uma convolução com pulso retangular, sua resposta de freqüência é uma função sinc. Isso faz com que seja algo parecido com o dual do filtro windowed-sinc, já que é uma convolução com um pulso sinc que resulta em uma resposta de freqüência retangular. É essa resposta de frequência sinc que faz da média móvel um mau desempenho no domínio da frequência. No entanto, ele funciona muito bem no domínio do tempo. Portanto, é perfeito para suavizar os dados para remover o ruído e, ao mesmo tempo, manter uma resposta rápida (Figura 1). Para o típico Additive White Gaussian Noise (AWGN) que é frequentemente assumido, a média das amostras (N) tem o efeito de aumentar o SNR por um fator de (sqrt N). Como o ruído para as amostras individuais não é correlacionado, não há razão para tratar cada amostra de forma diferente. Assim, a média móvel, que dá a cada amostra o mesmo peso, eliminará a quantidade máxima de ruído para uma determinada nitidez de resposta de passo. Implementação Por ser um filtro FIR, a média móvel pode ser implementada por meio de convolução. Terá então a mesma eficiência (ou falta dela) que qualquer outro filtro FIR. No entanto, também pode ser implementado recursivamente, de uma maneira muito eficiente. Segue diretamente da definição que Esta fórmula é o resultado das expressões para (yn) e (yn1), isto é, onde notamos que a mudança entre (yn1) e (yn) é que um termo extra (xn1 / N) aparece no final, enquanto o termo (xn-N1 / N) é removido do começo. Em aplicações práticas, muitas vezes é possível deixar de fora a divisão por (N) para cada termo, compensando o ganho resultante de (N) em outro lugar. Esta implementação recursiva será muito mais rápida que a convolução. Cada novo valor de (y) pode ser calculado com apenas duas adições, em vez das adições (N) que seriam necessárias para uma implementação direta da definição. Uma coisa a ser observada com uma implementação recursiva é que os erros de arredondamento se acumularão. Isso pode ou não ser um problema para seu aplicativo, mas também implica que essa implementação recursiva funcionará melhor com uma implementação de número inteiro do que com números de ponto flutuante. Isso é bastante incomum, já que uma implementação de ponto flutuante é geralmente mais simples. A conclusão de tudo isso deve ser que você nunca deve subestimar a utilidade do filtro de média móvel simples em aplicativos de processamento de sinal. Ferramenta de Design de Filtro Este artigo é complementado com uma ferramenta de Design de Filtro. Experimente com valores diferentes para (N) e visualize os filtros resultantes. Experimente agora29 Setembro, 2013 Média móvel por convolução O que é a média móvel e o que é bom para Como a média móvel é feita usando a convolução A média móvel é uma operação simples usada normalmente para suprimir o ruído de um sinal: definimos o valor de cada ponto para a média dos valores em sua vizinhança. Por uma fórmula: Aqui x é a entrada e y é o sinal de saída, enquanto o tamanho da janela é w, suposto ser ímpar. A fórmula acima descreve uma operação simétrica: as amostras são obtidas de ambos os lados do ponto real. Abaixo está um exemplo da vida real. O ponto em que a janela é colocada, na verdade, é vermelho. Os valores fora de x devem ser zeros: para brincar e ver os efeitos da média móvel, dê uma olhada nesta demonstração interativa. Como fazer isso por convolução Como você pode ter reconhecido, o cálculo da média móvel simples é semelhante à convolução: em ambos os casos, uma janela é deslizada ao longo do sinal e os elementos na janela são resumidos. Então, tente fazer a mesma coisa usando convolução. Use os seguintes parâmetros: A saída desejada é: Como primeira abordagem, vamos tentar o que obtemos convolvendo o sinal x pelo seguinte k kernel: A saída é exatamente três vezes maior que o esperado. Também pode ser visto que os valores de saída são o resumo dos três elementos na janela. É porque durante a convolução a janela é deslizada, todos os elementos nela são multiplicados por um e então resumidos: yk 1 cdot x 1 cdot x 1 cdot x Para obter os valores desejados de y. a saída deve ser dividida por 3: Por uma fórmula incluindo a divisão: Mas não seria ótimo fazer a divisão durante a convolução? Aqui vem a idéia reorganizando a equação: Então vamos usar o seguinte k kernel: Desta forma nós iremos obter a saída desejada: Em geral: se quisermos fazer média móvel por convolução tendo um tamanho de janela de w. usaremos o seguinte k kernel: Uma função simples que faz a média móvel é: Um exemplo de uso é: Usando o MATLAB, como posso encontrar a média móvel de 3 dias de uma coluna específica de uma matriz e acrescentar a média móvel a essa matriz Eu estou tentando calcular a média móvel de 3 dias de baixo para cima da matriz. Eu forneci o meu código: Dada a seguinte matriz e máscara: Eu tentei implementar o comando conv, mas estou recebendo um erro. Aqui está o comando conv que venho tentando usar na segunda coluna da matriz a: A saída que desejo é dada na seguinte matriz: Se você tiver alguma sugestão, eu agradeceria muito. Obrigado Para a coluna 2 da matriz a, estou calculando a média móvel de 3 dias da seguinte maneira e colocando o resultado na coluna 4 da matriz a (renomeiei a matriz a como 39desiredOutput39 apenas para ilustração). A média de 3 dias de 17, 14, 11 é 14 a média de 3 dias de 14, 11, 8 é 11 a média de 3 dias de 11, 8, 5 é 8 e a média de 3 dias de 8, 5, 2 é 5. Não há valor nas duas linhas inferiores da quarta coluna porque o cálculo da média móvel de três dias começa na parte inferior. A saída 39valid39 não será mostrada até pelo menos 17, 14 e 11. Espero que isso faça sentido ndash Aaron Jun 12 13 at 1:28 Em geral, ajudaria se você mostrasse o erro. Nesse caso, você está fazendo duas coisas erradas: primeiro, sua convolução precisa ser dividida por três (ou o comprimento da média móvel). Segundo, observe o tamanho de c. Você não pode simplesmente encaixar c em um. A maneira típica de obter uma média móvel seria usar o mesmo: mas isso não parece com o que você quer. Em vez disso, você é forçado a usar algumas linhas:
No comments:
Post a Comment