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 do que uma média móvel usando recursão. Eu tenho um intervalo de datas e uma medida 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, eu sou novo no python. Não parece que as médias estejam incorporadas na biblioteca padrão do Python, o que me parece um pouco estranho. Talvez eu não esteja olhando no lugar certo. Então, dado o código a seguir, como eu poderia calcular a média ponderada em movimento de pontos de QI para datas de calendário (provavelmente há uma maneira melhor de estruturar os dados, qualquer conselho seria apreciado), perguntou Jan 28 09 às 18:01 Meu python é um Um pouco enferrujado (qualquer pessoa pode se sentir livre para editar este código para fazer correções, se Ive estragou a sintaxe de alguma forma), mas aqui vai. Esta função move-se para trás, desde o final da lista até o início, calculando a média móvel exponencial para cada valor, trabalhando para trás até que o coeficiente de peso de um elemento seja menor que o dado epsilon. No final da função, inverte os valores antes de retornar a lista (para que eles estejam na ordem correta para o chamador). (NOTA LATERAL: se eu estivesse usando um idioma diferente de Python, Id crie uma matriz vazia em tamanho real primeiro e depois preencha-a para trás, de modo que eu não precisaria reverter no final. Mas eu não acho que você possa declarar Uma grande disposição vazia em python. E nas listas de python, o adendo é muito menos caro do que o anterior, e é por isso que eu criei a lista na ordem inversa. Por favor, corrija-me se eu estiver 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 médio móvel de hoje seria composto pelos seguintes valores ponderados: Claro que, se você tiver uma enorme variedade de valores, os valores de dez ou quinze dias não contribuirão muito para Média ponderada de hoje. O argumento epsilon permite que você defina 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). Você invocou a função de algo assim: respondeu Jan 28 09 às 18:46. Não conheço Python, mas para a parte de média, você quer dizer um filtro de passagem baixa exponencialmente decadente da forma em que o dttau alfa, o tempo real do filtro , Tau a constante de tempo do filtro (a forma variável de timestep é a seguinte, basta digitar o dttau para não ser superior a 1,0) Se você quiser filtrar algo como uma data, certifique-se de converter uma quantidade de ponto flutuante Como em segundos desde 1 de janeiro de 1970. respondeu Jan 28 09 às 18:10 Achei o trecho de código acima por earino bastante útil - mas eu precisava de algo que poderia suavizar continuamente um fluxo de valores - então eu o reflitava para isso: e eu uso Como isto: (onde pin. read () produz o próximo valor Id como consumir). Respondeu 12 de fevereiro às 20:35 Estou sempre calculando EMAs com Pandas: Aqui está um exemplo de como fazê-lo: Mais informações sobre Pandas EWMA: respondidas em 4 de outubro às 12:42 Don39t versões mais recentes de Pandas têm novas e melhores funções. Ndash Cristian Ciupitu 11 de maio 16 às 14:10 Note que, ao contrário de sua planilha, não calculo o SMA, e não espero para gerar o EMA após 10 amostras. Isso significa que meus valores diferem ligeiramente, mas se você apresentá-lo, segue exatamente após 10 amostras. Durante as primeiras 10 amostras, o EMA I calculado é adequadamente alisado. Eu li em muitos lugares que a medição móvel é um pouco melhor do que a média móvel para algumas aplicações, porque é menos sensível aos valores atípicos. Eu queria testar essa afirmação em dados reais, mas não consigo ver esse efeito (verde: mediana, vermelha: média). Veja aqui: tentei com vários valores para a largura da janela (aqui no código 1000) e sempre foi o mesmo: a mediana móvel não é melhor do que a média móvel (ou seja, não menos sensível a outliers). O mesmo com a largura da janela 10000 (10000 a largura da espiga). Você pode fornecer um exemplo mostrando que a mediana móvel é menos sensível a valores esporádicos do que a média móvel e, se possível, usando a amostra. WAV file data-set (download link). Isto é, é possível fazer uma mediana móvel nesses dados, de modo que o resultado seja como esta curva amarela (ou seja, não mais pico). Isso não é realmente uma resposta, mas pensei que ID informasse o que eu vi e pedi mais informações. Eu carreguei seu arquivo test. wav e eu posso ver o sinal traçado abaixo. Então, o que você está recebendo nas parcelas que mostra não é tanto o valor médio, mas é mais como um envelope do sinal. A segunda questão é que o sinal realmente parece ser parte do sinal. Se eu aumentar o zoom, então é isso que eu vejo: o que você realmente está tentando alcançar Obrigado pelo feedback. Abaixo está um código R que faz o seguinte: carrega o arquivo wav. Toma o valor absoluto do sinal (é carregado no canal esquerdo pela biblioteca waveR). Executa um filtro de média móvel de 100 comprimento nos dados para obter algo mais próximo do envelope (sinal vermelho). Em seguida, aplica um filtro médio de comprimentos 201, 2001 e 4001 ao resultado (sinal azul). A partir do gráfico abaixo, o melhor desempenho é o 4001 de comprimento. Caso contrário, o efeito da falha ainda está presente. O único que posso ver agora é que o envelope não corresponde ao verdadeiro envelope, bem como a Id. Um melhor detector de envelope pode melhorar isso (por exemplo, o sinal analítico ou tal). Abaixo está um gráfico do envelope calculado mediano filtrado sobreposto no sinal original. Obrigado pelo tempo que você gastou nesta questão. Na verdade, planejei a mediana e a média do valor absoluto do sinal. E sim, isso dá uma idéia do envelope, isso é o que eu quero. O que eu esperava (graças à mediana em vez de significar) era algo assim. Captura de tela. Infelizmente, independentemente da largura da janela para a mediana. O pico está sempre aqui. Enquanto muitos documentos dizem quotthe mediana tem a vantagem de reduzir o efeito de valores outrais. Ndash Basj 30 de novembro 15 às 14:01 Direita, então a pergunta I39m perguntando é: quotoutlier de whatquot. -) Tomar mediana ou média direta dos dados que você irá produzir resultados sem sentido. A filtragem mediana só funciona bem quando algumas amostras (em relação ao comprimento da janela) estão fora do alcance esperado. Porque os dados que você possui são balanceados positivos e negativos, a mediana não é realmente apropriada para isso. Tomar a mediana do envelope deve funcionar melhor. Você pode até querer colocar um filtro passa-baixa simples no valor absoluto para obter um valor de envelope mais estável. Ndash Peter K. 9830 30 de novembro 15 às 14:05
No comments:
Post a Comment