Thursday, 29 August 2019

Moving average array


Seu interior está iterando toda a matriz de modo que é por isso que você sempre obter a mesma média de um para toda a matriz, você deve iterar de 0 para o número atual do exterior para em vez. Sua média móvel está sendo atualizado com base em j de Seu interior para isso significa que irá substituir os valores anteriores de cada novo loop, isso deve ser dentro do exterior para em vez do interior usando i como index. You estão dividindo soma j para calcular médias, cada novo loop interno j você vai dividir por 0 A primeira soma que eu acredito que você pretende usar j 1 em vez disso, o índice não é o mesmo que o comprimento atual. Dicas para solucionar problemas. Evitar usando variáveis ​​para arrays de loop, você deve usar instead. For uma questão de reproduzir o problema que você poderia dar-nos o Problema isolado em vez de seu código atual ie. Imagine se o erro está em suas entradas, como poderíamos acreditar que você realmente usou them. answered Oct 4 13 at 20 54. Você está looping sobre todos os dados toda vez que você deve ter para int ji MédiaLongo i-médiaLongo 2 0 ji médiaL Ength 2 j numDataPoints j ou algo semelhante para a sua innermost average. Also, movingAverage i sum j deve ser modificado para lidar com o caso quando j é 0 Em particular, provavelmente deve ser movingAverage i soma averageLength e deve ser aplicado ao movingAverage i Slot fora da média loop. answered Oct 4 13 em 20 42.Próximo tempo, tome os comentários sobre a atribuição fora da questão antes de publicá-lo Mas, uma vez que você parece muito novo nisso, pense em como você iria passar os dados, E fazê-lo fazer Você deve tentar certificar-se de cada loop está parando no ponto correto, e lembre-se que se você parar quando não há mais números, como quando você está fazendo o loop interno e você só pode obter mais 3 números Em vez de 4 o programa tem de parar também Certifique-se de que o seu código está a verificar para this. answered Oct 4 13 at 20 56. Sem quaisquer detalhes adicionais, você provavelmente precisará de uma média móvel não ponderada Em qualquer ponto A i na matriz de entrada A de comprimento N com 0 i N, que s Simplesmente a média das entradas K anteriores da matriz, até e incluindo A i Se aren t K tais valores, então média os i 1 valores de A 0 a A i inclusive. Um pouco de pensamento irá mostrar-lhe que você Não precisa somar todos os valores de K cada vez Basta manter a soma e, ao mover para o próximo ponto esta é uma média móvel, subtrair o valor que está sendo substituído e adicionar o novo valor que irá substituí-lo Durante o primeiro K - 1 pontos, você simplesmente adicionar o novo valor para a soma e aumentar o seu contador por 1.At qualquer ponto neste processo, a média móvel é a soma atual dividido pelo valor atual count. answered Oct 4 13 at 21 05.In Uma média móvel, você precisa ter algum tipo de tamanho de janela. Seu tamanho de janela é averageLength, então ele será algo parecido com isto. O loop for começa nos dados atuais e volta pontos de dados averageLength e adiciona-os acima Você só terá Uma média móvel quando você tem você tem quando você tem pontos de dados suficientes ea média wi Ll ser a soma dividida pelo comprimento médio. Nota não testado apenas o código sudo, mas esta é a idéia. resposta Oct 4 13 at 21 05.Your Answer.2017 Stack Exchange, Inc. I sabe que isso é possível com o impulso como por. Mas eu realmente gostaria de evitar o uso de impulso Eu tenho googled e não encontrei qualquer exemplos adequados ou legíveis. 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 um exemplo de dados . Qual é a maneira mais fácil de conseguir this. I experimentei com o uso de 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ê pôde apenas tentar usar uma média móvel exponencial. Simplesmente, você faz uma variável do acumulador, e como seu código olha em cada amostra, o código atualiza o acumulador com o novo valor que você escolhe uma alfa constante que esteja entre 0 e 1, e calcular este. Você j Ust necessidade de encontrar um valor de alfa onde o efeito de uma determinada amostra só dura cerca de 1000 samples. Hmm, eu não tenho certeza que isso é adequado para você, agora que eu colocá-lo aqui O problema é que 1000 é um bonito Long window para uma média móvel exponencial Eu não tenho certeza se existe 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 rápida maneira de fazê-lo. Respondido 12 de junho 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 que 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 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 fluxo de números de ponto flutuante usando os mais recentes 1000 Números 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 parâmetro diferente de T para apoiar, por exemplo, usando um longo Longo quando totalizando 1000 s longos, um int para char s, ou um dobro ao total float s. This é um pouco defeituoso em que numsamples poderia ir passado INTMAX - se você se importa você poderia usar um unsigned long long ou usar um extra bool dados Membro para gravar quando o recipiente é preenchido pela primeira vez enquanto ciclismo numsamples ao redor da matriz melhor então renomeado algo inócuo como pos. answered 12 de junho 12 em 5 19.um assume que o operador vazio T amostra é, na verdade, operador nulo T amostra oPless Jun 8 14 at 11 52. oPless ahhh bem vislumbrado realmente eu quis dizer para que seja 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.a função traderema não funciona corretamente calcular apenas Média dos últimos Od entradas Siga o seguinte código para a função traderema EMACalculator limite, matriz EMApreviousday matriz 0 printr array multiplicador1 2 limite 1 matriz EMA array EMA 0 fechar array 1.while limitar echo EMA EMA EMA EMA EMA - EMApreviousday multiplicador1 EMApreviousday EMApreviousday EMA. Limite - retorno EMA onde limite aceitar o período de ema e array aceitar matriz de dados para cálculo ema.

No comments:

Post a Comment