2014-11-26 3 views
1

У меня есть матрица 27x38x8760, где 27x38 представляет сетку и 8760 часов в году. Я хотел бы ежедневно получать сетки, чтобы моя итоговая матрица была 27x38x365. Я использовал reshape для 2-мерной матрицы, но есть ли там использовать его для 3d? вид считает Маттиассредняя 3d матрица matlab с использованием reshape

+0

Как вы можете изменить форму для того, чтобы составлять среднесуточные значения? –

ответ

1

Предполагая A быть входной матрицей, увидеть, если это работает для вас -

[m,n,r] = size(A) 
daily_avg = squeeze(mean(reshape(A,m,n,24,[]),3)) 

Или избежать squeeze с permute -

daily_avg = mean(permute(reshape(A,m,n,24,[]),[1 2 4 3]),4) 
+0

Хорошее использование 'reshape' –

+0

Awesome !!! thanks –

0

Вы также можете использовать цикл,

A = rand([27 38 8760]); 
for i = 1 : 24 :8760 
    A_avg(:,:,ceil(i/24)) = mean(A(:,:,i : i + 23),3); 
end 
Смежные вопросы