从第n + 1矩阵检索第一行,从第n + 1矩阵到第n + n矩阵检索第二行

时间:2014-03-18 18:27:21

标签: matlab

我有1028(7 * 21)矩阵,我将这1028个不同的矩阵保存在一个数组中。我们可以说数组是a,所以              a [1]包含第一个矩阵              a [2]包含第二个矩阵              a [3]包含第三个矩阵              a [4]包含第四个矩阵,依此类推              ...              ...             a [1028]包含第1028个矩阵。

现在我要检索1到147个矩阵的第一行,148到294个矩阵的第二行,295到441个矩阵的第三行,依此类推,直到1028个。

1 个答案:

答案 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