Thursday 17 August 2017

Exponencial Em Movimento Média Irregular


Eu tenho um valor contínuo pelo qual Id gostaria de calcular uma média móvel exponencial. Normalmente, Id apenas usa a fórmula padrão para isso: onde S n é a nova média, o alfa é o alfa, Y é a amostra e S n-1 é a média anterior. Infelizmente, devido a várias questões, não tenho um tempo de amostra consistente. Posso saber que posso provar, no máximo, digamos, uma vez por milissegundo, mas devido a fatores fora do meu controle, talvez não consiga tirar uma amostra por vários milissegundos de cada vez. Um caso provavelmente mais comum, no entanto, é que eu amostras simples um pouco cedo ou tarde: em vez de amostragem a 0, 1 e 2 ms. Eu amostras em 0, 0.9 e 2.1 ms. Eu antecipo que, independentemente dos atrasos, minha freqüência de amostragem estará longe, muito acima do limite de Nyquist, e, portanto, não preciso me preocupar com aliasing. Eu acho que eu posso lidar com isso de uma maneira mais ou menos razoável ao variar o alfa apropriadamente, com base no tempo desde a última amostra. Parte do meu raciocínio que isso funcionará é que a EMA interpola linearmente entre o ponto de dados anterior e o atual. Se considerarmos o cálculo de uma EMA da seguinte lista de amostras em intervalos t: 0,1,2,3,4. Devemos obter o mesmo resultado se usarmos o intervalo 2t, onde as entradas se tornam 0,2,4, direito, se a EMA tivesse assumido que, em t 2, o valor tinha sido 2 desde t 0. Isso seria o mesmo que o cálculo do intervalo t calculado em 0,2,2,4,4, o que não está fazendo. Ou isso faz sentido? Alguém pode me dizer como variar o alfa apropriadamente. Por favor, mostre seu trabalho. Isto é, Mostre-me a matemática que prova que seu método realmente está fazendo o que é certo. Perguntou Jun 21 09 às 13:05 Você não deve obter o mesmo EMA para diferentes entradas. Pense em EMA como um filtro, a amostragem em 2t é equivalente a amostragem descendente, e o filtro vai dar uma saída diferente. Isso é claro para mim, pois 0,2,4 contém componentes de freqüência mais alta que 0,1,2,3,4. A menos que seja a questão, como eu altero o filtro de forma direta para que ele dê a mesma saída. Talvez eu esteja faltando algo ndash freespace 21 de junho de 09 às 15:52 Mas a entrada não é diferente, ela é apenas amostrada com menos frequência. 0,2,4 em intervalos 2t é como 0,, 2,, 4 em intervalos t, onde o indica que a amostra é ignorada ndash Curt Sampson 21 de junho de 09 às 23:45 Esta resposta com base na minha boa compreensão de passagem baixa Filtros (a média móvel exponencial é realmente apenas um filtro de passagem simples de um único polo), mas a minha nebulosa compreensão do que você está procurando. Eu acho que o seguinte é o que você quer: primeiro, você pode simplificar sua equação um pouco (parece mais complicado, mas é mais fácil no código). Eu vou usar Y para saída e X para entrada (em vez de S para saída e Y para entrada, como você fez). Em segundo lugar, o valor de alpha aqui é igual a 1-e - Deltat / tau onde Deltat é o tempo entre as amostras, e tau é a constante de tempo do filtro passa-baixa. Eu digo igual em citações porque isso funciona bem quando Deltat / tau é pequeno em comparação com 1, e alpha 1-e-Deltat / tau asymp Deltat / tau. (Mas não é muito pequeno: você enfrentará questões de quantificação e, a menos que você recorra a algumas técnicas exóticas, você geralmente precisa de N bits extras de resolução em sua variável de estado S, onde N - log 2 (alfa).) Para valores maiores de Deltat / Tau o efeito de filtragem começa a desaparecer, até chegar ao ponto em que o alfa é próximo de 1 e você basicamente está apenas atribuindo a entrada para a saída. Isso deve funcionar corretamente com valores variados de Deltat (a variação de Deltat não é muito importante, desde que o alfa seja pequeno, caso contrário você irá encontrar alguns problemas / aliasing Nyquist / etc.), e se você estiver trabalhando em um processador Onde a multiplicação é mais barata do que a divisão, ou questões de ponto fixo são importantes, precalcular omega 1 / tau e considerar tentar aproximar a fórmula para alfa. Se você realmente quer saber como derivar a fórmula alpha 1-e - Deltat / tau, considere sua fonte de equação diferencial: qual, quando X é uma função de etapa de unidade, tem a solução Y 1 - e - t / tau. Para valores pequenos de Deltat, a derivada pode ser aproximada por DeltaY / Deltat, produzindo Y tau DeltaY / Deltat X DeltaY (XY) (Deltat / tau) alfa (XY) e a extrapolação de alpha 1-e-Deltat / tau vem de Tentando combinar o comportamento com a função de função da unidade. Você poderia elaborar o quottrying para combinar a parte do comportamento. Compreendo sua solução de tempo contínuo Y 1 - exp (-t47) e sua generalização para uma função escalonada com magnitude x e condição inicial y (0). Mas eu não estou vendo como juntar essas idéias para alcançar seu resultado. Ndash Rhys Ulerich 4 de maio 13 às 22:34 Esta não é uma resposta completa, mas pode ser o início de uma. É tão longe quanto eu consegui com isso em uma hora ou mais de jogar Im publicando isso como um exemplo do que estou procurando, e talvez seja uma inspiração para outros que trabalham no problema. Eu começo com S 0. Qual é a média resultante da média anterior S -1 e a amostra Y 0 tomada em t 0. (T 1 - t 0) é o meu intervalo de amostra e o alfa está configurado para o que for apropriado para esse intervalo de amostra e o período durante o qual eu gostaria de média. Eu considerei o que acontece se eu sinto falta da amostra em t 1 e, em vez disso, tenho que fazer com a amostra Y 2 tomada em t 2. Bem, podemos começar expandindo a equação para ver o que aconteceria se tivéssemos tido Y 1: percebo que a série parece se estender infinitamente dessa maneira, porque podemos substituir o S n no lado direito indefinidamente: Ok , Então não é realmente um polinômio (eu tolo), mas se multiplicarmos o termo inicial por um, então vemos um padrão: Hm: é uma série exponencial. Surpresa Quelle Imagine que sai da equação para uma média móvel exponencial Então, de qualquer forma, eu tenho este x 0 x 1 x 2 x 3. A coisa está acontecendo, e estou certo de que eu estou cheirando e ou um logaritmo natural dando uma volta por aqui, mas não consigo lembrar de onde eu estava indo antes que eu estivesse sem tempo. Qualquer resposta a esta pergunta, ou qualquer prova de correção de tal resposta, depende muito dos dados que você está medindo. Se suas amostras foram tiradas em t 0 0ms. T 1 0,9 ms e t 2 2,1 ms. Mas sua escolha de alfa é baseada em intervalos de 1 ms, e, portanto, você quer um alfa n ajustado localmente. A prova de correção da escolha significaria saber os valores da amostra em t1ms e t2ms. Isso leva à questão: você pode interpolar seus dados de forma razoável para ter suposições sãs do que os valores intermediários podem ter sido ou você pode mesmo interpolar a média em si. Se nenhum desses é possível, então, até onde eu vejo, a lógica A escolha de um valor intermediário Y (t) é a média calculada mais recentemente. Isto é, Y (t) asymp S n onde n é maxmial tal que t n ltt. Essa escolha tem uma conseqüência simples: deixe o alfa sozinho, independentemente da diferença horária. Se, por outro lado, é possível interpolar seus valores, então isso lhe dará amostras intermediárias de intervalo constante. Por fim, se for possível interpolar a média, isso tornaria a pergunta sem sentido. Respondeu 21 de junho 09 às 15:08 balpha 9830 26.4k 9679 10 9679 84 9679 117 Eu pensaria que eu posso interpolar meus dados: dado que I39m amostragem em intervalos discretos, já estou fazendo isso com uma EMA padrão, suponha que eu precise Um quotproofquot que mostra que ele funciona, bem como um EMA padrão, que também produzirá um resultado incorreto se os valores não estiverem mudando bastante sem problemas entre os períodos de amostra. Ndash Curt Sampson 21 de junho 09 às 15:21 Mas isso é o que eu digo: se você considerar a EMA uma interpolação de seus valores, você será feito se você deixar o alfa como é (porque inserir a média mais recente como Y não altera a média) . Se você diz que precisa de algo que funciona bem como um EMAquot padrão - o que está errado com o original A menos que você tenha mais informações sobre os dados que você mede, quaisquer ajustes locais para alfa serão, na melhor das hipóteses, arbitrários. Ndash balpha 9830 Jun 21 09 às 15:31 Eu deixaria o valor alfa sozinho e preencheria os dados faltantes. Como você não sabe o que acontece durante o tempo em que você não pode mostrar, você pode preencher essas amostras com 0s ou manter o valor anterior estável e usar esses valores para a EMA. Ou alguma interpolação para trás, uma vez que você tenha uma nova amostra, preencha os valores em falta e recomponha o EMA. O que eu estou tentando conseguir é que você tem uma entrada xn que tem buracos. Não há como contornar o fato de você estar faltando dados. Então, você pode usar uma retenção de ordem zero, ou configurá-la para zero, ou algum tipo de interpolação entre xn e xnM. Onde M é o número de amostras em falta e n o início da lacuna. Possivelmente mesmo usando valores antes de n. Respondeu 21 de junho de 09 às 13:35 De passar uma hora ou mais de um pouco com as matemáticas para isso, acho que simplesmente variar o alfa realmente me dará a interpolação adequada entre os dois pontos de que você fala, mas em um Muito mais simples. Além disso, acho que a variação do alfa também tratará de forma adequada as amostras colhidas entre os intervalos de amostragem padrão. Em outras palavras, estou procurando o que você descreveu, mas tentando usar matemática para descobrir a maneira simples de fazê-lo. Ndash Curt Sampson 21 de junho 09 às 14:07 Não acho que haja tal besta como interpolação quotproper. Você simplesmente não sabe o que aconteceu no momento em que você não está amostragem. A interpolação boa e ruim implica algum conhecimento do que você perdeu, já que você precisa medir contra isso para julgar se uma interpolação é boa ou ruim. Embora isso seja dito, você pode colocar restrições, ou seja, com aceleração máxima, velocidade, etc. Eu acho que se você sabe como modelar os dados perdidos, então você apenas modelaria os dados que faltavam, então aplique o algoritmo EMA sem mudança, em vez disso Do que mudar alfa. Apenas meu 2c :) ndash freespace 21 de junho 09 às 14:17 Isto é exatamente o que eu estava recebendo na minha edição para a pergunta 15 minutos atrás: você simplesmente não sabe o que aconteceu no momento em que você não está amostragem, mas isso é verdade Mesmo se você provar em cada intervalo designado. Assim, a minha contemplação de Nyquist: enquanto você sabe que a forma de onda não altera as direções mais do que todas as amostras, o intervalo de amostra real não deve ser importante e pode variar. A equação EMA parece-me exatamente calcular como se a forma de onda mudasse linearmente do último valor da amostra para o atual. Ndash Curt Sampson 21 de junho 09 às 14:26 Não acho que seja verdade. O teorema de Nyquist exige um mínimo de 2 amostras por período para identificar o sinal de forma exclusiva. Se você não fizer isso, você obtém aliasing. Seria o mesmo que a amostragem como fs1 por um tempo, então fs2, depois de volta para fs1, e você obtém aliasing nos dados quando você amostra com fs2 se fs2 estiver abaixo do limite de Nyquist. Eu também devo confessar que não entendo o que você quer dizer com quotwaveform mudanças linearmente da última amostra para onequot atual. Você poderia explicar Cheers, Steve? Ndash freespace Jun 21 09 às 14:36 ​​Isto é semelhante a um problema aberto na minha lista de tarefas. Eu tenho um esquema elaborado até certo ponto, mas não tenho trabalho matemático para apoiar esta sugestão ainda. Atualize o sumário do amplificador: Gostaria de manter o fator de suavização (alfa) independente do fator de compensação (que eu me refiro como beta aqui). A excelente resposta já aceita aqui é excelente para mim. Se você também pode medir o tempo desde a última amostra (em múltiplos arredondados de seu tempo de amostragem constante - então 7,8 ms desde a última amostra seria 8 unidades), que poderia ser usado para aplicar o alisamento várias vezes. Aplique a fórmula 8 vezes neste caso. Você efetivamente fez um alisamento mais inclinado para o valor atual. Para obter um melhor alisamento, precisamos ajustar o alfa ao aplicar a fórmula 8 vezes no caso anterior. O que essa aproximação de suavização perderá. Já faltou 7 amostras no exemplo acima. Isso foi aproximado na etapa 1 com uma re-aplicação achatada do valor atual 7 vezes adicionais. Se definimos um fator de aproximação beta que será aplicado junto com alfa (Como alfabeta em vez de apenas alfa), estaremos assumindo que as 7 amostras perdidas estavam mudando suavemente entre os valores de amostra anteriores e atuais. Respondeu 21 de junho 09 às 13:35 Eu pensei sobre isso, mas um pouco de amaldiçoamento com a matemática me levou ao ponto em que eu acredito que, ao invés de aplicar a fórmula oito vezes com o valor da amostra, posso fazer um cálculo De um novo alfa que me permitirá aplicar a fórmula uma vez e me dar o mesmo resultado. Além disso, isso trataria automaticamente a questão das amostras compensadas com os tempos de amostra exatos. Ndash Curt Sampson 21 de junho 09 às 13:47 O único aplicativo está bem. O que ainda não tenho certeza é o quanto é boa a aproximação dos 7 valores em falta. Se o movimento contínuo faz com que o valor flui muito durante os 8 milésimos de segundo, as aproximações podem estar bastante fora da realidade. Mas, então, se você estiver amostragem a 1 ms (a maior resolução, excluindo as amostras atrasadas), você já descobriu que o jitter dentro de 1 ms não é relevante. Esse raciocínio funciona para você (eu ainda estou tentando me convencer). Ndash nik Jun 21 09 às 14:08 Direita. Esse é o fator beta da minha descrição. Um fator beta seria calculado com base no intervalo de diferença e nas amostras atual e anterior. O novo alfa será (alfabeta), mas ele será usado apenas para essa amostra. Enquanto você parece ser o alfa na fórmula, eu tende para o alfa constante (fator de suavização) e um beta calculado de forma independente (um fator de sintonia) que compensa amostras perdidas agora. Ndash nik Jun 21 09 at 15: 23Exponential Filter Esta página descreve a filtragem exponencial, o filtro mais simples e popular. Esta é parte da seção Filtragem que faz parte de um Guia de Detecção e Diagnóstico de Falhas. Visão geral, constante de tempo e equivalente analógico. O filtro mais simples é o filtro exponencial. Possui apenas um parâmetro de sintonia (diferente do intervalo de amostra). Exige o armazenamento de apenas uma variável - a saída anterior. É um filtro IIR (autoregressivo) - os efeitos de uma mudança de entrada se deterioram exponencialmente até que os limites de exibição ou a aritmética do computador ocultem. Em várias disciplinas, o uso deste filtro também é referido como otimização exponencial 82201. Em algumas disciplinas, como a análise de investimentos, o filtro exponencial é chamado de uma média móvel 8220 ponderada exponencialmente 8221 (EWMA) ou apenas uma média móvel 8220 (EMA). Isso abusa a tradicional terminologia média 8221 de ARMA 8220 da análise de séries temporais, uma vez que não há histórico de entrada que seja usado - apenas a entrada atual. É o equivalente de tempo discreto da ordem 8220 da primeira ordem lag8221 comumente usado na modelagem analógica de sistemas de controle de tempo contínuo. Nos circuitos elétricos, um filtro RC (filtro com um resistor e um capacitor) é um atraso de primeira ordem. Ao enfatizar a analogia com os circuitos analógicos, o parâmetro de sintonia única é a constante do tempo 8220, 8221, geralmente escrito como a letra grega Tau (). De fato, os valores nos tempos de amostra discretos coincidem exatamente com o intervalo de tempo contínuo equivalente com a mesma constante de tempo. A relação entre a implementação digital e a constante de tempo é mostrada nas equações abaixo. Equações de filtro exponencial e inicialização O filtro exponencial é uma combinação ponderada da estimativa anterior (saída) com os dados de entrada mais recentes, com a soma dos pesos iguais a 1 para que a saída corresponda à entrada no estado estacionário. Seguindo a notação do filtro já introduzida: y (k) ay (k-1) (1-a) x (k) onde x (k) é a entrada bruta no tempo ky (k) é a saída filtrada no tempo ka É uma constante entre 0 e 1, normalmente entre 0,8 e 0,99. (A-1) ou a vezes é chamado de constante de deslocamento 82208221. Para sistemas com um passo de tempo fixo T entre amostras, a constante 8220a8221 é calculada e armazenada por conveniência apenas quando o desenvolvedor do aplicativo especifica um novo valor da constante de tempo desejada. Para sistemas com amostragem de dados em intervalos irregulares, a função exponencial acima deve ser usada com cada passo de tempo, onde T é o tempo desde a amostra anterior. A saída do filtro geralmente é inicializada para coincidir com a primeira entrada. À medida que a constante de tempo se aproxima de 0, a vai para zero, então não há filtragem 8211, a saída é igual à nova entrada. À medida que a constante de tempo é muito grande, as abordagens 1, de modo que a entrada nova é quase ignorada 8211 filtragem muito pesada. A equação do filtro acima pode ser reorganizada para o seguinte equivalente preditor-corretor: Este formulário torna mais evidente que a estimativa variável (saída do filtro) é predita como inalterável da estimativa anterior y (k-1) mais um termo de correção baseado No inesperado 8220innovation8221 - a diferença entre a nova entrada x (k) e a predição y (k-1). Este formulário também é o resultado de derivar o filtro exponencial como um caso especial simples de um filtro de Kalman. Que é a solução ideal para um problema de estimativa com um determinado conjunto de pressupostos. Etapa de resposta Uma maneira de visualizar a operação do filtro exponencial é traçar sua resposta ao longo do tempo para uma entrada de etapa. Ou seja, começando com a entrada e saída do filtro em 0, o valor de entrada é de repente alterado para 1. Os valores resultantes são traçados abaixo: no gráfico acima, o tempo é dividido pela constante de tempo do filtro tau para que você possa mais facilmente prever Os resultados para qualquer período de tempo, para qualquer valor da constante de tempo do filtro. Após um tempo igual à constante de tempo, a saída do filtro sobe para 63,21 do seu valor final. Após um tempo igual a 2 constantes de tempo, o valor sobe para 86,47 de seu valor final. As saídas após tempos iguais a 3,4 e 5 constantes de tempo são 95,02, 98,17 e 99,33 do valor final, respectivamente. Uma vez que o filtro é linear, isso significa que essas porcentagens podem ser usadas para qualquer magnitude da mudança de passo, não apenas pelo valor de 1 usado aqui. Embora a resposta gradual em teoria tenha um tempo infinito, do ponto de vista prático, pense no filtro exponencial como 98 a 99 8220done8221 respondendo após um tempo igual a 4 a 5 constantes de tempo de filtro. Variações no filtro exponencial Existe uma variação do filtro exponencial chamado 8220nonlinear exponencial filter8221 Weber, 1980. destinado a pesadamente filtrar o ruído dentro de uma certa amplitude 8220typical8221, mas depois responder mais rapidamente a mudanças maiores. Copyright 2010 - 2013, Greg Stanley Compartilhe esta página:

No comments:

Post a Comment