我有一个矩阵A
1 1 0 0
0 1 0 0
1 0 0 1
0 0 1 0
0 0 0 0
0 1 1 1
1 1 0 0
1 0 0 0
0 0 0 1
如果d = [1 2 3],
for i=2:length(d)
d(i) = d(i) + d(i-1); %d=[1 3 6]
end
然后使用,
d = [0, ceil((d./d(end))*length(x))]; %d=[2 5 9]
disp('The resultant split up is:')
for i=2:length(d)
disp(x((d(i-1)+1):d(i)));
end
输出必须是, 分手是: 第1次拆分 - >
1 1 0 0 %first 2 rows in matrix A
0 1 0 0
第二次分手 - >
1 0 0 1 %next 3 rows
0 0 1 0
0 0 0 0
第3次分手 - >
0 1 1 1 %next 4 rows
1 1 0 0
1 0 0 0
0 0 0 1
答案 0 :(得分:2)
如果我理解你的问题,那么你需要mat2cell
:这是一个简短的例子:
%// Bits and hops array
bits = '10001100';
hops = [3 2 3];
A = mat2cell(bits(:)', 1, hops)
结果是字符串的单元格数组:
A =
'100' '01' '100'
此方法也适用于数字数组(例如 bits = [1 0 0 0 1 1 0 0]
)。