Monday 15 April 2019

Moving average filter matlab code example


Criado em quarta-feira, 08 de outubro de 2008 20 04 Atualizado em Quinta-feira, 14 de Março de 2017 01 29 Escrito por Batuhan Osmanoglu Acessos 41574.Moving Average Em Matlab. Often Eu me vejo na necessidade de calcular a média dos dados que tenho para reduzir o ruído um pouco Eu escrevi funções de casal para fazer exatamente o que eu quero, mas matlab s construído em função de filtro funciona muito bem também Aqui eu vou escrever sobre 1D e 2D média de dados.1D filtro pode ser realizado usando a função de filtro A função de filtro requer pelo menos Três parâmetros de entrada o coeficiente de numerador para o filtro b, o coeficiente de denominador para o filtro a, e os dados X naturalmente. Um filtro de média de corrida pode ser definido simplesmente por. Para dados 2D podemos usar a função filter2 de Matlab s Para mais informações Sobre como o filtro funciona, você pode digitar. Aqui está uma implementação rápida e suja de um filtro de 16 por 16 média móvel Primeiro precisamos definir o filtro Uma vez que todos nós queremos é a contribuição igual de todos os vizinhos, podemos apenas usar os ones diversão Ction Nós dividimos tudo com 256 16 16 uma vez que don t quer alterar a amplitude de nível geral do sinal. Para aplicar o filtro podemos simplesmente dizer o seguinte. Below são os resultados para a fase de um interferograma SAR Neste caso Range está em O eixo Y e Azimuth é mapeado no eixo X O filtro foi 4 pixels de largura em Gama e 16 pixels de largura em Azimuth. Download movAv m ver também movAv2 - uma versão atualizada permitindo a ponderação. Descrição Matlab inclui funções chamadas movavg e tsmovavg tempo série de média móvel Na caixa de ferramentas financeira, movAv é projetado para replicar a funcionalidade básica destes O código aqui fornece um bom exemplo de gerenciamento de índices dentro de loops, que pode ser confuso para começar com eu ve deliberadamente mantido o código curto e simples para manter este processo claro. MovAv executa uma média móvel simples que pode ser usada para recuperar dados ruidosos em algumas situações. Trabalha tomando a média da entrada y sobre uma janela de tempo deslizante, cujo tamanho é especificado por n Quanto maior for n, maior a quantidade de suavização do efeito de n é relativa ao comprimento do vetor de entrada y e efetivamente bem, tipo de cria um filtro de freqüência de passagem baixa - ver os exemplos e seção de considerações. Porque a quantidade de suavização fornecida Por cada valor de n é relativo ao comprimento do vetor de entrada, é sempre vale a pena testar diferentes valores para ver o que é apropriado Lembre-se também que n pontos são perdidos em cada média se n é 100, os primeiros 99 pontos do vetor de entrada Não pode conter dados suficientes para uma média de 100pt Isso pode ser evitado um pouco empilhando médias, por exemplo, o código eo gráfico abaixo comparar um número de diferentes médias de janela de comprimento Observe como liso 10 10pt é comparado a um único 20pt média Em ambos os casos 20 Pontos de dados são perdidos no total. Criar xaxis x 1 0 01 5 Gerar ruído noiseReps 4 ruído repmat randn 1, ceil numel x ruídoReps, noiseReps, 1 ruído remodelar ruído, 1, comprimento ruído noiseReps gerar ruído ydata y exp x 10 ruído 1 comprimento x Perfrom médias y2 movAv y, 10 10 pt y3 movAv y2, 10 10 10 pt y4 movAv y, 20 20 pt y5 movAv y, 40 40 pt y6 movAv y, 100 100 pt Figura de plotagem x, y, y2, y3, y4, y5, y6 legend Raw Dados, média móvel 10pt, 10 10pt, 20pt, 40pt, 100pt xlabel x ylabel y título Comparação de médias móveis. movAv m função de execução de código de saída movAv y, n A primeira linha define o nome da função s, entradas e saídas A entrada X deve ser um vetor de dados para realizar a média em, n deve ser o número de pontos a realizar a média sobre a saída conterá os dados médios retornados pela função Prealocar a saída de saída NaN 1, numel y Encontrar ponto médio de n round midPoint N 2 O trabalho principal da função é feito no loop for, mas antes de iniciar duas coisas são preparadas Fir A saída é pré-alocada como NaNs, isso serviu dois propósitos Em primeiro lugar preallocation é geralmente boa prática, uma vez que reduz a memória malabarismo Matlab tem que fazer, em segundo lugar, torna muito fácil de colocar a média dos dados em uma saída do mesmo tamanho como O vetor de entrada Isso significa que o mesmo xaxis pode ser usado posteriormente para ambos, o que é conveniente para plotar, alternativamente os NaNs podem ser removidos posteriormente em uma linha de saída de saída de código. O midPoint variável será usado para alinhar os dados no vetor de saída Se n 10, 10 pontos serão perdidos porque, para os primeiros 9 pontos do vetor de entrada, não há dados suficientes para tomar uma média de 10 pontos Como a saída será menor que a entrada, ela precisa ser alinhada corretamente Ser usada para que uma quantidade igual de dados seja perdida no início e no fim ea entrada é mantida alinhada com a saída pelos buffers NaN criados quando a saída de pré-alocação é. Saída média MidPoint mean yab end No loop for, uma média é tomada sobre cada segmento consecutivo da entrada O loop será executado para a que é definido como 1 até o comprimento da entrada y, menos os dados que serão perdidos n If A entrada é de 100 pontos de comprimento e n é 10, o loop será executado a partir de um 1 a 90. Isso significa que a fornece o primeiro índice do segmento a ser média O segundo índice b é simplesmente um n-1 Assim na primeira iteração, A 1 n 10 so b 11-1 10 A primeira média é tomada sobre yab ou x 1 10 A média deste segmento, que é um único valor, é armazenada na saída no índice a midPoint ou 1 5 6. Na segunda iteração , A 2 b 2 10-1 11 de modo que a média é tomada sobre x 2 11 e armazenada na saída 7 Na última iteração do laço para uma entrada de comprimento 100, a 91 b 90 10-1 100 assim que a média é tomada Sobre x 91 100 e armazenado na saída 95 Isso deixa a saída com um total de n 10 valores NaN no índice 1 5 e 96 100.Exemplos e considerações As médias móveis são úteis em algumas situações, Re nem sempre a melhor escolha Aqui estão dois exemplos onde eles não são necessariamente otimizado. Calibração de microfone Este conjunto de dados representa os níveis de cada freqüência produzida por um alto-falante e gravado por um microfone com uma resposta linear conhecida A saída do alto-falante varia com Freqüência, mas podemos corrigir para esta variação com os dados de calibração - a saída pode ser ajustada em nível para ter em conta as flutuações na calibração. Observe que os dados brutos são ruidosos - isso significa que uma pequena mudança na freqüência parece exigir um Grande, errático, a mudança no nível a ser considerado isto é realista Ou é isto um produto do ambiente de gravação É razoável neste caso aplicar uma média móvel que alisa a curva de freqüência de nível para fornecer uma curva de calibração que é ligeiramente menos errática Mas por que não é o ideal neste exemplo. Mais dados seriam melhores - múltiplas calibrações executadas em média juntos iria destruir o ruído no sistema, desde que s correu Dom e fornecer uma curva com menor detalhe sutil perdeu A média móvel só pode aproximar isso, e pode remover algumas frequências mais altas mergulhos e picos da curva que realmente existem. Sine waves Usando uma média móvel em ondas senoidal destaca dois pontos. Questão de escolher um número razoável de pontos para executar a média over. It s simples, mas existem métodos mais eficazes de análise de sinal do que a média dos sinais oscilantes no domínio do tempo. Em este gráfico, a onda senoidal original é plotada em azul Noise is Adicionado e plotado como a curva laranja Uma média móvel é executada em números diferentes de pontos para ver se a onda original pode ser recuperada 5 e 10 pontos fornecem resultados razoáveis, mas don t remover o ruído completamente, onde como um maior número de pontos começam a Perder detalhe de amplitude como a média se estende ao longo de diferentes fases lembrar a onda oscila em torno de zero, e média -1 1 0. Uma abordagem alternativa seria a construção de um filtro passa-baixa do que pode ser Aplicado ao sinal no domínio da freqüência não vou entrar em detalhes porque vai além do escopo deste artigo, mas como o ruído é freqüência consideravelmente mais alta do que a freqüência fundamental das ondas, seria bastante fácil, neste caso, construir Um filtro passa-baixa que irá remover o ruído de alta freqüência. Este exemplo mostra como usar filtros de média móvel e reamostragem para isolar o efeito de componentes periódicos da hora do dia em leituras de temperatura horária, bem como remover o ruído de linha indesejável de um open - Loop de medição de tensão O exemplo também mostra como suavizar 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. Smoothing é como descobrimos padrões importantes em nossos dados Enquanto deixando de fora as coisas que são sem importância, ou seja, ruído Nós usamos a filtragem para realizar este alisamento O objetivo de suavização é produzir lentas mudanças de valor para que ele é mais fácil de ver tr Termina em nossos dados. Às vezes, quando você examinar os dados de entrada que você pode querer suavizar os dados, a fim de ver uma tendência no sinal No nosso exemplo, temos um conjunto de leituras de temperatura em Celsius tomadas a cada hora em Logan Airport para todo o mês de Janeiro de 2017. Note que podemos ver visualmente o efeito que a hora do dia tem sobre as leituras de temperatura Se você está interessado apenas na variação diária de temperatura ao longo do mês, as flutuações horárias só contribuem com ruído, o que pode tornar as variações diárias difícil Para discernir Para remover o efeito da hora do dia, gostaríamos agora de suavizar os nossos dados usando uma média móvel filter. A média móvel Filter. In sua forma mais simples, um filtro média móvel de comprimento N toma 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, construímos nossos coeficientes de nosso filtro para que cada ponto seja igualmente ponderado e contribua 1 24 para a média total Isso nos dá a média Temperatura durante cada período de 24 horas. Filter Delay. Note que a saída filtrada é adiada por cerca de doze horas Isto é devido ao fato de que o nosso filtro de média móvel tem um delay. Any filtro simétrico de comprimento N terá um atraso de N-1 2 amostras Podemos contabilizar este atraso manualmente. Diferenças Diferenciais Diferenciais. 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 total. Para fazer isso, primeiro, subtraia os dados suavizados de As medições de temperatura por hora Em seguida, segmentar os dados diferenciados em dias e ter a média ao longo de todos os 31 dias no mês. Extrair Peak Envelope. Sometimes também gostaríamos de ter uma estimativa suavemente variável de como os altos e baixos de nossa mudança de sinal de temperatura Diariamente Para fazer isso, podemos usar a função envelope para conectar altos e baixos extremos detectados em um subconjunto do período de 24 horas. Neste exemplo, garantimos que haja pelo menos 16 horas entre cada extremo alto E extrema baixa Também podemos obter uma noção de como os altos e baixos estão tendendo, tendo a média entre os dois extremos. Média Ponderada Filtros Média. Outros tipos de filtros de média móvel não peso cada amostra igualmente. Outro filtro comum segue o binômio Este tipo de filtro aproxima-se de uma curva normal para valores grandes de n É útil para filtrar o ruído de alta frequência para pequenos n Para encontrar os coeficientes para o filtro binomial, convolve-se consigo mesmo e então convolua iterativamente a saída com um número prescrito de Times Neste exemplo, use cinco iterações totais. Um outro filtro um pouco semelhante ao filtro de expansão Gaussian é o filtro de média móvel exponencial Este tipo de filtro de média móvel ponderada é fácil de construir e não requer um tamanho de janela grande. Você ajustar uma ponderação exponencial Filtro de média móvel por um parâmetro alfa entre zero e um. Um valor mais alto de alfa terá menos suavização. Entre nas leituras para Um dia. Selecione seu país.

No comments:

Post a Comment