Friday 7 July 2017

Mudar Média Janela Tamanho


Estou tentando suavizar meus pontos de dados de tempo discreto usando o método de WMA. Atualmente, estou usando n como o tamanho da janela e a matriz de pesos,. Se o valor y de cada ponto é irrelevante, eu posso simplesmente escolher aleatoriamente o meu tamanho n. No entanto, no meu caso, espero reservar os valores originais dos pontos de dados na melhor medida. Assim, não consigo escolher uma grande janela que faça a média de tudo para o apartamento. Minha freqüência de corte. É 3Hz e a taxa de amostragem é de 50Hz. Como posso escolher o tamanho da janela n Obrigado antecipadamente A janela satisfaz o que significa que o ganho do filtro médio móvel correspondente é 1 em DC. Para determinar a frequência de corte, precisamos calcular a resposta de frequência da janela: depois de alguma álgebra que você recebe. Agora você precisa encontrar o valor de N para o qual a magnitude de (1) na freqüência de corte thetac2pifrac se torna 1sqrt (-3dB). Como N deve ser inteiro, você não pode obter qualquer freqüência de corte desejada, mas o corte especificado é alcançado aproximadamente por N9, para o qual W (e) 0.698 (-3.13dB). Esta é exatamente a janela que eu assumi que você estaria usando. Agora também inclui o fator de normalização que eu sugeri. Então, a resposta está correta como está. Se você está satisfeito com isso, aceite a resposta (clicando no botão marca de seleção) para mostrar que sua pergunta foi respondida de forma satisfatória. Ndash Matt L. 14 de junho 13 às 8: 48Nas estatísticas, uma média móvel simples é um algoritmo que calcula a média não ponderada das últimas n amostras. O parâmetro n geralmente é chamado de tamanho da janela, porque o algoritmo pode ser pensado como uma janela que desliza sobre os pontos de dados. Ao usar uma formulação recursiva do algoritmo, o número de operações necessárias por amostra é reduzido a uma adição, uma subtração e uma divisão. Uma vez que a formulação é independente do tamanho da janela n. A complexidade de tempo de execução é O (1). Isto é, constante. A fórmula recursiva da média móvel não ponderada é, onde média é a média móvel e x representa um ponto de dados. Assim, sempre que a janela desliza para a direita, um ponto de dados, a cauda, ​​deixa cair e um ponto de dados, a cabeça, se move. Implementação Uma implementação da média móvel simples deve levar em consideração a inicialização Algoritmo desde que A janela não está totalmente preenchida com valores, a fórmula recursiva falha. Armazenamento O acesso ao elemento da cauda é necessário, o que, dependendo da implementação, requer um armazenamento de n elementos. Minha implementação usa a fórmula apresentada quando a janela está totalmente preenchida com valores e, de outro modo, muda para a fórmula, que atualiza a média ao recalcular a soma dos elementos anteriores. Observe que isso pode levar a instabilidades numéricas devido à aritmética de ponto flutuante. No que diz respeito ao consumo de memória, a implementação usa iteradores para acompanhar os elementos da cabeça e da cauda. Isso leva a uma implementação com constantes requisitos de memória independentes do tamanho da janela. Aqui está o procedimento de atualização que desliza a janela para a direita. Em. NET, a maioria das coleções invalida seus enumeradores quando a coleção subjacente é modificada. A implementação, no entanto, depende de enumeradores válidos. Especialmente em aplicações baseadas em streaming, a coleção subjacente precisa ser modificada quando um novo elemento chegar. Uma maneira de lidar com isso é criar uma coleção de tamanho fixo circular simples de tamanho n1 que nunca invalida seus iteradores e, alternativamente, adicione um elemento e chame Shift. Gostaria de descobrir como implementar isso, pois a função Test é muito confusa para mim. Preciso converter dados em Array, então execute SMA SMA SMA novo (20, matriz) para um SMA de 20 períodos Como faço para lidar Função shift () É necessário implementar construtores. (Desculpe pela confusão). Não, você não precisa converter seus dados em uma matriz, desde que seus dados implemente IEnumerable1 e o tipo enumerado seja duplo. No que diz respeito à sua mensagem privada, você precisa converter o DataRow em algo que é enumerável de valores duplos. Sua abordagem funciona. Shift, desliza a janela para uma posição para a esquerda. Para um conjunto de dados de dizer 40 valores e um SMA de 20 períodos, você tem 21 posições em que a janela se encaixa (40 8211 20 1). Cada vez que você chama Shift (), a janela é movida para a esquerda por uma posição e Average () retorna o SMA para a posição atual da janela. Ou seja, a média não ponderada de todos os valores dentro da janela. Além disso, minha implementação permite calcular o SMA mesmo se a janela não estiver totalmente preenchida no início. Então, na essência, espero que isso ajude. Qualquer outra questão AVISO DE COPYRIGHT Christoph Heindl e cheind. wordpress, 2009-2012. O uso não autorizado e a duplicação deste material sem permissão expressa e escrita deste autor de blogs e do proprietário são estritamente proibidos. Excertos e links podem ser usados, desde que seja dado crédito completo e claro a Christoph Heindl e a cheind. wordpress com orientação apropriada e específica para o conteúdo original. Posts recentes Não tenho certeza da solução correta, porém, uma vez que a soma da média de cada amostra apresentaria uma quantidade razoável de erro de arredondamento. Hmm. Eu me pergunto se separar a parte fracionária de toda a parte ajudaria. Divida toda a parte de cada número pela contagem. Mantenha três somas correntes: 1) A média das partes inteiras, 2) O restante de cada divisão, e 3) A parte fracionada de cada número. Cada vez que a parte inteira de um número é dividida, todo o resultado da peça é adicionado à soma de execução média e o restante é adicionado ao restante da soma em execução. Quando a soma de execução restante obtém um valor maior ou igual à contagem, é dividido pela contagem com o resultado da parte inteira adicionado à soma de execução média e o restante adicionado à soma de execução restante. Além disso, em cada cálculo, a parte fracionada é adicionada à soma de rotura fracionada. Quando a média é concluída, a soma de execução restante é dividida pela contagem e o resultado é adicionado à soma de execução média como um número flutuante. Por exemplo: agora o que fazer com a soma de fluxo fracionada. O perigo de transbordar é muito menos provável aqui, embora ainda seja possível, de modo que uma maneira de lidar com isso seria dividir a soma de execução fracionada pela contagem no final e adicioná-la ao nosso resultado: uma alternativa seria verificar a operação fracionada Soma em cada cálculo para ver se é maior ou igual a contar. Quando isso acontece, faça o mesmo que fazemos com o restante da soma corrente. Excelente Jomit Vaghela 6-Mar-07 21:00 Eu gostei do que você disse que pequenos empregos rapidamente se transformam em grandes empregos. Pensar na otimização enquanto a codificação é uma boa prática. Grande esforço e explicação,

No comments:

Post a Comment