“是否有一个 matlab 函数可以将矩阵划分为用户给出的指定块



>我有一个很大的矩阵(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));

最新更新