Tuesday 26 December 2017

Processamento de sinal de média móvel exponencial


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 que eu calculo é adequadamente suavizado. Atualizado 12 de março de 2017 O que é RC Filtragem e média exponencial e como eles diferem. A resposta para a segunda parte da questão é que eles são o mesmo processo. Um fundo eletrônico, então RC Filtering (ou RC Smoothing) é a expressão usual. Por outro lado, uma abordagem baseada em estatísticas de séries temporais tem o nome de Exponential Averaging, ou para usar o nome completo, Promessa ponderada exponencial média. Isso também é conhecido como EWMA ou EMA. Uma vantagem chave do método é a simplicidade da fórmula para calcular a próxima saída. Demora uma fração da saída anterior e uma menos esta fração vezes a entrada atual. Algebraicamente no momento k, a saída suavizada y k é dada por Como mostrado mais adiante, esta fórmula simples enfatiza eventos recentes, suaviza as variações de alta freqüência e revela tendências de longo prazo. Observe que existem duas formas da equação de média exponencial, a acima e uma variante. Ambos estão corretos. Veja as notas no final do artigo para obter mais detalhes. Nesta discussão, usaremos apenas a equação (1). A fórmula acima é às vezes escrita de forma mais limitada. Como esta fórmula é derivada e qual é a sua interpretação Um ponto-chave é como selecionamos. Examinar essa maneira simples é considerar um filtro passa-baixo RC. Agora, um filtro passa-baixo RC é simplesmente uma resistência série R e um capacitor paralelo C conforme ilustrado abaixo. A equação da série de tempo para este circuito é O produto RC tem unidades de tempo e é conhecido como constante de tempo, T. Para o circuito. Suponhamos que representamos a equação acima em sua forma digital para uma série de tempo que tenha dados dados cada h segundos. Nós temos exatamente a mesma forma que a equação anterior. Comparando os dois relacionamentos por um que temos, o que reduz ao relacionamento muito simples. Daí a escolha de N é guiada pela constante de tempo que escolhemos. Agora, a equação (1) pode ser reconhecida como um filtro passa-baixa e a constante de tempo tipifica o comportamento do filtro. Para ver o significado da Constante de Tempo, precisamos olhar para a característica de freqüência desse filtro RC de passagem baixa. Em sua forma geral, esta é Expressar em módulo e forma de fase onde temos o ângulo de fase. A freqüência é chamada de freqüência de corte nominal. Fisicamente, pode-se mostrar que, a essa freqüência, a potência no sinal foi reduzida pela metade e a amplitude é reduzida pelo fator. Em termos de dB, esta frequência é onde a amplitude foi reduzida em 3dB. Claramente, à medida que a constante de tempo T aumenta, então a freqüência de corte reduz e aplicamos mais alisamento aos dados, ou seja, eliminamos as freqüências mais altas. É importante notar que a resposta de freqüência é expressa em radians por segundo. Isso é um fator envolvido. Por exemplo, escolher uma constante de tempo de 5 segundos dá uma freqüência de corte efetiva de. Um uso popular do alisamento de RC é simular a ação de um medidor, como é usado em um medidor de nível de som. Estes geralmente são tipificados por sua constante de tempo, como 1 segundo para tipos S e 0,125 segundos para tipos F. Para estes 2 casos, as freqüências de corte efetivas são 0,16 Hz e 1,27 Hz, respectivamente. Na verdade, não é a constante de tempo que geralmente desejamos selecionar, mas os períodos que desejamos incluir. Suponhamos que tenhamos um sinal onde desejamos incluir recursos com um segundo período de P. Agora, um período P é uma freqüência. Poderíamos então escolher uma constante de tempo T dada por. No entanto, sabemos que perdemos cerca de 30 da saída (-3dB) em. Assim, escolher uma constante de tempo que corresponde exatamente às periodicidades que desejamos manter não é o melhor esquema. Geralmente, é melhor escolher uma freqüência de corte ligeiramente maior, digamos. A constante de tempo é então que, em termos práticos, é semelhante. Isso reduz a perda para cerca de 15 nesta periodicidade. Portanto, em termos práticos, reter eventos com periodicidade ou maior, escolha uma constante de tempo de. Isso incluirá os efeitos das periodicidades de baixo para baixo. Por exemplo, se desejamos incluir os efeitos de eventos que aconteçam com digamos um período de 8 segundos (0.125Hz), então escolha uma constante de tempo de 0,8 segundos. Isso dá uma freqüência de corte de aproximadamente 0,2 Hz para que nosso período de 8 segundos esteja bem na faixa de passagem principal do filtro. Se estivéssemos amostragem dos dados em 20 timessecond (h 0.05), então o valor de N é (0.80.05) 16 e. Isso dá uma visão sobre como configurar. Basicamente, para uma taxa de amostragem conhecida tipifica o período de média e seleciona quais flutuações de alta freqüência serão ignoradas. Ao olhar para a expansão do algoritmo, podemos ver que ele favorece os valores mais recentes, e também porque é referido como ponderação exponencial. Nós substituímos por y k-1 dá Repita este processo várias vezes leva a Porque está no intervalo então claramente os termos à direita tornam-se menores e se comportam como uma exponencial em decomposição. Essa é a saída atual é tendenciosa em relação aos eventos mais recentes, mas quanto maior, nós escolhemos T, então, o menor preconceito. Em resumo, vemos que a fórmula simples enfatiza eventos recentes suaviza eventos de alta freqüência (período curto) revela tendências de longo prazo Apêndice 1 8211 Formas alternativas da equação Cuidado Há duas formas da equação de média exponencial que aparecem na literatura. Ambos são corretos e equivalentes. A primeira forma, como mostrado acima, é (A1) O formulário alternativo é 8230 (A2) Observe o uso na primeira equação e na segunda equação. Em ambas as equações e são valores entre zero e unidade. Anteriormente, foi definido como Agora escolhendo para definir. Portanto, a forma alternativa da equação de média exponencial é, em termos físicos, significa que a escolha da forma uma usa depende de como alguém quer pensar em tomar como a equação da fração retroativa (A1) ou Como a fração da equação de entrada (A2). A primeira forma é um pouco menos pesada ao mostrar a relação de filtro RC e leva a uma compreensão mais simples em termos de filtro. Analista chefe de processamento de sinal da Prosig Dr. Colin Mercer é analista de processamento de sinal principal da Prosig e é responsável pelo processamento de sinais e suas aplicações. Anteriormente, no Instituto de Pesquisas de Som e Vibração (ISVR) da Universidade de Southampton, onde fundou o Data Analysis Center. Ele é um engenheiro fretado e um companheiro da British Computer Society. Eu acho que você deseja mudar o 8216p8217 para o símbolo para pi. Marco, obrigado por apontar isso. Eu acho que este é um dos nossos artigos mais antigos que foi transferido de um documento antigo de processamento de texto. Obviamente, o editor (eu) não conseguiu detectar que o pi não havia sido transcritos corretamente. Isso será corrigido em breve. É uma boa explicação do artigo sobre a média exponencial. Creio que há um erro na fórmula para T. Ele deve ser T h (N-1), não T (N-1) h. Mike, obrigado por detectar isso. Acabei de verificar a nota técnica original do Dr. Mercer8217 em nosso arquivo e parece que houve erro ao transferir as equações para o blog. Vamos corrigir a publicação. Obrigado por nos informar. Obrigado, obrigado, obrigado. Você pode ler 100 textos DSP sem encontrar nada dizendo que um filtro de média exponencial é o equivalente a um filtro R-C. Hmm, você tem a equação para um filtro EMA correto, não é Yk aXk (1-a) Yk-1 em vez de Yk aYk-1 (1-a) Xk Alan, ambas as formas da equação aparecem na literatura, e Ambos os formulários estão corretos, como vou mostrar abaixo. O ponto que você faz é importante porque usar a forma alternativa significa que a relação física com um filtro RC é menos aparente, além disso, a interpretação do significado de um mostrado no artigo não é apropriada para o formulário alternativo. Primeiro, mostre que ambos os formulários estão corretos. A forma da equação que eu usei é e a forma alternativa que aparece em muitos textos é Nota no acima, usei latex 1latex na primeira equação e latex 2latex na segunda equação. A igualdade de ambas as formas da equação é mostrada matematicamente abaixo, tomando passos simples de cada vez. O que não é o mesmo é o valor usado para látex latex em cada equação. Em ambas as formas latex latex é um valor entre zero e unidade. Primeira equação de reescrita (1) substituindo latex 1latex por latex latex. Isso dá latexyk y (1 - beta) xklatex 8230 (1A) Agora defina latexbeta (1 - 2) látex e também temos latex 2 (1 - beta) látex. Substituindo estes na equação (1A) dá latexyk (1 - 2) y 2xklatex 8230 (1B) E, finalmente, reorganizar dá Esta equação é idêntica à forma alternativa dada na equação (2). Coloque mais látex de latex 2 (1 - 1). Em termos físicos, significa que a escolha da forma uma usa depende de como se quer pensar em tomar latexalphalatex como a equação da fração retrocessora (1) ou como a fração da equação de entrada (2). Como mencionado acima, usei o primeiro formulário, uma vez que é um pouco menos pesado ao mostrar a relação de filtro RC e leva a uma compreensão mais simples em termos de filtro. No entanto, omitir o acima é, na minha opinião, uma deficiência no artigo, já que outras pessoas podem fazer uma inferência incorreta, então uma versão revisada aparecerá em breve. Sempre me perguntei sobre isso, obrigado por descrevê-lo tão claramente. Eu acho que outro motivo para a primeira formulação é agradável é o mapa alfa para 8216smoothness8217: uma escolha maior de alfa significa uma saída 8216 mais suave8217. Michael Obrigado pela observação 8211 Eu adicionarei ao artigo algo nessas linhas, pois sempre me parece melhor relacionar-me com os aspectos físicos. Dr. Mercer, excelente artigo, obrigado. Eu tenho uma pergunta sobre a constante de tempo quando usado com um detector rms como em um medidor de nível de som que você se refere no artigo. Se eu usar suas equações para modelar um filtro exponencial com Constante de Tempo 125ms e usar um sinal de passo de entrada, eu realmente recebo uma saída que, após 125ms, é 63.2 do valor final. No entanto, se eu quadrado o sinal de entrada e coloque isso através do filtro, vejo que preciso dobrar a constante de tempo para que o sinal atinja 63,2 de seu valor final em 125ms. Você pode me informar se isso é esperado? Muito Obrigado. Ian Ian, se você marcar um sinal como uma onda senoidal, basicamente, você está dobrando a freqüência de sua fundamental, além de apresentar muitas outras freqüências. Como a freqüência foi efetivamente dobrada, está sendo 8216 reduzida8217 por uma quantidade maior pelo filtro passa-baixa. Em conseqüência, leva mais tempo para atingir a mesma amplitude. A operação de quadratura é uma operação não linear, então eu não acho que sempre dobrará precisamente em todos os casos, mas tenderá a dobrar se tivermos uma baixa freqüência dominante. Observe também que o diferencial de um sinal quadrado é o dobro do diferencial do sinal 8220un-squared8221. Eu suspeito que você esteja tentando obter uma forma de alisamento quadrático médio, que é perfeitamente bom e válido. Pode ser melhor aplicar o filtro e depois quadrado, como você conhece o ponto de corte efetivo. Mas se tudo o que você tiver é o sinal ao quadrado, então, usando um fator de 2 para modificar seu valor alfa do filtro, você irá retornar à freqüência de corte original, ou colocando um pouco mais simples, defina sua freqüência de corte duas vezes o original. Obrigado pela sua resposta, Dr. Mercer. Minha pergunta estava realmente tentando entender o que realmente é feito em um detector de rms de um medidor de nível sonoro. Se a constante de tempo estiver definida para 8216fast8217 (125ms), teria pensado que, intuitivamente, você esperaria um sinal de entrada sinusoide para produzir uma saída de 63,2 de seu valor final após 125ms, mas como o sinal está sendo quadrado antes de chegar ao 8216mean8217 Detecção, na verdade, levará duas vezes o tempo que você explicou. O objetivo principal do artigo é mostrar a equivalência da filtragem RC e da média exponencial. Se estamos discutindo o tempo de integração equivalente a um verdadeiro integrador retangular, você está correto que há um fator de dois envolvidos. Basicamente, se possuímos um verdadeiro integrador retangular que se integra aos segundos de Ti, o tempo do integerador RC equivalente para alcançar o mesmo resultado é 2RC segundos. Ti é diferente do RC 8216time constant8217 T que é RC. Assim, se tivermos uma constante de tempo 8216Fast8217 de 125 ms, isso é RC 125 ms, então isso é equivalente a um verdadeiro tempo de integração de 250 ms. Obrigado pelo artigo, foi muito útil. Existem alguns trabalhos recentes em neurociência que usam uma combinação de filtros EMA (EMA de janela curta com espaço largo EMA 8211) como um filtro passa-banda para análise de sinal em tempo real. Eu gostaria de aplicá-los, mas estou lutando com os tamanhos de janela que diferentes grupos de pesquisa usaram e sua correspondência com a freqüência de corte. Let8217s dizem que eu quero manter todas as freqüências abaixo de 0.5Hz (aprox) e que adquiro 10 amostras em segundo lugar. Isso significa que fp 0.5Hz P 2s T P100.2 h 1fs0.1 O anterior, o tamanho da janela que eu deveria usar deveria ser N3. Este raciocínio correto Antes de responder a sua pergunta, devo comentar sobre o uso de dois filtros de passagem alta para formar um filtro de passagem de banda. Presumivelmente, eles funcionam como dois fluxos separados, então um resultado é o conteúdo de látex latexf para metade da taxa de amostragem e o outro é o conteúdo do latex latexf para metade da taxa de amostragem. Se tudo o que está sendo feito é a diferença nos níveis quadrados médios como indicar o poder na banda do latex latexf para latexf latex, então pode ser razoável se as duas freqüências de corte estiverem suficientemente distantes, mas espero que as pessoas que usam essa técnica Estão tentando simular um filtro de banda mais estreito. Na minha opinião, isso não seria confiável para um trabalho sério e seria motivo de preocupação. Apenas para referência, um filtro de passagem de banda é uma combinação de um filtro de passagem alta de baixa freqüência para remover as baixas freqüências e um filtro passa-baixa de alta freqüência para remover as altas freqüências. Há, naturalmente, uma forma de passagem baixa de um filtro RC e, portanto, um EMA correspondente. Talvez, embora o meu julgamento seja excessivo, sem saber todos os fatos. Então, você poderia me enviar algumas referências aos estudos que você mencionou, para que eu possa criticar conforme apropriado. Talvez estejam usando um passe baixo, bem como um filtro passa-alto. Agora, voltando-se para a sua pergunta real sobre como determinar N para uma determinada freqüência de corte do alvo, acho melhor usar a equação básica T (N-1) h. A discussão sobre os períodos teve como objetivo dar às pessoas a sensação do que estava acontecendo. Então, veja a derivação abaixo. Nós temos o latexT latexT (N-1) hlatex e látex latexT12 onde latexfclatex é a freqüência de corte nocional e h é o tempo entre as amostras, Claramente latexh 1 latex, onde latexfslatex é a taxa de amostragem em samplessec. A reorganização de T (N-1) h em uma forma adequada para incluir a freqüência de corte, latexfclatex e a taxa de amostragem, latexfslatex, é mostrada abaixo. Então, use latexfc 0.5Hzlatex e latexfs 10latex samplessec para que latex (fcfs) 0.05latex Dê Assim, o valor inteiro mais próximo é 4. Reorganizando o acima, temos Assim com N4 temos latexfc 0.5307 Hzlatex. O uso de N3 dá um latexfclatex de 0,318 Hz. Observe com N1 que temos uma cópia completa sem filtragem. Documentação Este exemplo mostra como usar os filtros médios móveis e o reescrever para isolar o efeito de componentes periódicos da hora do dia nas leituras horárias de temperatura, bem como remover ruídos indesejados da linha de um Medição de tensão em circuito aberto. O exemplo também mostra como alisar os níveis de um sinal de relógio, preservando as bordas usando um filtro mediano. O exemplo também mostra como usar um filtro Hampel para remover grandes outliers. Motivation Smoothing é como descobrimos padrões importantes em nossos dados, deixando de lado as coisas que não têm importância (ou seja, o ruído). Usamos a filtragem para executar esse alisamento. O objetivo do suavização é produzir mudanças lentas de valor, de modo que seja mais fácil ver tendências em nossos dados. Às vezes, quando você examina dados de entrada, você deseja 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 de Logan durante todo o mês de janeiro de 2017. Note que podemos visualizar visualmente o efeito que a hora do dia tem nas leituras de temperatura. Se você está interessado apenas na variação diária da temperatura ao longo do mês, as flutuações horárias só contribuem com o ruído, o que dificulta a discernição das variações diárias. 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 médio móvel de comprimento N leva 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, nós construímos nossos coeficientes de nosso filtro de modo que cada ponto seja igualmente ponderado e contribua 124 para a média total. Isso nos dá a temperatura média em cada período de 24 horas. Retardamento do filtro Observe que a saída filtrada está atrasada em cerca de doze horas. Isto é devido ao fato de nosso filtro de média móvel ter um atraso. Qualquer filtro simétrico de comprimento N terá um atraso de (N-1) 2 amostras. Podemos explicar esse atraso manualmente. Extraindo diferenças médias 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 geral. Para fazer isso, primeiro, subtrair os dados suavizados das medidas horárias de temperatura. Em seguida, segmente os dados diferenciados em dias e leve a média em todos os 31 dias do mês. Extraindo o envelope de pico Às vezes, também gostaríamos de ter uma estimativa variável suave de como os altos e baixos do nosso sinal de temperatura mudam diariamente. Para fazer isso, podemos usar a função de envelope para conectar altas e baixas extremas detectadas em um subconjunto do período de 24 horas. Neste exemplo, garantimos que haja pelo menos 16 horas entre cada extremo alto e extremo baixo. Nós também podemos ter uma noção de como os altos e baixos estão tendendo tomando a média entre os dois extremos. Filtros médios em movimento ponderados Outros tipos de filtros médios móveis não pesam cada amostra de forma igual. Outro filtro comum segue a expansão binomial de (12,12) n Este tipo de filtro se aproxima de uma curva normal para valores grandes de n. É útil para filtrar o ruído de alta freqüência para pequenos n. Para encontrar os coeficientes para o filtro binomial, convolve 12 12 com ele próprio e, então, convoluciona a saída com 12 12 um número de vezes prescrito. Neste exemplo, use cinco iterações totais. Outro filtro um pouco semelhante ao filtro de expansão gaussiano é o filtro exponencial de média móvel. Este tipo de filtro de média móvel ponderada é fácil de construir e não requer um grande tamanho de janela. Você ajusta um filtro de média móvel ponderada exponencialmente por um parâmetro alfa entre zero e um. Um maior valor de alfa terá menor alisamento. Amplie as leituras por um dia. Escolha o seu país

No comments:

Post a Comment