Moving average filter applet


Eu tenho essencialmente uma matriz de valores como este: A matriz acima é simplificada, estou coletando um valor por milissegundo no meu código real e eu preciso processar a saída em um algoritmo que eu 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 olharia para trás e verá o último número 0.25 como o pico, pois há uma diminuição para 0.24 antes dele. O objetivo é tomar esses valores e aplicar um algoritmo para eles que irá suavizar-los um pouco para que eu tenha mais valores lineares. (Ou seja: Id como meus resultados para ser curvy, não jaggedy) Ive foi dito para aplicar um filtro exponencial de média móvel para os meus valores. Como posso fazer isso É muito difícil para mim ler equações matemáticas, eu lidar muito melhor com o código. Como processar valores em minha matriz, aplicando um cálculo exponencial de média móvel para igualá-los out perguntou Feb 8 12 at 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 requer uma pequena classe (supondo que você está usando o Java 5 ou posterior): Instantiate com o parâmetro de decadência desejado (pode ter ajuste deve estar entre 0 e 1) e use a média () para filtrar. Ao ler uma página sobre alguma 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 matrizes e seqüências com subscritos. (Eles têm algumas outras notações também, o que não ajuda.) No entanto, o EMA é bastante simples, como você só precisa se lembrar de um antigo valor não arrays estado complicado necessário. Respondeu 8 fevereiro às 20:42 TKKocheran: Muito bonito. Não é bom quando as coisas podem ser simples (se começar com uma nova seqüência, obter um novo averager.) Observe que os primeiros termos na seqüência média saltarão um pouco devido a efeitos de limite, 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 de média móvel para o averager e experimentar sem perturbar o resto do seu programa demais. Ndash Donal Fellows Feb 9 12 em 0:06 Estou tendo dificuldade em compreender suas perguntas, mas vou tentar responder de qualquer maneira. 1) Se o seu algoritmo encontrado 0,25 em vez de 0,36, então ele está errado. É errado porque assume um aumento ou uma diminuição monotônica (que está sempre subindo ou sempre indo para baixo). A menos que você média TODOS os seus dados, seus pontos de dados --- como você apresentá-los --- são não-lineares. Se você realmente deseja encontrar o valor máximo entre dois pontos no tempo, corte sua matriz de tmin para tmax e localize 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 isto tomando 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úmeros) 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 o 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 ao Google Finance, selecionar um estoque (tente Tesla Motors bastante volátil (TSLA)) e clique em technicals na parte inferior do gráfico. Selecione Média Móvel com um determinado período, e média móvel exponencial para comparar suas diferenças. A média móvel exponencial é apenas mais uma elaboração disto, mas pondera os dados mais antigos menos do que os novos dados, isto é uma forma de influenciar a suavização em direção às costas. Por favor, leia a entrada da Wikipedia. Então, isso é mais um comentário do que uma resposta, mas a pequena caixa de comentários era apenas pequena. Boa sorte. Se você está 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 o último x termos dividido por x. Pseudocódigo não testado: Note que você precisará manipular as partes inicial e final dos dados, uma vez que claramente você não consegue média dos últimos 5 termos quando você está no seu 2º ponto de dados. Além disso, há maneiras mais eficientes de calcular essa média móvel (soma sum - mais antigo mais recente), mas isso é para obter o conceito do que está acontecendo em toda. Respondeu 8 de fevereiro às 20:41 O cientista e engenheiros guia para processamento de sinal digital Por Steven W. Smith, Ph. D. Como o nome indica, o filtro de média móvel opera fazendo a média de um número de pontos a partir do sinal de entrada para produzir cada ponto no sinal de saída. Na forma de equação, isto é escrito: Onde está o sinal de entrada, é o sinal de saída, e M é o número de pontos na média. Por exemplo, num filtro de média móvel de 5 pontos, o ponto 80 no sinal de saída é dado por: Como alternativa, o grupo de pontos do sinal de entrada pode ser escolhido simetricamente em torno do ponto de saída: Isto corresponde à alteração da soma em Eq . 15-1 de: j 0 para M -1, para: j - (M -1) 2 para (M -1) 2. Por exemplo, em um filtro de média móvel de 10 pontos, o índice, j. Pode variar de 0 a 11 (média de um lado) ou -5 a 5 (média simétrica). A média simétrica requer que M seja um número ímpar. Programação é ligeiramente mais fácil com os pontos em apenas um lado no entanto, isso produz uma mudança relativa entre os sinais de entrada e saída. Você deve reconhecer que o filtro de média móvel é uma convolução usando um kernel de filtro muito simples. Ou seja, o filtro de média móvel é uma convolução do sinal de entrada com um impulso rectangular que tem um comprimento de onda de 5 mm, ou seja, um filtro de 5 pontos com o núcleo de filtro 82300, 0, 15, 15, 15, 15, 15, Área de um. A Tabela 15-1 mostra um programa para implementar o filtro de média móvel. Este applet java é uma demonstração de filtros digitais. Você deve ouvir uma forma de onda de ruído quando o applet é iniciado. Se você receber uma mensagem Precisa de java 2 para som, então você deve obter o plug-in Java. O applet é iniciado com um filtro passa-baixa. Mostra a resposta de freqüência do filtro, o espectro da forma de onda filtrada que está sendo reproduzida, a própria forma de onda ea resposta de impulso do filtro. Clique na curva de resposta para alterar a frequência de corte. O gráfico de resposta de freqüência mostra a resposta do filtro (mostrada verticalmente, em dB, com linhas em intervalos de 10 dB) em relação à freqüência (mostrada horizontalmente, com linhas verticais marcando octaves). O gráfico de espectro mostra o espectro da saída de som. O menu popup Input permite que você selecione uma forma de onda de entrada. As opções são: Noise Sine Wave - selecione a freqüência clicando no espectro. Sawtooth Wave Triangle Onda Onda quadrada Periodic Noise - selecione a freqüência clicando no espectro. Sweep - uma onda senoidal que varre o espectro de freqüência em uma taxa ajustável. Impulsos Vários arquivos mp3 (você pode adicionar o seu próprio, baixando o applet e, em seguida, editando o arquivo index. html) O menu popup Filtro permite que você selecione um filtro. Consulte este site para obter detalhes técnicos sobre os tipos de filtro. As opções são: FIR Low-pass - filtra as altas freqüências (tudo abaixo da freqüência de corte, que é ajustável clicando no gráfico de resposta com o mouse). FIR High-pass - filtra as frequências baixas. FIR Passo de banda - filtra tudo, exceto um intervalo de freqüências. Use os controles deslizantes de Freqüência central e largura de banda passante para ajustar o alcance. FIR Band-stop - filtra uma gama de frequências. Aqui estão alguns parâmetros ajustáveis ​​que afetam a qualidade dos filtros FIR: o número de pontos, que você pode ajustar com o controle deslizante Order (mais pontos é melhor) ea janela, que você seleciona com o popup Window. Um filtro FIR é definido por sua resposta ao impulso, que você pode ver perto da parte inferior da janela. Para exibir a função de janela, selecione FIR Low-pass. Ajuste a frequência de corte perto de zero e observe a resposta ao impulso. Custom FIR - desenhe no gráfico de resposta de freqüência para especificar seu próprio filtro. A resposta real, mostrada em vermelho, é afetada pelo controle deslizante Ordem e janela pop-up. Nenhum filtro Butterworth Low-pass - um filtro plano que filtra as altas freqüências Butterworth High-pass - um filtro plano que filtra as freqüências baixas Butterworth Band-pass - um filtro plano que filtra freqüências fora de uma determinada banda Butterworth Band - Stop - um filtro plano que filtra as frequências dentro de uma determinada banda Chebyshev Low-pass - um filtro passa-baixo com uma quantidade ajustável de ondulação na passband Chebyshev High-pass, Band-pass, Band-stop Inv Cheby Low-pass - Chebyshev inverso (também conhecido como Chebyshev tipo II), um filtro passa-baixa com uma banda de passagem plana, mas uma quantidade ajustável de ondulação na banda de interrupção Inv Cheby High-pass, Band-pass, Band-stop Elliptic Low-pass - Também conhecido como Cauer) um filtro passa-baixa com uma quantidade ajustável de ondulação na banda de passagem e stopband. Ajustar a largura da banda de transição alterará a atenuação da banda de interrupção. Elíptico High-pass, Band-pass, Band-stop Comb () - este filtro (usado no ruído) soa como alguém soprando em um tubo. Pente (-) - este é um tubo com uma extremidade coberta. Delay - um filtro de eco (o mesmo que um filtro de pente, mas com atrasos mais longos) Filtro de cordas arrancadas - quando o popup de Entrada é definido como Impulsos, isso soa como uma seqüência de caracteres sendo arrancada. Inverse Comb Reson - ressoa em uma freqüência Reson w Zeros - um filtro reson com zeros adicionado a 0 ea metade da taxa de amostragem Notch - filtra uma faixa estreita de freqüências Moving Average - uma simples FIR tentativa de um filtro passa-baixa. Este filtro (quando usado em ruído) me lembra um Atari 2600. Triangle Allpass - passa todas as freqüências igualmente, mas com atraso de fase diferente. Use o item Resposta de fase no menu Exibir para exibir a resposta de fase. Para frequências baixas, este filtro actua como um atraso fracionário (um atraso de menos de uma amostra). Gaussian - a resposta de impulso ea resposta de freqüência são gaussianas em forma de Random Custom IIR - arrastar os pólos e zeros em torno de mudar o filtro. O popup Taxa de amostragem permite que você visualize ou altere a taxa de amostragem. Você não pode mudar a taxa se a entrada é um MP3. O menu Ver permite activar ou desactivar as várias vistas. O item de escala de freqüência de registro que mostra a resposta de freqüência usando um gráfico logarítmico ao invés de linear. O item Mostrar toda a forma de onda irá comprimir os segmentos da forma de onda horizontalmente para que cada um encaixe na janela desta forma, toda a forma de onda será exibida, mas geralmente a janela não será ampla o suficiente para mostrar cada amostra separadamente. O item Ferris Plot exibirá um gráfico Ferris da função de transferência. Ao exibir a resposta de freqüência, o applet mostra apenas a parte do espectro de 0 para a freqüência de Nyquist (pi). O resto da resposta até 2pi é apenas uma imagem espelhada deste e, em seguida, a resposta repete a cada 2pi. Por exemplo, aqui está uma resposta de freqüência como exibido no applet (até pi): Aqui está a resposta até 4pi: Livros bons sobre filtros digitais: Steiglitz (excelente introdução ao DSP tem informações sobre filtros de pente, resons, cordas arrancadas ) Smith (downloadable) Descrição de Winder MitraPublishers AIRC para Web site dá a seus visitantes uma calculadora financeira easy-to-use que calcule a taxa de interesse média que pagam em suas dívidas. Facilmente instalado em sites. 17 MoneyToys (tm) calculadoras financeiras para websites dar aos webmasters uma maneira simples de agregar valor a um site, fornecendo seus visitantes com calculadoras financeiras que são fáceis de instalar e configurar. Calculadora de juros Use Markosofts para calcular rapidamente praticamente todos os tipos de juros, incluindo o montante do pagamento, duração do empréstimo, juros diários e juros de poupança. Ele também pode ser usado para imprimir ou visualizar detalhado. Calculadora da folha de pagamento O melhor programa do planejador do empregado fornece o feiticeiro altamente interativo amigável da relação da GUI do usuário que ajuda usuários a integrar facilmente com funções e características do software sem adquirir nenhuma programação especial. Employee planner utilitário fornece dados. Calculadora de imposto BRITÂNICO Usando dados oficiais do rendimento interno BRITÂNICO, permitirá que você veja quanto imposto de renda e seguro nacional são devidos para um determinado salário. A aplicação apoia a análise de múltiplos salários e pacotes de benefícios, poupança de salários. Mortgage Calculator Em comparação com a Calculadora de Taxa Média de juros para calcular os reembolsos do empréstimo hipotecário. Descobrir quanto você pode realisticamente emprestar com base em seu próprio orçamento pessoal Sugestões

Comments