Filtro Recursivo Algoritmo Móvel Médio


O Guia de cientistas e engenheiros para processamento de sinal digital Por Steven W. Smith, Ph. D. Capítulo 15: Filtros médios móveis Parentes do filtro de média móvel Em um mundo perfeito, os designers de filtros só precisam lidar com informações codificadas no domínio do tempo ou no domínio da freqüência, mas nunca uma mistura dos dois no mesmo sinal. Infelizmente, existem algumas aplicações em que ambos os domínios são simultaneamente importantes. Por exemplo, sinais de televisão se enquadram nesta categoria desagradável. As informações de vídeo são codificadas no domínio do tempo, ou seja, a forma da forma de onda corresponde aos padrões de brilho na imagem. No entanto, durante a transmissão, o sinal de vídeo é tratado de acordo com sua composição de freqüência, como sua largura de banda total, como as ondas de suporte para cor de amplificador de som são adicionadas, restauração de amplificação de eliminação do componente de CC, etc. Como outro exemplo, interferência eletromagnética É melhor entendido no domínio de freqüência, mesmo que a informação de sinais seja codificada no domínio do tempo. Por exemplo, o monitor de temperatura em uma experiência científica pode estar contaminado com 60 hertz das linhas de energia, 30 kHz de uma fonte de alimentação de comutação ou 1320 kHz de uma estação de rádio AM local. Parentes do filtro de média móvel têm melhor desempenho de domínio de freqüência e podem ser úteis nestas aplicações de domínio misto. Os filtros médios móveis de passagem múltipla envolvem passar o sinal de entrada através de um filtro médio móvel duas ou mais vezes. A Figura 15-3a mostra o kernel geral do filtro resultante de uma, duas e quatro passagens. Duas passagens equivalem a usar um kernel de filtro triangular (um kernel de filtro retangular convolvido com ele próprio). Após quatro ou mais passagens, o kernel de filtro equivalente parece um Gaussiano (lembre-se do Teorema do Limite Central). Conforme mostrado em (b), as passagens múltiplas produzem uma resposta de passo em forma de S, em comparação com a linha reta da única passagem. As respostas de freqüência em (c) e (d) são dadas pela Eq. 15-2 multiplicado por si mesmo por cada passagem. Ou seja, cada vez que a convolução do domínio resulta em uma multiplicação dos espectros de freqüência. A Figura 15-4 mostra a resposta de freqüência de dois outros familiares do filtro de média móvel. Quando um Gaussiano puro é usado como um kernel de filtro, a resposta de freqüência também é gaussiana, conforme discutido no Capítulo 11. O gaussiano é importante porque é a resposta de impulso de muitos sistemas naturais e manmade. Por exemplo, um breve pulso de luz entrando em uma longa linha de transmissão de fibra óptica sairá como um pulso gaussiano, devido aos diferentes caminhos captados pelos fótons dentro da fibra. O kernel de filtro gaussiano também é usado extensivamente no processamento de imagens porque possui propriedades únicas que permitem rápidas ondulações bidimensionais (ver Capítulo 24). A segunda resposta de freqüência na Fig. 15-4 corresponde ao uso de uma janela Blackman como kernel de filtro. (A janela do termo não tem significado aqui é simplesmente parte do nome aceito desta curva). A forma exata da janela Blackman é dada no Capítulo 16 (Eq. 16-2, Fig. 16-2) no entanto, parece muito com um gaussiano. Como estes parentes do filtro de média móvel melhor do que o filtro de média móvel em si. Três maneiras: primeiro e mais importante, esses filtros têm melhor atenuação de parada do que o filtro de média móvel. Em segundo lugar, os grãos de filtro se afilam a uma amplitude menor perto das extremidades. Lembre-se de que cada ponto no sinal de saída é uma soma ponderada de um grupo de amostras da entrada. Se o kernel do filtro diminui, as amostras no sinal de entrada que estão mais distantes recebem menos peso do que as próximas. Em terceiro lugar, as respostas passo a passo são curvas suaves, em vez da linha direta abrupta da média móvel. Estes últimos dois geralmente são de benefício limitado, embora você possa encontrar aplicativos onde eles são vantagens genuínas. O filtro de média móvel e seus parentes são quase iguais em reduzir o ruído aleatório enquanto mantém uma resposta passo a passo. A ambigüidade reside na forma como o tempo de subida da resposta passo é medido. Se o tempo de subida for medido de 0 a 100 da etapa, o filtro médio móvel é o melhor que você pode fazer, como mostrado anteriormente. Em comparação, medir o tempo de subida de 10 a 90 torna a janela Blackman melhor do que o filtro de média móvel. O argumento é que isso é apenas dificuldades teóricas consideram esses filtros iguais neste parâmetro. A maior diferença nesses filtros é a velocidade de execução. Usando um algoritmo recursivo (descrito em seguida), o filtro de média móvel funcionará como um raio em seu computador. Na verdade, é o filtro digital mais rápido disponível. Várias passagens da média móvel serão correspondentemente mais lentas, mas ainda muito rápidas. Em comparação, os filtros gaussianos e negros são incrivelmente lentos, porque devem usar convolução. Acho um fator de dez vezes o número de pontos no kernel do filtro (com base na multiplicação sendo cerca de 10 vezes mais lento do que a adição). Por exemplo, espere que um gaussiano de 100 pontos seja 1000 vezes mais lento que uma média móvel usando recursão. Guia de cientistas e engenheiros para processamento de sinal digital Por Steven W. Smith, Ph. D. Uma tremenda vantagem do filtro de média móvel é que ele pode ser implementado com um algoritmo que é muito rápido. Para entender esse algoritmo, imagine passar 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, veja como dois pontos de saída adjacentes, y 50 e y 51 são calculados: 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 é: Uma vez que 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 podem ser encontrados com apenas uma única adição e subtração por ponto. Isso pode ser expresso na equação: Observe que esta equação usa duas fontes de dados para calcular cada ponto na saída: pontos da entrada e pontos previamente calculados da saída. Isso é chamado de equação recursiva, o que significa que o resultado de um cálculo é usado em cálculos futuros. (O termo recursivo também tem outros significados, especialmente em ciência da computação). O Capítulo 19 discute uma variedade de filtros recursivos com mais detalhes. Esteja ciente de que o filtro recursivo médio móvel é muito diferente dos filtros recursivos típicos. Em particular, a maioria dos filtros recursivos tem uma resposta de impulso infinitamente longa (IIR), composta de sinusoides e exponenciais. A resposta de impulso da média móvel é um pulso retangular (resposta de impulso finito, ou FIR). Este algoritmo é mais rápido do que outros filtros digitais por vários motivos. Primeiro, existem apenas dois cálculos por ponto, independentemente do comprimento do kernel de filtro. Em segundo lugar, a adição e a subtração são as únicas operações matemáticas necessárias, enquanto a maioria dos filtros digitais requer uma multiplicação demorada. Em terceiro lugar, o esquema de indexação é muito simples. Cada índice na Eq. 15-3 é encontrado por adicionar ou subtrair constantes inteiras que podem ser calculadas antes do início da filtragem (ou seja, p e q). Além disso, todo o algoritmo pode ser realizado com representação inteira. Dependendo do hardware utilizado, os números inteiros podem ser mais do que uma ordem de grandeza mais rápida que o ponto flutuante. Surpreendentemente, a representação de números inteiros funciona melhor do que o ponto flutuante com esse algoritmo, além de ser mais rápido. O erro de arredondamento da aritmética de ponto flutuante pode produzir resultados inesperados se você não for cuidadoso. Por exemplo, imagine um sinal de 10 000 amostras sendo filtrado com este método. A última amostra no sinal filtrado 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 de derivação. Inteiros não têm esse problema porque não há 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 dupla precisão para eliminar essa deriva. Em 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. Postagens recentes

Comments

Popular Posts