Matlab 从1到n矩阵检索第一行,从n+检索第二行;第1个矩阵到n+;第n矩阵
我有1028(7*21)个矩阵,我将这些1028个不同的矩阵保存在一个数组中。假设数组是a,那么 [1]包含第一个矩阵 [2]包含第二个矩阵 [3]包含第三个矩阵 [4]包含第四个矩阵,依此类推 ... ... [1028]包含第1028个矩阵Matlab 从1到n矩阵检索第一行,从n+检索第二行;第1个矩阵到n+;第n矩阵,matlab,Matlab,我有1028(7*21)个矩阵,我将这些1028个不同的矩阵保存在一个数组中。假设数组是a,那么 [1]包含第一个矩阵 [2]包含第二个矩阵 [3]包含第三个矩阵 [4]包含第四个矩阵,依此类推 ... ... [1028]包含第1028个矩阵 现在,我想检索1到147个矩阵第一行,148到294个矩阵第二行,295到441个矩阵第三行,等等,直到1028个。经过一些准备工作后,您可以使用重塑 % generate example data X = {repmat({rand(7,21)},1
现在,我想检索1到147个矩阵第一行,148到294个矩阵第二行,295到441个矩阵第三行,等等,直到1028个。经过一些准备工作后,您可以使用
重塑
% generate example data
X = {repmat({rand(7,21)},1028,1)}
这是一个1028x1单元
-但您需要1029矩阵使其可被147整除:
X = vertcat(X{1},{[]})
现在,您可以根据需要对其进行重塑:
Y = reshape(X,147,[])
这是一个147x7单元格
,包含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
您确定您有1028个矩阵,而不是7*147=1029个矩阵吗?如果答案对您有帮助,请将其标记为“已接受”(左侧的复选框),以便系统知道问题已解决。