>我有一个很大的矩阵(n* n),我想把它除以n*a维度块,其中a是由用户在matlab中给出的
matrix=hadamard(64);
MATLAB 有一个内置的 reshape 函数,完全可以做你想要的:
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));