Sunday 22 October 2017

Rolling Moving Average Matlab


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 do Mathworks Implementando um buffer circular simples. Para cada iteração do seu loop principal que lida com uma única imagem, basta carregar uma nova imagem no buffer circular e, em seguida, usar o MATLAB 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 mantenha apenas as últimas 10 imagens. Para simplificá-lo, 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. Semelhante a meanvalueComputing uma média de execução de um vetor de dados simples 1-D parece bastante simples. De fato, a documentação do MATLAB para FILTER alega alegremente algo como: Você pode usar o filtro para encontrar uma média em execução sem usar um loop for. Este exemplo encontra a média de execução de um vetor de 16 elementos, usando um tamanho de janela de 3: Para os meus propósitos, existem duas coisas irritantes sobre esse resultado: o ponto de saída n é a média dos pontos de entrada n - (windowSize-1)..n (ou seja, não centrado, como evidenciado pelo deslocamento horizontal) e os pontos a esquerda dos dados disponíveis são tratados como zeros. FILTFILT trata de ambos os problemas, mas tem outras desvantagens. Faz parte da caixa de ferramentas de processamento de sinais, e não funciona bem com o NaNs (que Id como excluído da média). Algumas pessoas da FEX, obviamente, tiveram as mesmas frustrações, mas parece estranho que algo desse simples exija um código personalizado. Qualquer coisa que eu estou faltando aqui perguntou 10 de agosto 10 às 21:39 Hmm. Existe mesmo uma maneira de fazer o preenchimento e obter a média. É que, se digamos que 3 caixas estão caindo da borda em relação a 1, você precisaria almofadar com valores diferentes para obter a média correta para o primeiro compartimento. Especificamente, você precisa se cobrir com a média das caixas válidas, que depende do ponto em consideração. Então eu não tenho certeza se isso é possível com o ndash de estofamento Matt Mizumi 11 de agosto 10 às 4:06

No comments:

Post a Comment