Sunday 10 December 2017

Moving average embedded c no Brasil


Estou tentando encontrar uma maneira de calcular uma média cumulativa em movimento sem armazenar a contagem e dados totais que é recebido até agora. I veio-se com dois algoritmos, mas ambos precisam armazenar a contagem. new média antiga contagem dados antigos próximos dados próxima contagem O problema com esses métodos é que a contagem fica maior e maior, resultando em perda de precisão na média resultante. O primeiro método usa a contagem antiga ea contagem seguinte que são obviamente 1 à parte Isso me fez pensar que talvez haja uma maneira de remover a contagem, mas infelizmente eu ainda não a encontrei. Mas me trouxe um pouco mais, resultando no segundo método, mas ainda estou contando. É possível, ou estou apenas Procurando o impossível. asked Sep 28 12 at 8 46.É possível implementar uma média móvel em C sem a necessidade de uma janela de samples. I ve descobri que eu posso otimizar um pouco, escolhendo um tamanho de janela que sa poder De dois para permitir bit-shiftin G em vez de dividir, mas não precisando de um buffer seria bom Existe uma maneira de expressar uma nova média móvel resultado apenas como uma função do antigo resultado e da nova amostra. Define um exemplo de média móvel, através de uma janela de 4 amostras para Be. Add nova amostra eA média móvel pode ser implementada recursivamente, mas para uma computação exata da média móvel você tem que lembrar a mais antiga amostra de entrada na soma ou seja, o a no seu exemplo Para um comprimento N média móvel você computar. É o sinal de saída e xn é o sinal de entrada Eq 1 pode ser escrito recursivamente as. So você sempre precisa lembrar a amostra x nN para calcular 2.As apontado por Conrad Turner, você pode usar uma janela exponencial infinitamente longa em vez , O que permite calcular a saída somente da saída anterior e da entrada atual. Mas esta não é uma média móvel não ponderada padrão, mas uma média móvel exponencialmente ponderada, onde as amostras no passado obtêm um peso menor, mas pelo menos em theo Ry você nunca esquecer nada os pesos apenas ficam menores e menores para amostras longe no passado. Eu implementei uma média móvel sem memória item individual para um programa de rastreamento GPS que eu escrevi. Começo com 1 amostra e divida por 1 para obter o avg atual. Em seguida, adicionar outra amostra e dividir por 2 para o atual avg. This continua até chegar ao comprimento da média. Cada vez depois, eu adicionar 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 pensei que iria transformar o estômago de um cara de matemática real, mas ele se torna é uma das formas aceitas de fazê-lo E funciona bem Basta lembrar que o Mais alto seu comprimento o mais lento está seguindo o que você quer seguir Isso não pode importar a maioria do tempo mas ao seguir satélites, se você for lento, a fuga poderia ser distante da posição real e olhará mau Você poderia ter uma abertura Entre os pontos sat e trailing 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 a trilha alisada dots. answered 16 de novembro de 16 às 23 03.initialize total 0, contagem de 0 cada vez vendo um novo value. Then um Uma varredura de entrada, uma contagem de incremento total, uma contagem de incremento, uma contagem total média de divisão. Esta seria uma média móvel em todas as entradas. Para calcular a média apenas sobre as últimas 4 entradas, exigiria 4 variáveis ​​de entrada, talvez copiando cada entrada para uma entrada. Variável de entrada mais antiga, então calcular a nova média móvel como a soma das 4 variáveis ​​de entrada, dividida pela 4 direita 2 seria bom se todas as entradas fossem positivas para fazer o cálculo médio. Média total e não a média móvel Como contagem fica maior o impacto de qualquer nova amostra de entrada torna-se extremamente pequeno Hilmar fevereiro 3 15 em 13 53.Sua Resposta.2017 Stack Exchange, Inc. I sei que isso é alcançável com impulso como per. But I Realmente gostaria O evitar o uso de impulso Eu tenho googled e não encontrei qualquer exemplos adequados ou legível. Basicamente eu quero acompanhar a média móvel de um fluxo em curso de um fluxo de números de ponto flutuante usando os mais recentes números 1000 como uma amostra de dados. Qual é o mais fácil Maneira de conseguir isso. Eu experimentei usando uma matriz circular, média móvel exponencial e uma média móvel mais simples e descobriu que os resultados da matriz circular adequado às minhas necessidades best. asked 12 de junho 12 em 4 38.If suas necessidades são simples, Você pode apenas tentar usar uma média móvel exponencial. Put simplesmente, você faz uma variável de acumulador, e como o código olha para cada amostra, o código atualiza o acumulador com o novo valor Você escolhe uma alfa constante que está entre 0 e 1 e Calcular isso. Você só precisa encontrar um valor de alfa onde o efeito de uma determinada amostra só dura cerca de 1000 samples. Hmm, eu não estou realmente certo de que isso é adequado para você, agora que eu colocá-lo aqui O problema é que 1000 é uma janela muito longa Para uma média móvel exponencial Eu não tenho certeza se há um alfa que iria espalhar a média sobre os últimos 1000 números, sem subfluxo no cálculo de ponto flutuante Mas se você queria uma média menor, como 30 números ou assim, este é um muito fácil E maneira rápida de fazê-lo. 12 12 em 4 44. 1 em sua postagem A média móvel exponencial pode permitir que o alfa ser variável Assim, isso permite que ele ser usado para calcular médias base de tempo, por exemplo, bytes por segundo Se o tempo desde a A última atualização do acumulador é mais de 1 segundo, você deixa o alfa ser 1 0 Caso contrário, você pode deixar o alfa ser usecs desde a última atualização 1000000 jxh 12 de junho 12 em 6 21.Basicamente eu quero seguir a média movente de um córrego em curso de um córrego De números de ponto flutuante usando os números de 1000 mais recentes como uma amostra de dados. Note que o abaixo atualiza o total como elementos como adicionado substituído, evitando costoso ON traversal para calcular a soma - necessária para a média - on demand. Total é feito um diferente Parâmetro de T para s Upport, por exemplo, usando um longo longo quando totalizando 1000 s longos, um int para char s, ou um duplo para total float s. This é um pouco falho em que numsamples poderia passar INTMAX - se você se importaria você poderia usar um unsigned long long ou Use um membro de dados bool extra para gravar quando o recipiente é preenchido pela primeira vez enquanto ciclismo numsamples em torno da matriz melhor então renomeado algo inócuo como pos. answered 12 de junho 12 em 5 19.um presume que o operador vazio T amostra é, na verdade, operador vazio T amostra oPless Jun 8 14 at 11 52. oPless ahhh bem vislumbrado realmente eu quis dizer para ser vazio operador T amostra, mas é claro que você poderia usar qualquer nota que você gostava Will fix, graças Tony D Jun 8 14 at 14 27.

No comments:

Post a Comment