1

我有一个矩阵 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     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

第三次拆分->

          0     1     1     1    %next 4 rows
          1     1     0     0
          1     0     0     0
          0     0     0     1
4

1 回答 1

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])。

于 2013-04-02T14:20:29.347 回答