Monday 28 August 2017

Tamanho Médio Da Janela Móvel


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 a 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 Eu preciso projetar um filtro médio móvel que tenha uma freqüência de corte de 7.8 Hz. Eu usei filtros de média móvel antes, mas, na medida em que eu estou ciente, o único parâmetro que pode ser alimentado é o número de pontos a serem calculados. Como isso se relaciona com uma freqüência de corte O inverso de 7,8 Hz é de 130 ms, e estou trabalhando com dados que são amostrados a 1000 Hz. Isso implica que eu deveria estar usando um tamanho médio da janela de filtro móvel de 130 amostras, ou há algo mais que eu estou faltando aqui? 18 de julho 13 às 9:52 O filtro de média móvel é o filtro usado no domínio do tempo para remover O som adicionado e também para fins de suavização, mas se você usar o mesmo filtro de média móvel no domínio de freqüência para a separação de freqüência, o desempenho será o pior. Então, nesse caso, use filtros de domínio de freqüência ndash user19373 3 de fevereiro 16 às 5:53 O filtro de média móvel (às vezes conhecido coloquialmente como um filtro de caixa) tem uma resposta de impulso retangular: Ou, afirmado de forma diferente: lembrando que uma resposta de freqüência de sistemas de tempo discreto É igual à transformação de Fourier de tempo discreto de sua resposta de impulso, podemos calcular da seguinte maneira: O que mais interessou para o seu caso é a resposta de magnitude do filtro, H (omega). Usando algumas manipulações simples, podemos obter isso de forma mais fácil de entender: isso pode não parecer mais fácil de entender. No entanto, devido à identidade do Eulers. Lembre-se que: Portanto, podemos escrever o acima como: Como eu disse anteriormente, o que você realmente está preocupado é a magnitude da resposta de freqüência. Então, podemos tomar a magnitude do acima para simplificá-lo ainda mais: Nota: Podemos soltar os termos exponenciais porque eles não afetam a magnitude do resultado e 1 para todos os valores de omega. Uma vez que xy xy para dois números complexos finitos x e y, podemos concluir que a presença dos termos exponenciais não afeta a resposta global de magnitude (em vez disso, eles afetam a resposta de fase de sistemas). A função resultante dentro dos suportes de magnitude é uma forma de um kernel Dirichlet. Às vezes, é chamado de função periódica sinc, porque se parece com a função sinc algo em aparência, mas é periodicamente. De qualquer forma, uma vez que a definição de frequência de corte é pouco especificada (ponto -3 dB -6 dB ponto primeiro sidelobe nulo), você pode usar a equação acima para resolver o que você precisa. Especificamente, você pode fazer o seguinte: Ajuste H (omega) para o valor correspondente à resposta do filtro que você deseja na freqüência de corte. Defina omega igual à frequência de corte. Para mapear uma freqüência de tempo contínuo para o domínio de tempo discreto, lembre-se de que omega 2pi frac, onde fs é a taxa de amostragem. Encontre o valor de N que lhe dá o melhor acordo entre os lados esquerdo e direito da equação. Esse deve ser o comprimento da sua média móvel. Se N é o comprimento da média móvel, então uma frequência de corte aproximada F (válida para N gt 2) na frequência normalizada Fffs é: O inverso disso é Esta fórmula é assintoticamente correta para N grande e tem cerca de 2 erros Para N2, e menos de 0,5 para N4. P. S. Depois de dois anos, aqui, finalmente, qual era a abordagem seguida. O resultado baseou-se na aproximação do espectro de amplitude MA em torno de f0 como uma parábola (série de 2ª ordem) de acordo com MA (Omega) aprox. 1 (frac - frac) Omega2 que pode ser feita mais exata perto do cruzamento zero de MA (Omega) Frac, multiplicando Omega por um coeficiente de obtenção de MA (Omega) aproximadamente 10.907523 (frac-frac) Omega2 A solução de MA (Omega) - frac 0 dá os resultados acima, onde 2pi F Omega. Todo o acima se relaciona com a frequência de corte -3dB, o assunto desta publicação. Às vezes, é interessante obter um perfil de atenuação em stop-band que é comparável ao de um filtro de passagem baixa IIR de 1ª ordem (LPF de um único pólo) com uma freqüência de corte de -3dB dada (como um LPF também é chamado de integrador vazado, Tendo um pólo não exatamente na DC, mas perto disso). De fato, tanto o MA quanto o LPR de 1ª ordem IIR têm uma inclinação de -20dBdecade na banda de parada (um precisa de um N maior do que o usado na figura, N32, para ver isso), mas enquanto o MA tem nulos espectrales no FkN e um Por um lado, o filtro IIR possui apenas um perfil 1f. Se alguém quiser obter um filtro MA com capacidades semelhantes de filtragem de ruído como este filtro IIR e corresponda às freqüências de corte 3dB para serem iguais, ao comparar os dois espectros, ele perceberia que a ondulação da faixa de parada do filtro MA termina 3dB abaixo do do filtro IIR. Para obter a mesma ondulação de banda de parada (ou seja, a mesma atenuação de potência de ruído) como o filtro IIR, as fórmulas podem ser modificadas da seguinte forma: encontrei o script Mathematica onde eu calculava o corte para vários filtros, incluindo o MA. O resultado foi baseado na aproximação do espectro MA em torno de f0 como uma parábola de acordo com o MA (Omega) Sin (OmegaN2) Sin (Omega2) Omega 2piF MA (F) aproximadamente N16F2 (N-N3) pi2. E derivando o cruzamento com 1 quadrado a partir daí. Ndash Massimo 17 jan 16 às 2:08

No comments:

Post a Comment