Saturday 26 August 2017

Moving Average Matlab Function


Criado em quarta-feira, 08 de outubro de 2008 20:04 Atualizado em quinta-feira, 14 de março de 2013 01:29 Escrito por Batuhan Osmanoglu Acessos: 40900 Média móvel em Matlab Muitas vezes eu me encontro na necessidade de prover os dados que eu tenho para reduzir o ruído um pouco pouco. Eu escrevi algumas funções para fazer exatamente o que eu quero, mas os matlabs criados na função de filtro funcionam muito bem também. Aqui vou escrever sobre a média de dados 1D e 2D. O filtro 1D 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), é 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 funciona o filtro, 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. Como tudo o que queremos é contribuição igual de todos os vizinhos, podemos usar apenas a função. Nós dividimos tudo com 256 (1616), pois não queremos alterar 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 o Azimuth é mapeado no eixo X. O filtro tinha 4 pixels de largura em Gama e 16 pixels de largura em Azimuth. Estou tentando completar um projeto de atribuição matlab com a seguinte pergunta: Escreva uma função chamada motionaverage que leva um escalar chamado x como um argumento de entrada e retorna um escalar. A função usa um buffer para manter as entradas anteriores e o buffer pode conter no máximo 25 entradas. Especificamente, a função deve salvar as 25 entradas mais recentes em um vetor (o buffer). Cada vez que a função é chamada, ele copia o argumento de entrada em um elemento do buffer. Se já houver 25 entradas armazenadas no buffer, ele descarta o elemento mais antigo e salva o atual no buffer. Depois de armazenar a entrada no buffer, ele retorna a média de todos os elementos no buffer. A solução que eu forneço é a seguinte: de acordo com a graduação automática, minha função funciona corretamente quando os valores 1-50 estão passando consecutivamente, mas falham quando os valores de uma onda sinusoidal barulhenta estão passando consecutivamente (o que fui informado que pode ser devido a alguns Tipo de erro de redondeamento). Agradeceria se algum de vocês pudesse fornecer algumas dicas sobre as possíveis etapas de erro no meu código (anexado acima). Agradeço antecipadamente

No comments:

Post a Comment