Вы можете reshape
свою большую матрицу от 216 х 31286 до 9 х (216/9 * 31286).
Тогда вы можете использовать mean
, который работает с каждым столбцом. Поскольку ваша матрица имеет только 9 строк на столбец, для этого требуется среднее значение из 9 строк.
Тогда вы можете просто reshape
вернуть свою матрицу.
% generate big matrix
M = rand([216 31286]);
n = 9 % want 9-row average.
% reshape
tmp = reshape(M, [n prod(size(M))/n]);
% mean column-wise (and only 9 rows per col)
tmp = mean(tmp);
% reshape back
matrix_avg = reshape(tmp, [ size(M,1)/n size(M,2) ]);
В одной строке (но с чего бы вы?):
matrix_avg = reshape(mean(reshape(M,[n prod(size(M))/n])), [size(M,1)/n size(M,2)]);
Примечание - это будет иметь проблемы, если количество строк в M
не будет делиться точно на 9, но так же будет и ваш исходный код.