Moving average 2d matlab
Usando o 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 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 simplesmente se encaixar 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: The Scientist e Engineers Guide to Digital Signal Processing 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 a M -1, para: j - (M -1) / 2 a (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. A programação é ligeiramente mais fácil com os pontos de 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. Por exemplo, um filtro de 5 pontos tem o kernel do filtro: 82300, 0, 1/5, 1/5, 1/5, 1/5, 1/5, 0, 08230. Ou seja, o filtro de média móvel é uma convolução Do sinal de entrada com um impulso retangular com uma área de um. A Tabela 15-1 mostra um programa para implementar o filtro de média móvel. Função média de mo - vimento resultmovingmean (data, window, dim, option) calcula uma média móvel centralizada dos dados de matriz de dados usando um tamanho de janela especificado na janela dim dimension, Especificado na opção. Dim e opção são entradas opcionais e serão padrão para 1. Dim e opcional entradas opcionais podem ser ignoradas completamente ou pode ser substituído por a. Por exemplo, movingmean (dados, janela) dará os mesmos resultados que movingmean (data, window, 1,1) ou movingmean (data, window ,, 1). O tamanho ea dimensão da matriz de dados de entrada são limitados apenas pelo tamanho máximo da matriz para a sua plataforma. A janela deve ser um número inteiro e deve ser ímpar. Se a janela é mesmo então é arredondado para baixo para o próximo número impar mais baixo. A função calcula a média móvel incorporando um ponto central e (janela-1) / 2 elementos antes e depois na dimensão especificada. Nas bordas da matriz, o número de elementos antes ou depois é reduzido para que o tamanho da janela real seja menor que a janela especificada. A função é dividida em duas partes, um algoritmo 1d-2d e um algoritmo 3D. Isto foi feito para optimizar a velocidade da solução, especialmente em matrizes menores (isto é, 1000 x 1). Além disso, vários algoritmos diferentes para o problema 1d-2d e 3d são fornecidos como em certos casos o algoritmo padrão não é o mais rápido. Isto tipicamente acontece quando a matriz é muito larga (isto é 100 x 100000 ou 10 x 1000 x 1000) e a média móvel está a ser calculada na dimensão mais curta. O tamanho onde o algoritmo padrão é mais lento dependerá do computador. MATLAB 7.8 (R2009a) Tags para este arquivo Por favor, faça o login para marcar arquivos. Faça o login para adicionar um comentário ou avaliação. Comentários e Avaliações (8) A função lida com as extremidades, cortando a parte de arrasto ou líder da janela e fazendo a transição para uma média móvel inicial ou descendente em vez de uma centrada. Para ir com o exemplo que você deu no seu comentário, se o tamanho da janela é 3, em seguida, em um centro de 1 a média da função de dados de pontos 1 e 2 em um centro de 2 pontos 1, 2 e 3 são médias em um centro de 9 Os pontos 8, 9 e 10 são médios e num centro de 10 (permite assumir que o vector tem 10 entradas) os pontos 9 e 10 são calculados pela média. Como é que movemean lidar com as extremidades Começa com um tamanho de janela que abrange apenas ponto 1 em 1, em seguida, 3 pontos no ponto 2, em seguida, aumentando no tamanho da janela até que o tamanho da janela é o especificado na entrada de função Obrigado. Agradável e simples. Obrigado. Bom trabalho Muito útil como disse Stephan Wolf. Apenas o que eu estava procurando. Média móvel centrada que é capaz de trabalhar em um enredo em toda a largura, sem ter que olhar para o tamanho da janela do filtro e mover o início. Great Acelerando o ritmo da engenharia e da ciência MathWorks é o desenvolvedor líder de software de computação matemática para engenheiros e cientistas.
Comments
Post a Comment