Tuesday 14 November 2017

Moving Average Savitzky Golay


Savitzky Golay Filtro Descrição O SavitzkyGolayFilter implementa um filtro Savitzky-Golay. O SavitzkyGolayFilter é parte dos módulos de pré-processamento. Um exemplo de um sinal (onda senoidal a 0.1Hz, 0.5Hz, 1Hz, 2Hz, 4Hz e 8Hz) filtrada usando um filtro Savitzky-Golay. O número de pontos de mão esquerda e direita para o filtro foi definido como 15. O sinal vermelho é o sinal bruto e o sinal verde é o sinal filtrado. O sinal e os dados filtrados foram gerados usando o código de exemplo abaixo. Observe que o filtro remove a maior parte do ruído adicionado à onda senoidal, enquanto também mantém os sinais de freqüência mais alta. Outras técnicas de filtragem, como um filtro médio móvel, por exemplo, geralmente achatam os sinais de freqüência mais alta. SavitzkyGolayFilterExampleImage1.jpg Vantagens O filtro de suavização SavitzkyGolay é um filtro que essencialmente executa uma regressão polinomial local (de grau k) em uma série de valores (de pelo menos k1 pontos que são tratados como sendo igualmente espaçados na série) para determinar o valor suavizado Para cada ponto. A principal vantagem desta abordagem é que ela tende a preservar características da distribuição, tais como máximos relativos, mínimos e largura, que geralmente são achatadas por outras técnicas de média adjacentes (como um filtro de média móvel, por exemplo). Desvantagens A principal desvantagem do SavitzkyGolayFilter é que uma pequena quantidade de experimentação é normalmente necessária para encontrar os valores de filtro apropriados necessários para melhor filtrar um sinal específico. Exemplo de código GRT SavitzkyGolayFilter Exemplo Este exemplo demonstra como criar e usar o módulo de pré-processamento GRT SavitzkyGolayFilter. O SavitzkyGolayFilter implementa um filtro médio de filtro Savitzky-Golay. Neste exemplo, criamos uma instância de um SavitzkyGolayFilter e usamos isso para filtrar alguns dados falsos, gerados a partir de uma série de ondas seno (com freqüência crescente variando de 0.1Hz a 8Hz). O sinal de teste e os sinais filtrados são salvos em um arquivo (para que você possa traçar os resultados em Matlab, Excel, etc., se necessário). Este exemplo mostra como: - Criar uma nova instância do SavitzkyGolayFilter com um tamanho específico do ponto da mão esquerda e direita para um sinal de 1 dimensão - Filtrar alguns dados usando o SavitzkyGolayFilter - Salve as configurações do SavitzkyGolayFilter em um arquivo - Carregue as configurações do SavitzkyGolayFilter a partir de um arquivo Include quotGRT. hquot usando namespace GRT int main 40 int argc. Const char argv 91 93 41 123 Crie uma nova instância de um filtro SavitzkyGolayFilter, definindo o número de pontos da mão esquerda e direita para 15 SavitzkyGolayFilter sgf 40 15. 15 41 Crie alguns varaibles para ajudar a gerar dados do sinal const UINT numSeconds 60 O número De segundos de dados que queremos gerar duplo t 0 Isso mantém o tempo do dobro tStep 1.0 1000.0 Isso é o quanto o tempo será atualizado em cada iteração no circuito para loop freq duplo 0 Armazena o mapa de freqüência lt UINT. Double gt freqRates Mantém o mapa de taxas de freqüência lt UINT. Duplo gt. Iterator iter Um iterador para o mapa de taxas de frequência Aleatório aleatório Adicione as taxas de freq O primeiro valor é o tempo em segundos e o segundo valor é a frequência que deve ser configurada naquele tempo freqRates 91 0 93 0.1 freqRates 91 10 93 0.5 freqRates 91 20 93 1 freqRates 91 30 93 2 freqRates 91 40 93 4 freqRates 91 50 93 8 Crie e abra um arquivo para salvar o arquivo de dados fstream. Abra 40 quotSavitzkyGolayFilterData. txtquot. Iostream. 41 Gerar o sinal e filtrar os dados para 40 UINT i 0 i lt numSeconds 1000 i 41 123 Verifique se devemos atualizar a taxa de freq para o próximo valor iter freqRates. Encontre 40 i 1000 41 se 40 iter freqRates. Final 40 41 41 123 Defina o novo valor de frequência freq iter - gt second 125 Gerar o sinal sinal duplo sin 40 t TWOPI freq 41 aleatório. GetRandomNumberGauss 40 0. 0.02 41 Filtra o sinal double filterValue sgf. Filtro 40 sinal 41 Escreva o sinal e os dados filtrados para o arquivo de arquivo ltlt sinal ltlt quot tttlt filterValue ltlt endl Atualize o t t tStep 125 Feche o arquivo de arquivo. Fechar 40 41 Salve as configurações de filtro em um arquivo sgf. SaveSettingsToFile 40 quotSavitzkyGolayFilterSettings. txtquot 41 Podemos então carregar as configurações mais tarde, se necessário sgf. LoadSettingsFromFile 40 quotSavitzkyGolayFilterSettings. txtquot 41 return EXITSUCCESS 125Smoothing remove as variações de curto prazo, ou quotnoisequot para revelar a importante forma subadminente não adulterada dos dados. A operação suave da Igoracutes realiza caixa, quotbinomialquot e suavização Savitzky-Golay. Os diferentes algoritmos de suavização convolvem os dados de entrada com diferentes coeficientes. O suavização é um tipo de filtro passa-baixa. O tipo de suavização e a quantidade de suavização alteram a resposta de frequência do filtro: a média móvel (também conhecido como Suavização de caixa) A forma mais simples de suavização é a média de quotmoving que simplesmente substitui cada valor de dados pela média de valores vizinhos. Para evitar a mudança dos dados, é melhor calcular a mesma quantidade de valores antes e depois, onde a média está sendo calculada. Na forma de equação, a média móvel é calculada por: Outro termo para esse tipo de alisamento é quotsliding averagequot, quotbox smoothingquot ou quotboxcar smoothingquot. Ele pode ser implementado convolvendo os dados de entrada com um pulso em forma de caixa de valores 2M1 todos iguais a 1 (2M1). Nós chamamos esses valores o quotcoefficientsquot do quotmoothing kernelquot: Binomial Smoothing Binomial suavização é um filtro gaussiano. Ele convence seus dados com coeficientes normalizados derivados do triângulo Pascalacutes em um nível igual ao parâmetro Smoothing. O algoritmo é derivado de um artigo de Marchand e Marmet (1983). Savitzky-Golay Smoothing Savitzky-Golay suavização usa um conjunto diferente de coeficientes précomputados populares no campo da química. É um tipo de alisamento polinomial de Menos Quadrados. A quantidade de suavização é controlada por dois parâmetros: a ordem polinomial e o número de pontos utilizados para calcular cada valor de saída suavizado. Referências Marchand, P. e L. Marmet, filtro de suavização binomial: uma maneira de evitar algumas armadilhas de alisamento polinomial de mínimos quadrados, Rev. Sci. Instrum. . 54. 1034-41, 1983. Savitzky, A. e M. J.E. Golay, Suavização e diferenciação de dados por procedimentos simplificados de mínimos quadrados, Química Analítica. 36. 1627-1639, 1964.Documentação Este exemplo mostra como usar os filtros médios móveis e o reamostragem para isolar o efeito de componentes periódicos da hora do dia em leituras horárias horárias, bem como remover o ruído indesejado da linha de uma medida de tensão de 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 2011. 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