Sunday, 17 December 2017

Moving average gaussian window


O guia do cientista e do coordenador para o processamento de sinal digital Por Steven W Smith, Ph D. Capítulo 15 Moving Average Filters. Relatives da média móvel Filter. In um mundo perfeito, os designers de filtro só teria que lidar com o domínio do tempo ou de domínio de freqüência codificado Infelizmente, existem algumas aplicações em que ambos os domínios são simultaneamente importantes. Por exemplo, os sinais de televisão caem nesta categoria desagradável As informações de vídeo são codificadas no domínio do tempo, isto é, na forma de A 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 a sua composição de frequência, tal como a sua largura de banda total, como as ondas portadoras para a cor do som são adicionadas, a restauração de eliminação da componente DC etc. Como outro exemplo, a interferência eletromagnética é melhor compreendida no domínio da freqüência, mesmo se a informação do sinal é codificada no 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 a partir de uma fonte de alimentação de comutação ou 1320 kHz de uma estação de rádio AM local Os 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 de média móvel de passagem múltipla envolvem a passagem do sinal de entrada através de um filtro de média móvel duas ou mais vezes. A Figura 15-3a mostra o núcleo de filtro global resultante de uma, duas e quatro passagens Duas passagens São equivalentes a usar um kernel de filtro triangular um kernel de filtro retangular convolveu consigo mesmo Depois de quatro ou mais passes, o kernel de filtro equivalente parece um Gaussian lembrar o Teorema de Limite Central Como mostrado em b, múltiplas passagens produzem uma resposta de passo em forma de s, Para a linha reta da passagem única As respostas de freqüência em c e d são dadas pela Eq. 15-2 multiplicada por si mesma para cada passe Isso é, cada vez que A convolução principal resulta em uma multiplicação dos espectros de freqüência. A Figura 15-4 mostra a resposta de freqüência de dois outros parentes 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 em Por exemplo, um breve pulso de luz que entra em uma longa linha de transmissão de fibra óptica sairá como um pulso Gaussiano, devido aos diferentes caminhos levados pelos fótons dentro A fibra O kernel de filtro gaussiano também é usado extensivamente no processamento de imagens porque possui propriedades únicas que permitem as convoluções bidimensionais rápidas veja o Capítulo 24 A segunda resposta de freqüência na Fig. 15-4 corresponde ao uso de uma janela Blackman como um kernel de filtro A janela de termo Não tem significado aqui é simplesmente parte do nome aceito desta curva A forma exata da janela de Blackman é dada no Capítulo 16 Eq. 16-2, Fig. 16-2 no entanto, Ele se parece muito com um Gaussian. How são esses 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, estes filtros têm melhor atenuação de banda de interrupção do que o filtro de média móvel Em segundo lugar, os kernels filtro cônico para um Menor amplitude 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 são dadas menos peso do que aqueles perto de Terceiro, As respostas passo são curvas suaves, ao invés da linha recta abrupta da média móvel Estes dois últimos são geralmente de benefício limitado, embora você possa encontrar aplicações onde eles são verdadeiras vantagens. O filtro de média móvel e seus parentes são todos aproximadamente o mesmo em Reduzindo o ruído aleatório enquanto mantém uma resposta de passo nítida A ambiguidade reside na forma como o tempo de subida da resposta de passo é medido Se o tempo de subida é medido de 0 a 1 00 do passo, o filtro de média móvel é o melhor que você pode fazer, como mostrado anteriormente Em comparação, medir o risetime de 10 a 90 torna a janela de Blackman melhor do que o filtro de média móvel O ponto é, isto é apenas disputas teóricas considerar estes Filtros iguais neste parâmetro. A maior diferença entre estes filtros é a velocidade de execução Usando um algoritmo recursivo descrito a seguir, o filtro de média móvel será executado como um raio no seu computador Na verdade, é o mais rápido filtro digital disponível Várias passagens da média móvel Em comparação, os filtros Gaussiano e Blackman são extremamente lentos, porque eles devem usar convolução Pense um fator de dez vezes o número de pontos no kernel do filtro baseado na multiplicação sendo cerca de 10 vezes mais lento que a adição Para Exemplo, esperamos que um Gaussiano de 100 pontos seja 1000 vezes mais lento do que uma média móvel usando recursão. Mas não é o melhor formato para o livro. Em particular, alguns dos símbolos não são renderizados corretamente. Você pode preferir ler a versão em PDF. Capítulo 8 Filtragem e Convolução. Neste capítulo, apresento um dos mais importantes e mais Idéias úteis relacionadas ao processamento do sinal O Teorema da Convolução Mas antes que possamos entender o Teorema da Convolução, temos que entender a convolução. Começarei com um exemplo simples, alisando, e nós iremos de lá. O código para este capítulo está em O repositório para este livro ver Seção 0 2 Você também pode vê-lo at.8 1 Smoothing. Figure 8 1 Preço de fechamento diário do estoque Facebook e uma média móvel de 30 dias. Suavização é uma operação que tenta remover as variações de curto prazo de Um sinal para revelar tendências de longo prazo Por exemplo, se você traçar mudanças diárias no preço de uma ação, seria ruidoso um operador de suavização poderia tornar mais fácil ver se o preço foi geralmente subindo ou descendo ao longo do tempo. A smoot comum Hing é uma média móvel, que calcula a média dos valores n anteriores, para algum valor de n. Por exemplo, a Figura 8 1 mostra o preço de fechamento diário do Facebook de 17 de maio de 2017 a 8 de dezembro de 2017 A linha cinza é Os dados brutos, a linha mais escura mostra a média móvel de 30 dias. Suavização remove as mudanças mais extremas e torna mais fácil ver as tendências de longo prazo. Operações de suavização também se aplicam aos sinais de som Como exemplo, eu vou começar com uma onda quadrada em 440 Hz Como vimos na Seção 2, os harmônicos de uma onda quadrada caem lentamente, então ele contém muitos componentes de alta freqüência. Primeiro, construirei o sinal e duas ondas. A onda é uma fatia de 1 segundo do segmento de sinal Uma fatia mais curta eu usarei para plotar. Para calcular a média móvel deste sinal, eu usarei uma janela semelhante àquela da Seção 3 7 Anteriormente usamos uma janela de Hamming para evitar vazamento espectral causado pela descontinuidade no início e no final de Um sinal Mais geralmente, nós podemos usar janelas computar A soma ponderada de amostras em uma onda. Por exemplo, para calcular uma média móvel, vou criar uma janela com 11 elementos e normalizá-lo para que os elementos somam-se a 1. Agora eu posso calcular a média dos primeiros 11 elementos multiplicando A janela pela matriz de onda. padded é uma versão da janela com zeros adicionados ao final assim que é o mesmo comprimento que adicionar zeros como isto é chamado padding. prod é o produto da janela e da disposição de onda A soma do Elementwise produtos é a média dos primeiros 11 elementos da matriz Uma vez que esses elementos são todos -1, a sua média é -1.Figura 8 2 Um sinal quadrado a 400 Hz cinza e uma média móvel de 11 elementos. Para calcular o próximo elemento Da média móvel, rolaremos a janela, que desloca as à direita e envolve um dos zeros da extremidade ao redor ao começo. Quando nós multiplicamos a janela enrolada ea disposição da onda, nós começamos a média dos próximos 11 Elementos da matriz de onda, começando com o segundo. O resultado é -1 novamente. W E pode calcular o resto dos elementos da mesma maneira A função a seguir envolve o código que vimos até agora em um loop e armazena os resultados em um array. smoothed é a matriz que irá conter os resultados preenchidos é uma matriz que contém a janela E zeros suficientes para ter comprimento N e rolou é uma cópia de acolchoado que é deslocado para a direita por um elemento cada vez através do loop. Inside o loop, nós multiplicamos ys por rolou para selecionar 11 elementos e adicioná-los up. Figure 8 2 Mostra o resultado para uma onda quadrada A linha cinzenta é o sinal original a linha mais escura é o sinal suavizado O sinal suavizado começa a aumentar quando o bordo dianteiro da janela atinge a primeira transição e nivela quando a janela cruza a transição As Um resultado, as transições são menos abruptas, e os cantos menos afiados. Se você ouvir o sinal suavizado, soa menos buzzy e um pouco abafado.8 2 Convolução. A operação que acabamos de executar aplicando uma função de janela para cada se sobreposição se Uma onda é chamada de convolução. Aconvolução é uma operação tão comum que NumPy fornece uma implementação que é mais simples e mais rápida do que a minha versão. Calcula a convolução da matriz de onda e da janela O indicador de modo válido indica que ele deve apenas calcular valores quando a janela ea matriz de onda se sobrepõem completamente, então ela pára quando a borda direita da janela chega ao fim da matriz de onda Que, o resultado é o mesmo que na Figura 8 2.Actualmente, há uma outra diferença O loop na seção anterior realmente calcula a correlação cruzada. Suavização faz as transições em um sinal quadrado menos abrupto, e faz o som um pouco abafado Vamos S ver o efeito que esta operação tem sobre o espectro Primeiro I ll traçar o espectro da onda original. Agora a onda suavizada. O indicador de modo mesmo indica que o resultado deve ter o mesmo comprimento que a entrada Neste exemplo, ele incluirá um Poucos valores que envolvem, mas que s ok para now. Figure 8 3 mostra o resultado A freqüência fundamental é quase inalterada os primeiros harmônicos são atenuados, e os harmônicos mais elevados são quase eliminados Então smoothin G tem o efeito de um filtro passa-baixo, que vimos na Seção 1 5 e Seção 4 4. Para ver quanto cada componente tem sido atenuado, podemos calcular a razão dos dois spectrums. ratio é a relação da amplitude Antes e depois do alisamento Quando os amplificadores são pequenos, esta relação pode ser grande e ruidosa, por isso, por simplicidade, ajustei a razão para 0, exceto onde os harmônicos são. Figura 8 4 Relação de espectros para a onda quadrada, antes e depois do alisamento. 4 mostra o resultado Como esperado, a relação é alta para baixas freqüências e cai fora em uma freqüência de corte perto de 4000 Hz Mas há uma outra característica que nós não esperávamos acima do corte, a relação salta em torno de 0 e 0 2 What s up with 8 O teorema da convolução. Figura 8 5 Relação de espectros para a onda quadrada, antes e depois do alisamento, juntamente com a DFT da janela de suavização. A resposta é o teorema de convolução declarado matematicamente. DFT fg DFT f DFT g. where F é uma matriz de onda e g é uma janela Em palavras, a convolução T Heorem diz que se convolvemos f e g e depois calculamos o DFT, obtemos a mesma resposta que a computação do DFT de f e g e, em seguida, multiplicando os resultados elemento-wise. When aplicar uma operação como convolução para uma onda de uma onda, Dizemos que estamos trabalhando no domínio do tempo porque a onda é uma função do tempo Quando aplicamos uma operação como a multiplicação à DFT, estamos trabalhando no domínio da freqüência porque a DFT é uma função da freqüência. Usando esses termos, podemos Mostram o Teorema da Convolução de forma mais concisa. A conversão no domínio do tempo corresponde à multiplicação no domínio da frequência. E isso explica a Figura 8 4 porque quando convolvemos uma onda e uma janela multiplicamos o espectro da onda com o espectro da janela To Ver como isso funciona, podemos calcular o DFT da janela. padded contém a janela de suavização, preenchido com zeros para ser o mesmo comprimento como onda dftwindow contém a DFT de padded. Figura 8 5 mostra o resultado, juntamente com as razões que nós calculados dentro A seção anterior As proporções são exatamente as amplitudes em dftwindow Matematicamente. abs DFT fg abs DFT f abs DFT g. Neste contexto, o DFT de uma janela é chamado de filtro Para qualquer janela de convolução no domínio do tempo, há um filtro correspondente No domínio da freqüência E para qualquer filtro que possa ser expresso pela multiplicação element-wise no domínio da freqüência, há uma janela correspondente.8 5 Filtro gaussiano. Na Seção 8 2 I apresentou definições de correlação cruzada e convolução, e vimos Que eles são quase os mesmos, exceto que em convolução a janela é invertida. Agora que temos um algoritmo eficiente para convolução, também podemos usá-lo para calcular correlações cruzadas e autocorrelações Usando os dados da seção anterior, podemos calcular a Autocorrelação Facebook preços das ações. Com o modo mesmo o resultado tem o mesmo comprimento como próximo correspondente a lags de N 2 para N 2 1 A linha cinza na Figura 8 8 mostra o resultado Excepto no atraso 0 não há picos, por isso No entanto, a função de autocorrelação cai lentamente, sugerindo que este sinal assemelha-se ao ruído rosa, como vimos na Seção 5 3. Para calcular a autocorrelação usando convolução, temos que zerar o sinal para duplicar O comprimento Esse truque é necessário porque a FFT é baseada na suposição de que o sinal é periódico que é, que ele envolve em torno do fim para o início Com dados de série de tempo como este, essa suposição é inválida Adicionando zeros e, em seguida, aparando Os resultados, remove os valores falsos. Além disso, lembre-se que a convolução inverte a direção da janela Para cancelar esse efeito, invertemos a direção da janela antes de chamar fftconvolve usando o que vira um array NumPy O resultado é uma exibição da matriz , Não uma cópia, por isso esta operação é rápida. O resultado de fftconvolve tem comprimento 2 N Dos quais, o primeiro e último N 2 são válidos os restantes são o resultado de zero-padding Para selecionar o elemento válido, r Oll os resultados e selecione o primeiro N correspondente a lags de N 2 para N 2 1.As mostrado na Figura 8 8 os resultados de fftautocorr e são idênticos com cerca de 9 dígitos de precision. Notice que as correlações na Figura 8 8 são grandes números Nós poderíamos normalizá-los entre -1 e 1 como mostrado na Seção 5 6. A estratégia que usamos aqui para a auto-correlação também funciona para a correlação cruzada Novamente, você tem que preparar os sinais, virando um e preenchendo ambos, e então você tem Para cortar as partes inválidas do resultado Este preenchimento e corte é um incômodo, mas é por isso que as bibliotecas como NumPy fornecem funções para fazê-lo para você.8 8 Exercícios. Soluções para estes exercícios estão in. Exercice 1 O caderno para este capítulo é Leia-o e execute o código. Ele contém um widget interativo que lhe permite experimentar com os parâmetros da janela gaussiana para ver o efeito que eles têm sobre a freqüência de corte. O que vai mal quando você aumenta a largura do Gaussiano, std, sem Aumentando O número de elementos na janela, M. Exercício 2 Neste capítulo eu aleguei que a transformada de Fourier de uma curva gaussiana é também uma curva gaussiana Para transformadas discretas de Fourier, essa relação é aproximadamente verdadeira. Tente-a para alguns exemplos O que acontece Para a transformada de Fourier conforme você varia std. Exercício 3 Se você fez os exercícios no Capítulo 3, você viu o efeito da janela de Hamming, e algumas das outras janelas fornecidas pelo NumPy, no vazamento espectral Podemos obter algumas informações sobre o efeito Dessas janelas, olhando para suas DFTs. In para além da janela gaussiana que usamos neste capítulo, criar uma janela de Hamming com o mesmo tamanho Zero-pad as janelas e traçar suas DFTs Qual janela funciona como um melhor filtro passa-baixo Você pode Acho útil traçar as DFTs em uma escala de log. Experiment com algumas janelas diferentes e alguns tamanhos diferentes. Você está usando um de nossos livros em uma classe. Gostaríamos de saber sobre isso Por favor considere preencher este curto Pesquisas sobre o Mo O filtro de média móvel é mais ou menos perfeito para suavizar dados na presença de ruído, se a informação útil em seus dados estiver completamente no domínio do tempo. Nesse caso, você não se preocupa com o seu desempenho bastante fraco no Freqüência A Figura 1 mostra as respostas de impulso, passo e freqüência do filtro de média móvel básica com três amostras extras em ambos os lados que não fazem parte das respostas de impulso e de passo, para maior clareza. Figura 1 Impulso à esquerda, passo médio e Freqüência respostas corretas para o moving-average. Sometimes, no entanto, você tem que trabalhar com dados para que ambos os domínios são importantes para aqueles casos, existem versões ponderadas da média móvel que são mais ou menos equivalentes no domínio do tempo, mas que Têm muito melhor desempenho no domínio de freqüência. Média móvel repetido. A primeira coisa que você pode fazer para melhorar a resposta de freqüência da média móvel é aplicá-lo várias vezes. Após duas repetições, isso equivale a Uma ponderação triangular dos coeficientes Figura 2 Uma vez que aplicar o mesmo filtro duas vezes duplica seu efeito, o primeiro lobo lateral da resposta de freqüência é apenas metade da altura da Figura 1. A razão para a forma triangular é que a média móvel é um Convolução com um pulso retangular Aplicando-o duas vezes provoca uma convolução deste pulso retangular com ele mesmo, resultando em uma janela triangular para o filtro combinado Observe que eu tomei o mesmo comprimento de filtro na Figura 2, deslocando assim o primeiro zero de A resposta de freqüência Uma verdadeira convolução do filtro retangular original teria resultado em um filtro mais longo e teria mantido os zeros exatamente no mesmo lugar, é claro. Figura 2 Impulso à esquerda, passo médio e respostas de freqüência direita para a janela triangular. Se o filtro de média móvel for repetido várias vezes, seus coeficientes convergem para uma janela gaussiana. Figura 3 por causa do teorema do limite central. Naturalmente, um Gauss real Ian se estende infinitamente em ambas as direções, de modo que não há outra opção senão cortá-la em algum ponto ou talvez multiplicá-la por uma segunda janela. Além disso, o desvio padrão do Gaussiano deve ser escolhido para esta ilustração e para a implementação do Filter Designer, adotei as configurações padrão de MATLAB. Figura 3 Impulso à esquerda, passo médio e freqüência respostas à direita para a janela gaussiana. Em prática, você pode querer simplesmente repetidamente aplicar a média móvel em vez de aplicar uma janela gaussiana Quando implementado recursivamente , A média móvel é muito eficiente, enquanto a janela gaussiana deve ser implementada através de convolução. Blackman janela. Uma outra possibilidade é escolher uma das funções de janela clássica que são usados ​​para filtros de sinc-window, e usar isso como um kernel de filtro ver o excelente Página de Wikipedia em funções de janela Como exemplo, eu escolhi a janela de Blackman Figura 4 Isto melhora ainda mais a atenuação de banda de parada, enquanto s Até mostrando uma resposta de domínio de tempo suave, sem qualquer toque ou overshoot. Figura 4 Impulso à esquerda e respostas de freqüência direita para a janela de Blackman. Em conclusão, se você precisa suavizar os dados, mas precisa de um melhor desempenho de freqüência do que a média móvel básica tem para oferecer, Várias alternativas estão disponíveis. Filter Design Tool. This artigo é complementado com uma ferramenta Filter Design Experiment com as diferentes funções de janela eo comprimento do filtro, e ver o efeito sobre a resposta de freqüência Tente agora.

No comments:

Post a Comment