Sunday 22 October 2017

Moving Average Filter Using Matlab


Criado em quarta-feira, 08 de Outubro de 2008 20:04 Última atualização em Quinta, 14 Março 2013 01:29 Escrito por Batuhan Osmanoglu Hits: 38926 Moving Average Em Matlab Muitas vezes eu me encontro na necessidade de calcular a média dos dados que tenho para reduzir o ruído um pouco pouco. Eu escrevi funções de casal para fazer exatamente o que eu quero, mas matlabs construído em função de filtro funciona muito bem também. Aqui Ill escrever sobre 1D e 2D média dos 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 do denominador para o filtro (a) e os dados (X), é claro. Um filtro de média em execução pode ser definido simplesmente por: Para dados 2D, podemos usar a função Matlabs filter2. Para obter mais informações sobre como o filtro funciona, você pode digitar: Aqui está uma implementação rápida e suja de um filtro de média móvel 16 por 16. Primeiro precisamos definir o filtro. Uma vez que tudo o que queremos é a contribuição igual de todos os vizinhos, podemos apenas usar a função uns. Nós dividimos tudo com 256 (1616) desde que nós não queremos mudar o nível geral (amplitude) do sinal. Para aplicar o filtro podemos simplesmente dizer o seguinte Abaixo estão os resultados para a fase de um interferograma SAR. Neste caso, Range está no eixo Y e Azimuth é mapeado no eixo X. O filtro tinha 4 pixels de largura em Alcance e 16 pixels de largura em Azimute. A resposta de freqüência de um sistema LTI é a DTFT da resposta de impulso. A resposta de impulso de uma média móvel de L é a média móvel. Uma vez que o filtro de média móvel é FIR, a resposta de freqüência reduz-se à soma finita Podemos usar a identidade muito útil para escrever a resposta de freqüência como onde temos deixado ae menos jomega. N 0 e M L menos 1. Podemos estar interessados ​​na magnitude desta função para determinar quais freqüências passam pelo filtro sem atenuação e quais são atenuadas. Abaixo está um gráfico da magnitude desta função para L 4 (vermelho), 8 (verde) e 16 (azul). O eixo horizontal varia de zero a pi radianos por amostra. Observe que, em todos os três casos, a resposta de freqüência tem uma característica de passagem baixa. Uma componente constante (frequência zero) na entrada passa através do filtro sem ser atenuada. Certas frequências mais elevadas, como pi / 2, são completamente eliminadas pelo filtro. No entanto, se a intenção era projetar um filtro lowpass, então não temos feito muito bem. Algumas das frequências mais altas são atenuadas apenas por um factor de cerca de 1/10 (para a média móvel de 16 pontos) ou 1/3 (para a média móvel de quatro pontos). Podemos fazer muito melhor do que isso. O gráfico acima foi criado pelo seguinte código de Matlab: omega 0: pi / 400: pi H4 (1/4) (1-exp (-iomega4)) ./ (1-exp (-iomega)) H8 (1/8 ) (1-exp (-iomega8)) ./ (1-exp (-iomega)) lote (omega , Abs (H4) abs (H8) abs (H16)) eixo (0, pi, 0, 1) Copyright copy 2000- - Universidade da Califórnia, BerkeleyMoving Um filtro de média móvel com uma janela deslizante de 4 horas. A seguinte equação de diferenças descreve um filtro que calcula a média da hora atual e das três horas anteriores de dados. Importe os dados de tráfego e atribua a primeira coluna de contagens de veículos ao vetor x. Crie os vetores de coeficiente de filtro. Calcule a média móvel de 4 horas dos dados e trace os dados originais e os dados filtrados. MATLAB e Simulink são marcas registradas da The MathWorks, Inc. Consulte mathworks / marcas comerciais para obter uma lista de outras marcas comerciais de propriedade da The MathWorks, Inc. Outros produtos ou marcas são marcas comerciais ou marcas registradas de seus respectivos proprietários. Selecione seu PaísUsando MATLAB, como posso encontrar a média móvel de 3 dias de uma coluna específica de uma matriz e anexar a média móvel àquela matriz Estou tentando calcular a média móvel de 3 dias de baixo para cima da matriz. Eu forneci o meu código: Dada a seguinte matriz a e máscara: Eu tentei implementar o comando conv, mas estou recebendo um erro. Aqui está o comando conv que eu tenho tentado usar na segunda coluna da matriz a: A saída que desejo é dada na seguinte matriz: Se você tiver alguma sugestão, eu gostaria muito. Obrigado Para a coluna 2 da matriz a, estou computando a média móvel de 3 dias da seguinte maneira e colocando o resultado na coluna 4 da matriz a (I renomeado matriz a como 39desiredOutput39 apenas para ilustração). A média de 3 dias de 17, 14, 11 é 14 a média de 3 dias de 14, 11, 8 é 11 a média de 3 dias de 11, 8, 5 é 8 ea média de 3 dias de 8, 5, 2 é 5. Não há valor nas 2 linhas inferiores para a 4ª coluna porque a computação para a média móvel de 3 dias começa na parte inferior. A saída 39valid39 não será mostrada até pelo menos 17, 14 e 11. Espero que isso faz sentido ndash Aaron Jun 12 13 em 1:28 1 Resposta Em geral, seria útil se você mostrar o erro. Neste caso você está fazendo duas coisas erradas: Primeiro, sua convolução precisa ser dividida por três (ou o comprimento da média móvel) Segundo, observe o tamanho de c. Você não pode apenas caber c em um. A maneira típica de obter uma média móvel seria usar o mesmo: mas isso não se parece com o que você quer. Em vez disso, você é forçado a usar um par de linhas: Filtro Móvel-Médio de Dados de Tráfego Este exemplo mostra como suavizar os dados de fluxo de trânsito usando um filtro de média móvel com uma janela deslizante de 4 horas. A seguinte equação de diferenças descreve um filtro que calcula a média da hora atual e das três horas anteriores de dados. Importe os dados de tráfego e atribua a primeira coluna de contagens de veículos ao vetor x. Crie os vetores de coeficiente de filtro. Calcule a média móvel de 4 horas dos dados e trace os dados originais e os dados filtrados. MATLAB e Simulink são marcas registradas da The MathWorks, Inc. Consulte mathworks / marcas comerciais para obter uma lista de outras marcas comerciais de propriedade da The MathWorks, Inc. Outros produtos ou marcas são marcas comerciais ou marcas registradas de seus respectivos proprietários. Selecione seu país

No comments:

Post a Comment