MATLAB имеет встроенную функцию изменения формы , выполняющую именно то, что вы хотите:
n = size(matrix, 1);
res = reshape(matrix, n, a, []);
В результате получается n x a x n/a
матрица res
.
Обновление: Как правильно указано в комментариях @ Adriaan , введение дополнительного измерения - не единственный способ разбить двумерную матрицу на несколько меньших.Тот же результат может быть достигнут с помощью встроенной функции Cell Arrays и mat2cell :
res2 = mat2cell(matrix, [n], repmat(a, 1, n/a));