Tuesday 3 July 2018

Moving average recursive implementation


Eu tenho essencialmente uma matriz de valores como this. A matriz acima é simplificada demais, estou coletando 1 valor por milissegundo no meu código real e eu preciso processar a saída em um algoritmo que eu escrevi para encontrar o pico mais próximo antes de um ponto no tempo Meu A lógica falha porque no meu exemplo acima, 0 36 é o pico real, mas meu algoritmo olharia para trás e veria o último número 0 25 como o pico, pois há uma diminuição para 0 24 antes dele. O objetivo é tomar esses valores E aplicar um algoritmo para eles que irá suavizar-los um pouco para que eu tenha mais linear valores ou seja, eu d como meus resultados para ser curvy, não jaggedy. I foi dito para aplicar um filtro exponencial de média móvel para os meus valores Como posso Fazer isso É muito difícil para mim ler equações matemáticas, eu lidar muito melhor com o código. Como posso processar valores em minha matriz, aplicando um cálculo de média móvel exponencial para mesmo-los out. asked Feb 8 12 at 20 27.To computa Uma média móvel exponencial que você precisa para manter algum estado ao redor e Você precisa de um parâmetro de ajuste Isso chama para uma pequena classe supondo que você está usando o Java 5 ou posterior. Instantiar com o parâmetro de decadência que você quer pode ter ajuste deve estar entre 0 e 1 e, em seguida, use a média para filter. When ler uma página em alguns mathmatical Recorrência, tudo o que você realmente precisa saber quando transformá-lo em código é que os matemáticos gostam de escrever índices em matrizes e seqüências com subscritos Eles ve algumas outras notações, bem como, o que doesn t ajudar No entanto, o EMA é bastante simples, como você só precisa Para lembrar um valor antigo sem arrays de estado complicado required. answered Feb 8 12 at 20 42. TKKocheran Muito bonito Isn t it nice quando as coisas podem ser simples Se começar com uma nova seqüência, obter um novo averager Note que os primeiros termos no A seqüência média saltará em torno de um bit devido a efeitos de limite, mas você obtém aqueles com outras médias móveis também No entanto, uma boa vantagem é que você pode envolver a lógica de média móvel para o averager e experimentar sem perturbar t Ele resto de seu programa muito Donal Fellows Feb 9 12 em 0 06.Eu estou tendo um tempo difícil entender suas perguntas, mas vou tentar responder anyway.1 Se o algoritmo encontrado 0 25 em vez de 0 36, então é errado É errado porque ele assume um aumento ou diminuição monotônico que está sempre subindo ou sempre indo para baixo A menos que você média TODOS os seus dados, seus pontos de dados --- como você apresentá-los --- são não-lineares Se você realmente deseja encontrar o máximo Valor entre dois pontos no tempo, então corte sua matriz de tmin para tmax e encontre o máximo desse subarray.2 Agora, o conceito de médias móveis é muito simples imagine que eu tenho a seguinte lista 1 4, 1 5, 1 4, 1 5, 1 5 Eu posso suavizar isto tomando a média de dois números 1 45, 1 45, 1 45, 1 5 Observe que o primeiro número é a média de 1 5 e 1 4 segundos e primeiros números a segunda nova lista É a média de 1 4 e 1 5 terceira e segunda lista antiga a terceira lista nova a média de 1 5 e 1 4 quarto e terceiro, e assim por diante eu poderia Ter feito período de três ou quatro, ou n Observe como os dados são muito mais suave Uma boa maneira de ver as médias móveis no trabalho é ir para o Google Finance, selecione um estoque tentar Tesla Motors bastante volátil TSLA e clique em technicals na parte inferior da O gráfico Selecionar Média Móvel com um determinado período, e média móvel exponencial para comparar suas diferenças. A média móvel exponencial é apenas mais uma elaboração disto, mas pondera os dados mais antigos menos do que os novos dados esta é uma forma de polarizar o alisamento em direção à parte traseira Por favor, leia a entrada da Wikipedia. Então, isso é mais um comentário do que uma resposta, mas a pequena caixa de comentário foi apenas a pequena boa sorte. Se você está tendo problemas com a matemática, você poderia ir com uma média móvel simples em vez de exponencial Então A saída que você obtém seria o último x termos dividido por x pseudocódigo não testado. Note que você vai precisar para lidar com o início e fim partes dos dados uma vez que claramente você não pode média t os últimos 5 termos quando você está em seu ponto de dados 2 , a São formas mais eficientes de calcular esta soma de média móvel - a mais antiga, mas isso é para obter o conceito do que está acontecendo em toda a área. 41. O Guia do Cientista e do Engenheiro para o Processamento de Sinal Digital Por Steven W Smith, Ph DA vantagem tremenda do filtro de média móvel é que ele pode ser implementado com um algoritmo que é muito rápido Para entender this. algorithm, imagine passando um sinal de entrada, x, através de um filtro de média móvel de sete pontos para formar um sinal de saída , Y Agora olhe como dois pontos de saída adjacentes, y 50 e y 51, são calculados. Estes são quase os mesmos pontos de cálculo x 48 a x 53 devem ser adicionados para y 50 e novamente para y 51 Se y 50 já foi Calculado, a maneira mais eficiente de calcular y 51 é. Once y 51 foi encontrado usando y 50, então y 52 pode ser calculado a partir da amostra y 51, e assim por diante Depois que o primeiro ponto é calculado em y, todos os outros pontos Pode ser encontrado com apenas uma única adição e subtração Por ponto Isto pode ser expresso na equação. Observe que esta equação usa duas fontes de dados para calcular cada ponto nos pontos de saída a partir da entrada e pontos previamente calculados a partir da saída. Isso é chamado de equação recursiva, significando que o resultado de um O cálculo é usado em cálculos futuros O termo recursivo também tem outros significados, especialmente na ciência da computação O capítulo 19 discute uma variedade de filtros recursivos com mais detalhes Lembre-se de que o filtro recursivo médio móvel é muito diferente dos filtros recursivos típicos Em particular, Têm uma resposta de impulso infinitamente longa IIR, composta de sinusoides e exponenciais A resposta de impulso da média móvel é um impulso retangular de resposta de impulso finito, ou FIR. Este algoritmo é mais rápido que outros filtros digitais por várias razões Primeiro, há apenas dois cálculos por Ponto, independentemente do comprimento do kernel do filtro Em segundo lugar, a adição e subtração são a única matemática As operações necessárias, enquanto a maioria dos filtros digitais requerem multiplicação de tempo Terceiro, o esquema de indexação é muito simples Cada índice na Eq 15-3 é encontrado adicionando ou subtraindo constantes inteiras que podem ser calculadas antes que a filtragem comece iep e q Forth, Algoritmo pode ser realizado com a representação inteira Dependendo do hardware utilizado, inteiros podem ser mais do que uma ordem de magnitude mais rápida do que ponto flutuante. Surpreendentemente, a representação inteira funciona melhor do que ponto flutuante com este algoritmo, além de ser mais rápido O round-off Erro da aritmética de ponto flutuante pode produzir resultados inesperados se você não for cuidadoso Por exemplo, imagine um sinal de amostra de 10.000 sendo filtrado com este método A última amostra no sinal filtrada contém o erro acumulado de 10.000 adições e 10.000 subtrações Isso aparece no sinal de saída Como um deslocamento offset Os inteiros não têm esse problema porque não há nenhum erro de arredondamento na aritmética Se você deve usar ponto flutuante com este algoritmo, o programa na Tabela 15-2 mostra como usar um acumulador de precisão dupla para eliminar esta deriva. 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 de Resposta de Impulso Finito que é, enquanto é na verdade um dos filtros mais comuns no processamento de sinal. Tratar como um filtro permite compará-lo com, por exemplo, filtros de sinc de janelas Ver os artigos sobre passa-baixa, passa-alto e filtro de banda passa e filtro de rejeição de banda para exemplos daqueles. 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 de Que as medições de suavização por média é um exemplo primordial filtros Windowed-sinc, por outro lado, são fortes performers no domínio da freqüência com equalização no processamento de áudio como um exemplo típico Há am Comparação minuciosa detalhada de ambos os tipos de filtros em tempo domínio vs desempenho de domínio de freqüência de filtros Se você tiver dados para que tanto o tempo eo domínio de freqüência são importantes, então você pode querer ter um olhar Variações sobre a média móvel que apresenta um Número de versões ponderadas da média móvel que são melhores naquele. A média móvel de comprimento N pode ser definida como. a escrita como é tipicamente implementada, com a amostra de saída corrente como a média das N amostras anteriores Visto como um filtro, A média móvel executa uma convolução da sequência de entrada xn com um impulso rectangular de comprimento N e altura 1 N para fazer a área do pulso e, portanto, o ganho do filtro, um Na prática, é melhor tomar N 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, uma vez que o atraso de um filtro com N amostras é exato Y N-1 2 A média móvel pode então ser alinhada exatamente com os dados originais, deslocando-o por um número inteiro de samples. Time Domain. Since a média móvel é uma convolução com um pulso retangular, sua resposta de freqüência é uma função sinc Este Torna-o algo como o dual do filtro windowed-sinc, uma vez que é uma convolução com um pulso sinc que resulta em uma resposta de freqüência retangular. É esta resposta de freqüência sinc que faz com que a média móvel é um mau desempenho no domínio da freqüência No entanto, Ele executa muito bem no domínio do tempo Por isso, é perfeito para suavizar os dados para remover o ruído, enquanto ao mesmo tempo ainda mantendo uma resposta passo rápido Figura 1.Figura 1 Suavização com uma média móvel filter. For o típico aditivo Branco Ruído Gaussian AWGN Que é freqüentemente assumido, a média de N amostras tem o efeito de aumentar a SNR por um fator de sqrt N Como o ruído para as amostras individuais não está correlacionado, não há razão para tratar cada amostra de forma diferente Por isso, a média móvel, que dá a cada amostra o mesmo peso, vai se livrar da quantidade máxima de ruído para uma determinada nitidez de resposta passo. Porque é um filtro FIR, a média móvel pode ser implementada através de convolução. Mesma eficiência ou falta de ele como qualquer outro filtro FIR No entanto, ele também pode ser implementado recursivamente, de uma forma muito eficiente Ele segue diretamente a partir da definição that. This fórmula é o resultado das expressões de yn e yn 1, i e. Onde observamos que a mudança entre yn 1 e yn é que um termo extra xn 1 N aparece no final, enquanto que o termo x nN 1 N é removido desde o início. Nas 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ápido do que convolução Cada novo valor de y pode ser computado com apenas duas adições, em vez das adições N que seria necessário para um str Aightforward implementação da definição Uma coisa a olhar para fora com uma implementação recursiva é que os erros de arredondamento irá acumular Isso pode ou não ser um problema para o seu aplicativo, mas também implica que esta implementação recursiva vai realmente funcionar melhor com uma implementação inteira do que Com números de ponto flutuante Isso é bastante incomum, uma vez 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 simples de média móvel no processamento de sinal applications. Filter Design Tool. This artigo É complementado com uma ferramenta de Design de Filtros Experimente com valores diferentes para N e visualize os filtros resultantes Experimente agora.

No comments:

Post a Comment