我有1028(7 * 21)矩阵,我将这1028个不同的矩阵保存在一个数组中。我们可以说数组是a,所以 a [1]包含第一个矩阵 a [2]包含第二个矩阵 a [3]包含第三个矩阵 a [4]包含第四个矩阵,依此类推 ... ... a [1028]包含第1028个矩阵。
现在我要检索1到147个矩阵的第一行,148到294个矩阵的第二行,295到441个矩阵的第三行,依此类推,直到1028个。
答案 0 :(得分:0)
经过一些准备工作后,您可以使用reshape
。
% generate example data
X = {repmat({rand(7,21)},1028,1)}
这是1028x1 cell
- 但您需要 1029 矩阵才能将其整除为 147 :
X = vertcat(X{1},{[]})
现在您可以根据需要重塑它:
Y = reshape(X,147,[])
这是147x7 cell
,包含1028个7x21
矩阵和一个空占位符。
对X
的任意数量元素和选择的除数的更通用的解决方案是:
divisor = 147;
N = numel( X{1} ); %// for example 1023
missingCells = ceil(N/divisor)*divisor - N; %// would be 6 then
X = vertcat( X{1}, repmat({[]}, missingCells,1) ); %// fill up with + 6 cells
Y = reshape( X, divisor,[] ); %// 147x7 cell