Moving Average Digital Signal Processing


O cientista e engenheiros guia para processamento de sinal digital Por Steven W. Smith, Ph. D. Como o nome indica, o filtro de média móvel opera fazendo a média de um número de pontos a partir do sinal de entrada para produzir cada ponto no sinal de saída. Na forma de equação, isto é escrito: Onde está o sinal de entrada, é o sinal de saída, e M é o número de pontos na média. Por exemplo, em um filtro de média móvel de 5 pontos, o ponto 80 no sinal de saída é dado por: Como alternativa, o grupo de pontos do sinal de entrada pode ser escolhido simetricamente em torno do ponto de saída: Isto corresponde à alteração da soma em Eq . 15-1 de: j 0 a M -1, para: j - (M -1) / 2 a (M -1) / 2. Por exemplo, em um filtro de média móvel de 10 pontos, o índice, j. Pode variar de 0 a 11 (média de um lado) ou -5 a 5 (média simétrica). A média simétrica requer que M seja um número ímpar. A programação é ligeiramente mais fácil com os pontos de apenas um lado no entanto, isso produz uma mudança relativa entre os sinais de entrada e saída. Você deve reconhecer que o filtro de média móvel é uma convolução usando um kernel de filtro muito simples. Por exemplo, um filtro de 5 pontos tem o kernel do filtro: 82300, 0, 1/5, 1/5, 1/5, 1/5, 1/5, 0, 08230. Ou seja, o filtro de média móvel é uma convolução Do sinal de entrada com um impulso retangular com uma área de um. A Tabela 15-1 mostra um programa para implementar o filtro de média móvel. Processamento de sinal / Filtros digitais Os filtros digitais são, por essência, sistemas amostrados. Os sinais de entrada e saída são representados por amostras com igual distância de tempo. Os filtros de Resposta de Implusão Finita (FIR) são caracterizados por uma resposta de tempo que depende apenas de um dado número das últimas amostras do sinal de entrada. Em outros termos: uma vez que o sinal de entrada caiu para zero, a saída do filtro fará o mesmo depois de um determinado número de períodos de amostragem. A saída y (k) é dada por uma combinação linear das últimas amostras de entrada x (k i). Os coeficientes b (i) dão o peso para a combinação. Eles também correspondem aos coeficientes do numerador da função de transferência do filtro do domínio z. A figura a seguir mostra um filtro FIR de ordem N 1: Para filtros de fase linear, os valores dos coeficientes são simétricos em torno do meio e a linha de retardo pode ser dobrada em torno deste ponto médio para reduzir o número de multiplicações. A função de transferência de filtros FIR só exibe um numerador. Isso corresponde a um filtro zero total. Filtros FIR normalmente exigem pedidos de alta, na magnitude de várias centenas. Assim, a escolha deste tipo de filtros vai precisar de uma grande quantidade de hardware ou CPU. Apesar disso, uma razão para escolher uma implementação de filtro FIR é a capacidade de obter uma resposta em fase linear, o que pode ser uma exigência em alguns casos. No entanto, o fiter designer tem a possibilidade de escolher filtros IIR com uma boa linearidade de fase na passband, como os filtros Bessel. Ou para projetar um filtro allpass para corrigir a resposta de fase de um filtro padrão IIR. Filtros de média móvel (MA) Os modelos de modificação de média móvel (MA) são modelos de processo na forma: MA processos é uma representação alternativa de filtros FIR. Filtros médios Editar Um filtro que calcula a média das N últimas amostras de um sinal É a forma mais simples de um filtro FIR, com todos os coeficientes sendo iguais. A função de transferência de um filtro médio é dada por: A função de transferência de um filtro médio possui N zeros igualmente espaçados ao longo do eixo de freqüência. No entanto, o zero na DC é mascarado pelo pólo do filtro. Assim, há um lobo maior um DC que responde pela faixa de passagem do filtro. Filtros integrados-Comb (CIC) em cascata Editar Um filtro integrador-pente em cascata (CIC) é uma técnica especial para a implementação de filtros médios colocados em série. A colocação em série dos filtros médios aumenta o primeiro lobo em DC em comparação com todos os outros lóbulos. Um filtro CIC implementa a função de transferência de N filtros de média, cada um calculando a média de R M amostras. A sua função de transferência é assim dada por: Os filtros CIC são utilizados para dizimar o número de amostras de um sinal por um factor de R ou, em outros termos, para reamostrar um sinal a uma frequência mais baixa, eliminando amostras de R 1 de R. O factor M indica quanto do primeiro lóbulo é utilizado pelo sinal. O número de fases médias do filtro, N. Indica quão bem outras bandas de frequência são amortecidas, à custa de uma função de transferência menos plana em torno de DC. A estrutura do CIC permite implementar todo o sistema com apenas adicionadores e registradores, sem utilizar multiplicadores que sejam gananciosos em termos de hardware. Downsampling por um fator de R permite aumentar a resolução do sinal por log 2 (R) (R) bits. Filtros canónicos Os filtros canónicos implementam uma função de transferência de filtros com um número de elementos de atraso igual à ordem do filtro, um multiplicador por coeficiente de numerador, um coeficiente multiplicador por denominador e uma série de aditivos. Semelhantemente aos filtros ativos estruturas canônicas, este tipo de circuitos mostrou-se muito sensível aos valores dos elementos: uma pequena alteração nos coeficientes teve um grande efeito sobre a função de transferência. Aqui também, a concepção de filtros activos deslocou-se de filtros canónicos para outras estruturas, tais como cadeias de secções de segunda ordem ou filtros de salto alto. Cadeia de Secções de Segunda Ordem Editar Uma seção de segunda ordem. Muitas vezes referida como biquad. Implementa uma função de transferência de segunda ordem. A função de transferência de um filtro pode ser dividida em um produto de funções de transferência cada associado a um par de pólos e possivelmente um par de zeros. Se a ordem das funções de transferência for ímpar, então uma seção de primeira ordem deve ser adicionada à cadeia. Esta seção está associada ao pólo real e ao real zero se houver um. Direct-form 1 direct-form 2 direct-form 1 transposed direct-form 2 transposed A directa-forma 2 transposta da figura seguinte é especialmente interessante em termos de hardware necessário, bem como sinal e coeficiente de quantização. Digital Leapfrog Filters Editar Estrutura do Filtro Editar Digital leapfrog filtros baseiam-se na simulação de filtros ativos analógicos do leapfrog. O incentivo para esta escolha é herdar das propriedades de sensibilidade passband excelente do circuito ladder original. O seguinte filtro de salto baixo todo-pólo de 4ª ordem pode ser implementado como um circuito digital substituindo os integradores analógicos por acumuladores. A substituição dos integradores analógicos por acumuladores corresponde à simplificação da transformação Z para z 1 s T. Que são os dois primeiros termos da série de Taylor de z e x p (s T). Esta aproximação é boa o suficiente para filtros onde a freqüência de amostragem é muito maior do que a largura de banda do sinal. Função de Transferência Edit A representação de espaço de estado do filtro anterior pode ser escrita como: A partir deste conjunto de equações, pode-se escrever as matrizes A, B, C, D como: A partir desta representação, ferramentas de processamento de sinal como Octave ou Matlab permitem traçar A resposta de freqüência dos filtros ou para examinar seus zeros e pólos. No filtro de salto digital, os valores relativos dos coeficientes definem a forma da função de transferência (Butterworth, Chebyshev.), Enquanto que suas amplitudes estabelecem a freqüência de corte. Dividindo todos os coeficientes por um fator de dois desloca a freqüência de corte para baixo por uma oitava (também um fator de dois). Um caso especial é o Buterworth 3 ª ordem filtro que tem constantes de tempo com valores relativos de 1, 1/2 e 1. Devido a isso, este filtro pode ser implementado em hardware sem qualquer multiplicador, mas usando mudanças em seu lugar. Os modelos de auto-regressão (AR) são modelos de processo na forma: Onde u (n) é a saída do modelo, x (n) é a entrada do modelo e u (n - m) são anteriores Amostras do valor de saída do modelo. Estes filtros são chamados autoregressivos porque os valores de saída são calculados com base em regressões dos valores de saída anteriores. Os processos AR podem ser representados por um filtro de todos os pólos. Filtros ARMA Editar Os filtros de média móvel (ARMA) auto-regressivos são combinações de filtros AR e MA. A saída do filtro é dada como uma combinação linear tanto da entrada ponderada quanto das amostras de saída ponderadas: os processos ARMA podem ser considerados como um filtro IIR digital, com pólos e zeros. Os filtros AR são preferidos em muitos casos porque podem ser analisados ​​usando as equações de Yule-Walker. Os processos MA e ARMA, por outro lado, podem ser analisados ​​por equações não lineares complicadas que são difíceis de estudar e modelar. Se temos um processo AR com coeficientes de ponta-ponta a (um vetor de a (n), a (n - 1).) Uma entrada de x (n). E uma saída de y (n). Podemos usar as equações de yule-walker. Dizemos que x 2 é a variância do sinal de entrada. Tratamos o sinal de dados de entrada como um sinal aleatório, mesmo que seja um sinal determinístico, porque não sabemos qual será o valor até recebê-lo. Podemos expressar as equações de Yule-Walker como: Onde R é a matriz de correlação cruzada da saída do processo E r é a matriz de autocorrelação da saída do processo: Variance Edit Podemos mostrar que: Podemos expressar a variância do sinal de entrada como: Or , Expandindo e substituindo por r (0). Podemos relacionar a variância de saída do processo com a variação de entrada: Documentação Este exemplo mostra como usar filtros de média móvel e reamostragem para isolar o efeito de componentes periódicos da hora do dia em leituras de temperatura por hora, bem como remover ruídos de linha indesejados A partir de uma medição de tensão em malha aberta. O exemplo também mostra como suavizar os níveis de um sinal de relógio enquanto preserva as bordas usando um filtro mediano. O exemplo também mostra como usar um filtro Hampel para remover outliers grandes. Suavização de Motivação é como descobrimos padrões importantes em nossos dados enquanto deixamos de lado coisas que não são importantes (ou seja, ruído). Utilizamos a filtragem para executar esta suavização. O objetivo do alisamento é produzir mudanças lentas no valor de modo que seu mais fácil ver tendências em nossos dados. Às vezes, quando você examinar os dados de entrada, você pode desejar suavizar os dados para ver uma tendência no sinal. No nosso exemplo, temos um conjunto de leituras de temperatura em Celsius tomadas a cada hora no Aeroporto Logan para todo o mês de janeiro de 2011. Note que podemos ver visualmente o efeito que a hora do dia tem sobre as leituras de temperatura. Se você está interessado somente na variação diária da temperatura durante o mês, as flutuações de hora em hora só contribuem o ruído, que pode fazer as variações diárias difíceis de discernir. Para remover o efeito da hora do dia, gostaríamos agora de suavizar nossos dados usando um filtro de média móvel. Um filtro de média móvel Na sua forma mais simples, um filtro de média móvel de comprimento N toma a média de cada N amostras consecutivas da forma de onda. Para aplicar um filtro de média móvel a cada ponto de dados, construímos nossos coeficientes de nosso filtro de modo que cada ponto seja igualmente ponderado e contribua 1/24 para a média total. Isso nos dá a temperatura média ao longo de cada período de 24 horas. Filter Delay Note que a saída filtrada está atrasada em cerca de doze horas. Isto é devido ao fato de que nosso filtro de média móvel tem um atraso. Qualquer filtro simétrico de comprimento N terá um atraso de (N-1) / 2 amostras. Podemos contabilizar esse atraso manualmente. Extraindo Diferenças Médicas Alternativamente, também podemos usar o filtro de média móvel para obter uma melhor estimativa de como a hora do dia afeta a temperatura global. Para fazer isso, primeiro, subtraia os dados suavizados das medições de temperatura por hora. Em seguida, segmente os dados diferenciados em dias e tome a média em todos os 31 dias do mês. Extraindo Peak Envelope Às vezes, também gostaríamos de ter uma estimativa suavemente variável de como os altos e baixos de nosso sinal de temperatura mudam diariamente. Para fazer isso, podemos usar a função envelope para conectar altos e baixos extremos detectados em um subconjunto do período de 24 horas. Neste exemplo, garantimos que haja pelo menos 16 horas entre cada extrema alta e extrema baixa. Podemos também ter uma idéia de como os altos e baixos tendem tomando a média entre os dois extremos. Filtros de média móvel ponderada Outros tipos de filtros de média móvel não pesam igualmente cada amostra. Outro filtro comum segue a expansão binomial de (1 / 2,1 / 2) n Este tipo de filtro aproxima-se de uma curva normal para grandes valores de n. É útil para a filtragem de ruído de alta freqüência para pequenas n. Para encontrar os coeficientes para o filtro binomial, convolve 1/2 1/2 com si mesmo e, em seguida, convida iterativamente a saída com 1/2 1/2 um número prescrito de vezes. Neste exemplo, use cinco iterações totais. Outro filtro um pouco semelhante ao filtro de expansão gaussiano é o filtro de média móvel exponencial. Este tipo de filtro de média móvel ponderada é fácil de construir e não requer um tamanho de janela grande. Você ajusta um filtro de média móvel ponderado exponencialmente por um parâmetro alfa entre zero e um. Um valor maior de alfa terá menos suavização. Amplie as leituras durante um dia. Selecione seu Filtro Médio de Filtragem (Filtro MA) Carregando. O filtro de média móvel é um simples filtro Low Pass FIR (Finite Impulse Response) comumente usado para suavizar uma matriz de dados / sinal amostrados. Ele toma M amostras de entrada de cada vez e pegue a média dessas M-amostras e produz um único ponto de saída. É uma estrutura de LPF (Low Pass Filter) muito simples que é útil para cientistas e engenheiros para filtrar o componente ruidoso indesejado dos dados pretendidos. À medida que o comprimento do filtro aumenta (o parâmetro M) a suavidade da saída aumenta, enquanto que as transições nítidas nos dados são feitas cada vez mais sem corte. Isto implica que este filtro tem excelente resposta no domínio do tempo mas uma resposta de frequência pobre. O filtro MA executa três funções importantes: 1) Toma M pontos de entrada, calcula a média desses pontos M e produz um único ponto de saída 2) Devido à computação / cálculos envolvidos. O filtro introduz uma quantidade definida de atraso 3) O filtro age como um Filtro de Passagem Baixa (com fraca resposta de domínio de freqüência e uma boa resposta de domínio de tempo). Código Matlab: O código matlab seguinte simula a resposta no domínio do tempo de um filtro M-point Moving Average e também traça a resposta de freqüência para vários comprimentos de filtro. Time Domain Response: No primeiro gráfico, temos a entrada que está entrando no filtro de média móvel. A entrada é barulhenta e nosso objetivo é reduzir o ruído. A figura a seguir é a resposta de saída de um filtro de média móvel de 3 pontos. Pode-se deduzir da figura que o filtro de média móvel de 3 pontos não fez muito na filtragem do ruído. Aumentamos os toques do filtro para 51 pontos e podemos ver que o ruído na saída reduziu muito, o que é mostrado na próxima figura. Nós aumentamos as derivações para 101 e 501 e podemos observar que mesmo que o ruído seja quase zero, as transições são drasticamente ditas (observe a inclinação em ambos os lados do sinal e compare-as com a transição ideal da parede de tijolo em Nossa entrada). Resposta de Freqüência: A partir da resposta de freqüência pode-se afirmar que o roll-off é muito lento ea atenuação de banda de parada não é boa. Dada esta atenuação de banda de parada, claramente, o filtro de média móvel não pode separar uma banda de freqüências de outra. Como sabemos que um bom desempenho no domínio do tempo resulta em mau desempenho no domínio da freqüência, e vice-versa. Em suma, a média móvel é um filtro de suavização excepcionalmente bom (a ação no domínio do tempo), mas um filtro de passa-baixa excepcionalmente ruim (a ação no domínio da freqüência) Links externos: Livros recomendados: Sidebar preliminarI tem um intervalo de datas E uma medição em cada uma dessas datas. Eu gostaria de calcular uma média móvel exponencial para cada uma das datas. Alguém sabe como fazer isso Im novo para python. Não parece que as médias são construídas na biblioteca padrão do python, o que me parece um pouco estranho. Talvez eu não esteja procurando no lugar certo. Então, dado o seguinte código, como eu poderia calcular a média móvel ponderada de pontos de QI para datas de calendário (provavelmente há uma maneira melhor de estruturar os dados, qualquer conselho seria apreciado) perguntou 28 de janeiro às 18:01 Meu python é um Um pouco oxidado (qualquer um pode se sentir livre para editar este código para fazer correções, se eu magoar a sintaxe de alguma forma), mas aqui vai. Esta função move-se para trás, do fim da lista para o início, calculando a média móvel exponencial para cada valor trabalhando para trás até que o coeficiente de peso para um elemento seja menor do que o epsilon dado. No final da função, inverte os valores antes de retornar a lista (para que eles estão na ordem correta para o chamador). (NOTA LATERAL: se eu estava usando um idioma diferente de python, Id criar uma matriz vazia de tamanho completo primeiro e, em seguida, preenchê-lo para trás-ordem, de modo que eu não teria que inverter no final. Mas eu não acho que você pode declarar Uma grande matriz vazia em python. E em listas de python, anexar é muito menos caro do que prepending, é por isso que eu construí a lista na ordem inversa. Por favor, corrija-me se estou errado.) O argumento alfa é o fator de decaimento em cada iteração. Por exemplo, se você usou um alfa de 0,5, então o valor da média móvel de hoje seria composto dos seguintes valores ponderados: Claro, se você tem uma enorme variedade de valores, os valores de dez ou quinze dias atrás não vai contribuir muito Média ponderada de hoje. O argumento epsilon permite definir um ponto de corte, abaixo do qual você deixará de se preocupar com valores antigos (já que sua contribuição para o valor de hoje será insignificante). Youd invocar a função algo como isto: Eu não sei Python, mas para a parte de média, você quer dizer um filtro de passagem baixa exponencial decadência da forma onde alfa dt / tau, dt o timestep de O filtro, tau a constante de tempo do filtro (a variável-timestep forma deste é o seguinte, basta clipe dt / tau para não ser mais do que 1,0) Se você quiser filtrar algo como uma data, certifique-se de converter para um Quantidade de ponto flutuante como de segundos desde 1 de janeiro de 1970.

Comments

Popular posts from this blog

Binary Options Indicator Programming

Hj Roslan Forex

Formulação De Estratégia De Gráfico De Forex 15 Minutos