Friday 11 August 2017

5 Point Moving Average Filter Matlab


Eu preciso calcular uma média móvel em uma série de dados, dentro de um loop for. Eu tenho que obter a média móvel em N9 dias. O array Im computing in é 4 séries de 365 valores (M), que são valores médios de outro conjunto de dados. Eu quero traçar os valores médios dos meus dados com a média móvel em um gráfico. Eu pesquisei um pouco sobre as médias móveis eo comando conv e encontrei algo que eu tentei implementar no meu código. Então, basicamente, eu computo o meu médio e plotá-lo com uma média móvel (errada). Eu escolhi o valor de wts fora do site mathworks, de modo que está incorreto. (Fonte: mathworks. nlhelpeconmoving-average-trend-estimation. html) Meu problema, porém, é que eu não entendo o que este wts é. Alguém poderia explicar Se tem algo a ver com os pesos dos valores: que é inválido neste caso. Todos os valores são ponderados da mesma forma. E se eu estou fazendo isso inteiramente errado, eu poderia obter alguma ajuda com ele Meus mais sinceros agradecimentos. September 23 14 at 19:05 Usando conv é uma excelente maneira de implementar uma média móvel. No código que você está usando, wts é o quanto você está pesando cada valor (como você adivinhou). A soma desse vetor deve ser sempre igual a um. Se você deseja pesar cada valor uniformemente e fazer um filtro de tamanho N em movimento, então você gostaria de fazer Usando o argumento válido em conv resultará em ter menos valores em Ms do que você tem em M. Use o mesmo se você não se importar com os efeitos de Zero preenchimento. Se você tiver a caixa de ferramentas de processamento de sinal, você pode usar o cconv se quiser experimentar uma média móvel circular. Algo como Você deve ler a documentação conv e cconv para obter mais informações se você ainda não tem. Resposta de Frequência do Filtro de Média Corrente 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 É Uma vez que o 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 ae 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 ( Como o nome indica, o filtro de média móvel opera fazendo a média de um número de pontos a partir do sinal de entrada para produzir cada ponto no sinal de saída (0, 1, 0, 1) . Na forma de equação, isto é escrito: Onde x é o sinal de entrada, y é o sinal de saída, e M é o número de pontos na média. Por exemplo, em um filtro de média móvel de 5 pontos, o ponto 80 no sinal de saída é dado por: A Figura 15-1 mostra um exemplo de como isso funciona. O sinal em (a) é um pulso enterrado em ruído aleatório. Em (b) e (c), a ação de suavização do filtro de média móvel diminui a amplitude do ruído aleatório (bom), mas também reduz a nitidez das bordas (ruim). De todos os possíveis filtros lineares que poderiam ser usados, a média móvel produz o menor ruído para uma determinada nitidez da borda. A quantidade de redução de ruído é igual à raiz quadrada do número de pontos na média. Por exemplo, um filtro de média móvel de 100 pontos reduz o ruído em um fator de 10. Para entender por que a média móvel se a melhor solução, imagine que queremos projetar um filtro com uma nitidez de borda fixa. Por exemplo, let8217s assumir que corrigir a borda nitidez, especificando que há onze pontos no aumento da resposta passo. Isso requer que o kernel do filtro tenha onze pontos. A questão de otimização é: como podemos escolher os onze valores no kernel do filtro para minimizar o ruído no sinal de saída Como o ruído que estamos tentando reduzir é aleatório, nenhum dos pontos de entrada é especial cada um é tão ruidoso quanto seu vizinho . Portanto, é inútil dar um tratamento preferencial a qualquer um dos pontos de entrada, atribuindo-lhe um coeficiente maior no kernel do filtro. O ruído mais baixo é obtido quando todas as amostras de entrada são tratadas de forma igual, isto é, o filtro de média móvel. (Mais adiante neste capítulo mostramos que outros filtros são essencialmente tão bons. O ponto é, nenhum filtro é melhor do que a média móvel simples.) O seguinte é um filtro de média móvel simétrica ponderada ponderada de 3 pontos ponderada: Então, minhas suposições de como Um filtro de média móvel simétrica ponderada n-ponto seria função são as seguintes: Meu objetivo final é criar um filtro de média móvel simétrica ponderada que tem um número modular de pontos sobre o qual pode média. A parte que realmente me recebe é a ponderação em si, e enquanto estou certo de que um aninhado para loop de algum tipo faria o truque, eu não posso ver como eu iria até mesmo começar algo assim. Obrigado por tomar o tempo para inspecionar a minha pergunta, qualquer feedback seria muito apreciada. Escolha o seu país

No comments:

Post a Comment