«Есть ли функция matlab для разделения матриц на заданные пользователем блоки? - PullRequest
0 голосов
/ 20 января 2019

У меня матрица большого размера (n * n), и я хочу разделить ее на n * размерных блоков, где a задается пользователем в matlab

matrix=hadamard(64);

1 Ответ

0 голосов
/ 20 января 2019

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));
...