Sunday 27 August 2017

Moving Average Window Matlab


Usando o MATLAB, como posso encontrar a média móvel de 3 dias de uma coluna específica de uma matriz e acrescentar a média móvel a essa matriz, estou tentando calcular a média móvel de 3 dias de baixo para o topo da matriz. Eu forneci o meu código: Dada a seguinte matriz a e máscara: tentei implementar o comando conv, mas recebo um erro. Aqui está o comando conv que eu tentei usar na 2ª coluna da matriz a: A saída que eu desejo é dada na seguinte matriz: Se você tiver alguma sugestão, eu apreciaria muito. Obrigado Para a coluna 2 da matriz a, eu estou informando a média móvel de 3 dias da seguinte forma e colocando o resultado na coluna 4 da matriz a (I renomeou a matriz a como 39desiredOutput39 apenas para ilustração). A média de 3 dias de 17, 14 e 11 é de 14 a média de 3 dias de 14, 11, 8 é 11, a média de 3 dias de 11, 8, 5 é de 8 e a 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 faça sentido ndash Aaron 12 de junho 13 às 1:28 Em geral, isso ajudaria 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) Em segundo lugar, observe o tamanho de c. Você não pode simplesmente se encaixar em c. 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ê deseja. Em vez disso, você é obrigado a usar um par de linhas: 29 de setembro de 2013 Mover média por convolução O que é média móvel e para o que é bom Como a média móvel é feita usando convolução A média móvel é uma operação simples usada geralmente para suprimir o ruído de um Sinal: estabelecemos o valor de cada ponto para a média dos valores em sua vizinhança. Por uma fórmula: Aqui x é a entrada e y é o sinal de saída, enquanto o tamanho da janela é w, supostamente estranho. A fórmula acima descreve uma operação simétrica: as amostras são retiradas de ambos os lados do ponto real. Abaixo está um exemplo da vida real. O ponto em que a janela é colocada é realmente vermelho. Valores fora de x devem ser zeros: para brincar e ver os efeitos da média móvel, dê uma olhada nesta demonstração interativa. Como fazê-lo por convolução Como você pode ter reconhecido, o cálculo da média móvel simples é semelhante à convolução: em ambos os casos, uma janela é deslizada ao longo do sinal e os elementos na janela são resumidos. Então, tente dar o mesmo ao usar a convolução. Use os seguintes parâmetros: A saída desejada é: Como primeira abordagem, vamos tentar o que obtem ao convolver o sinal x pelo seguinte k kernel: a saída é exatamente três vezes maior do que o esperado. Também pode ser visto que os valores de saída são o resumo dos três elementos na janela. É porque durante a convolução a janela é deslizada, todos os elementos nele são multiplicados por um e depois resumidos: yk 1 cdot x 1 cdot x 1 cdot x Para obter os valores desejados de y. A saída deve ser dividida por 3: por uma fórmula que inclua a divisão: Mas não seria o ideal para fazer a divisão durante a convolução. Aqui vem a idéia ao reorganizar a equação: então usaremos o seguinte k kernel: desta forma, vamos Obtenha o resultado desejado: Em geral: se queremos fazer uma média móvel por convolução com um tamanho de janela de w. Devemos usar o seguinte k kernel: Uma função simples que faz a média móvel é: Um exemplo de uso é: A melhor maneira de fazer isso (na minha opinião) seria usar um buffer circular para armazenar suas imagens. Em um buffer circular ou anel, o elemento de dados mais antigo na matriz é substituído pelo elemento mais novo inserido na matriz. Os conceitos básicos de fazer tal estrutura são descritos no pequeno vídeo Mathworks Implementando um buffer circular simples. Para cada iteração de seu loop principal que lida com uma única imagem, basta carregar uma nova imagem no buffer circular e, em seguida, usar MATLAB s construído na função média para levar a média de forma eficiente. Se você precisar aplicar uma função de janela aos dados, faça uma cópia temporária dos quadros multiplicada pela função da janela e tome a média da cópia em cada iteração do loop. Respondeu 6 de agosto de 12 às 10:11, calcula um tipo de média móvel para cada uma das 10 bandas em todas as suas imagens. Esta linha calcula uma média móvel do valor médio sobre suas imagens: para ambos, você deseja adicionar uma estrutura de buffer que tenha apenas as últimas 10 imagens. Para simplificar, você também pode apenas manter tudo na memória. Aqui está um exemplo para Yout: Mude esta linha: (Adicione uma dimensão) E altere isso: então, para exibir o uso, você faria algo. Similar para meanvalue respondido 6 de agosto 12 às 14:19 Sua resposta 2017 Stack Exchange, Inc

No comments:

Post a Comment