Pergunta

Estou tentando realizar uma média de binning. Estou usando o código:

Avg = mean(reshape(a,300,144,27));
AvgF = squeeze(Avg);

A última linha se livra das dimensões de Singleton.

Assim, como pode ser visto, tenho uma média de mais de 300 pontos. Funciona bem, exceto nos momentos em que tenho um número total de pontos não iguais a um múltiplo de 144*300.

Existe alguma maneira de fazer esse trabalho médio de binning, mesmo quando o número total de pontos não é um múltiplo de 144*300?

EDITAR: Desculpe se minha pergunta parecia confusa. Esclarecer...

Eu tenho um arquivo com 43200 linhas e 27 colunas. Estou calculando a média de 300 linhas de cada vez, o que significa que no final fico com uma matriz de tamanho 144 por 27.

Meu código, como escrevi acima, funciona apenas quando tenho exatamente 43200 linhas. Em alguns casos, tenho 43199, 43194, etc. A função de remodelamento funciona quando tenho um número total de linhas que é um múltiplo de 300 (o tamanho do compartimento). Existe uma maneira de fazer esse trabalho médio de binning quando meu número total de linhas não é um múltiplo de 300?

Foi útil?

Solução

Acho que entendo melhor o problema agora ...

Se a são os dados lidos do seu arquivo (de tamanho N-by-27, onde n é idealmente 43.200), então acho que você gostaria de fazer o seguinte:

nRemove = rem(size(a,1),300);  %# Find the number of points to remove
a = a(1:end-nRemove,:);        %# Trim points to make an even multiple of 300
Avg = mean(reshape(a,300,[],27));
AvgF = squeeze(Avg);

Isso removerá pontos de modo que o número de linhas em a será um múltiplo de 300. Em seguida, sua remodelamento e média devem funcionar. Observe que eu uso [] na chamada para Remodelar, o que permite descobrir qual deve ser o número de coluna.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top