Friday 16 November 2018

Código de matlab médio móvel ponderado exponencialmente


Eu essencialmente tenho uma série de valores como este: a matriz acima é simplificada, estou coletando 1 valor por milissegundo no meu código real e preciso processar a saída em um algoritmo que escrevi para encontrar o pico mais próximo antes de um ponto no tempo. Minha lógica falha porque no meu exemplo acima, 0.36 é o pico real, mas meu algoritmo olhava para trás e veria o último número 0.25 como o pico, pois há uma diminuição para 0.24 antes dele. O objetivo é levar esses valores e aplicar um algoritmo para eles, que os suavizará um pouco para que eu tenha mais valores lineares. (Ie: Id como os meus resultados para serem curvy, não jaggedy) Eu fui dito para aplicar um filtro exponencial de média móvel aos meus valores. Como posso fazer isso. É muito difícil para mim ler equações matemáticas, eu lido muito melhor com o código. Como faço para processar valores na minha matriz, aplicando um cálculo exponencial da média móvel para os fazer sair, solicitado 8 de fevereiro às 20:27 Para calcular uma média móvel exponencial. Você precisa manter algum estado ao redor e você precisa de um parâmetro de ajuste. Isso exige uma pequena classe (supondo que você esteja usando o Java 5 ou posterior): instanciar com o parâmetro de decaimento desejado (pode ser necessário que a sintonização esteja entre 0 e 1) e depois use a média () para filtrar. Ao ler uma página sobre uma recorrência matemática, tudo o que você realmente precisa saber ao transformá-lo em código é que os matemáticos gostam de escrever índices em arrays e seqüências com subscritos. (Eles também têm algumas outras notações, o que não ajuda.) No entanto, o EMA é bastante simples, pois você só precisa se lembrar de um valor antigo, não é necessário nenhum arrays de estados complicados. Respondeu 8 de fevereiro às 20:42 TKKocheran: praticamente. Não é bom quando as coisas podem ser simples (Se começar com uma nova seqüência, obtenha uma nova média). Observe que os primeiros termos da seqüência média saltarão em torno de um bit devido a efeitos de limites, mas você obtém aqueles com outras médias móveis também. No entanto, uma boa vantagem é que você pode envolver a lógica média móvel na média e experimentar sem incomodar demais o seu programa. Ndash Donal Fellows 9 de fevereiro às 0:06 Estou tendo dificuldade em entender suas perguntas, mas vou tentar responder de qualquer maneira. 1) Se o seu algoritmo encontrou 0,25 em vez de 0,36, então é errado. É errado porque assume um aumento ou diminuição monotônico (que sempre está subindo ou sempre está indo para baixo). A menos que você tenha média de todos os seus dados, seus pontos de dados --- como você os apresenta --- são não-lineares. Se você realmente quer encontrar o valor máximo entre dois pontos no tempo, então corte sua matriz de tmin para tmax e encontre o máximo desse subarray. 2) Agora, o conceito de médias móveis é muito simples: imagine que eu tenho a seguinte lista: 1.4, 1.5, 1.4, 1.5, 1.5. Eu posso suavizar, levando a média de dois números: 1.45, 1.45, 1.45, 1.5. Observe que o primeiro número é a média de 1,5 e 1,4 (segundo e primeiro número), a segunda (nova lista) é a média de 1,4 e 1,5 (terceira e segunda lista antiga) a terceira (nova lista) a média de 1,5 e 1,4 (Quarto e terceiro), e assim por diante. Eu poderia ter feito período três ou quatro, ou n. Observe como os dados são muito mais suaves. Uma boa maneira de ver as médias móveis no trabalho é ir para o Google Finance, selecionar um estoque (tente Tesla Motors bastante volátil (TSLA)) e clique em técnicas na parte inferior do gráfico. Selecione a média móvel com um período determinado e a média móvel exponencial para comparar suas diferenças. A média móvel exponencial é apenas uma outra elaboração deste, mas considera os dados mais antigos inferiores aos novos dados, esta é uma maneira de polarizar o alisamento para trás. Leia a entrada da Wikipedia. Então, isso é mais um comentário do que uma resposta, mas a pequena caixa de comentários foi apenas pequena. Boa sorte. Se você estiver tendo problemas com a matemática, você poderia ir com uma média móvel simples em vez de exponencial. Então, a saída que você obtém seria os últimos x termos divididos por x. Pseudocódigo não testado: note que você precisará lidar com as partes de início e término dos dados, pois claramente você não pode significar os últimos 5 termos quando estiver no seu segundo ponto de dados. Além disso, existem maneiras mais eficientes de calcular essa média móvel (soma sumária - a mais nova), mas é para obter o conceito de o que está acontecendo. Respondeu 8 de fevereiro às 20:41 Sua resposta 2017 Stack Exchange, IncDocumentation 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 horárias, bem como remover o ruído indesejado A partir de uma medida 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. Selecione a saída do seu CountryDocumentation tsmovavg (tsobj, s, lag) retorna a média móvel simples para o objeto da série temporária financeira, tsobj. Lag indica o número de pontos de dados anteriores usados ​​com o ponto de dados atual ao calcular a média móvel. Output tsmovavg (vector, s, lag, dim) retorna a média móvel simples para um vetor. Lag indica o número de pontos de dados anteriores usados ​​com o ponto de dados atual ao calcular a média móvel. Saída tsmovavg (tsobj, e, timeperiod) retorna a média móvel ponderada exponencial para o objeto da série temporária financeira, tsobj. A média móvel exponencial é uma média móvel ponderada, em que o período de tempo especifica o período de tempo. As médias móveis exponenciais reduzem o atraso aplicando mais peso aos preços recentes. Por exemplo, uma média móvel exponencial de 10 períodos pesa o preço mais recente em 18.18. Porcentagem Exponencial 2 (TIMEPER 1) ou 2 (WINDOWSIZE 1). Output tsmovavg (vector, e, timeperiod, dim) retorna a média móvel ponderada exponencial para um vetor. A média móvel exponencial é uma média móvel ponderada, em que o período de tempo especifica o período de tempo. As médias móveis exponenciais reduzem o atraso aplicando mais peso aos preços recentes. Por exemplo, uma média móvel exponencial de 10 períodos pesa o preço mais recente em 18.18. (2 (período de tempo 1)). Saída tsmovavg (tsobj, t, numperiod) retorna a média móvel triangular para o objeto da série temporária financeira, tsobj. A média móvel triangular suaviza os dados. Tsmovavg calcula a primeira média móvel simples com a largura da janela do ceil (numperiod 1) 2. Em seguida, calcula uma segunda média móvel simples na primeira média móvel com o mesmo tamanho de janela. Saída tsmovavg (vetor, t, numperiod, dim) retorna a média móvel triangular para um vetor. A média móvel triangular suaviza os dados. Tsmovavg calcula a primeira média móvel simples com a largura da janela do ceil (numperiod 1) 2. Em seguida, calcula uma segunda média móvel simples na primeira média móvel com o mesmo tamanho de janela. Saída tsmovavg (tsobj, w, pesos) retorna a média móvel ponderada para o objeto da série temporária financeira, tsobj. Fornecendo pesos para cada elemento na janela em movimento. O comprimento do vetor de peso determina o tamanho da janela. Se fatores de peso maiores forem usados ​​para preços mais recentes e fatores menores para preços anteriores, a tendência é mais sensível às mudanças recentes. Saída tsmovavg (vetor, w, pesos, dim) retorna a média móvel ponderada para o vetor, fornecendo pesos para cada elemento na janela em movimento. O comprimento do vetor de peso determina o tamanho da janela. Se fatores de peso maiores forem usados ​​para preços mais recentes e fatores menores para preços anteriores, a tendência é mais sensível às mudanças recentes. Saída tsmovavg (tsobj, m, numperiod) retorna a média móvel modificada para o objeto da série temporária financeira, tsobj. A média móvel modificada é semelhante à média móvel simples. Considere o argumento numperiod para ser o atraso da média móvel simples. A primeira média móvel modificada é calculada como uma média móvel simples. Os valores subseqüentes são calculados adicionando o novo preço e subtraindo a última média da soma resultante. Saída tsmovavg (vetor, m, numperiod, dim) retorna a média móvel modificada para o vetor. A média móvel modificada é semelhante à média móvel simples. Considere o argumento numperiod para ser o atraso da média móvel simples. A primeira média móvel modificada é calculada como uma média móvel simples. Os valores subseqüentes são calculados adicionando o novo preço e subtraindo a última média da soma resultante. Dim 8212 dimensionar para operar ao longo de inteiro positivo com o valor 1 ou 2 Dimensão para operar junto, especificado como um inteiro positivo com um valor de 1 ou 2. dim é um argumento de entrada opcional e, se não for incluído como entrada, o padrão O valor 2 é assumido. O padrão de dim 2 indica uma matriz orientada por linha, onde cada linha é uma variável e cada coluna é uma observação. Se dim 1. a entrada é assumida como um vetor de coluna ou matriz orientada por coluna, onde cada coluna é uma variável e cada linha uma observação. E 8212 Indicador para vetor de caracteres de média móvel exponencial A média móvel exponencial é uma média móvel ponderada, em que o período de tempo é o período de tempo da média móvel exponencial. As médias móveis exponenciais reduzem o atraso aplicando mais peso aos preços recentes. Por exemplo, uma média móvel exponencial de 10 períodos pesa o preço mais recente em 18.18. Porcentagem exponencial 2 (TIMEPER 1) ou 2 (WINDOWSIZE 1) período de tempo 8212 Comprimento do período de tempo inteiro não negativo Selecione seu país

No comments:

Post a Comment