我有一个这样的行向量:x = [1 2 3 4 5 6 7 15 16 17];
我希望得到x
中的两个行向量,它们应该分别具有连续的数字:
x1 = [1 2 3 4 5 6 7]
和
x2 = [15 16 17]
答案 0 :(得分:3)
>1
的索引(使用find
和diff
)mat2cell
像这样:
idx = find([diff(x)>1, 1])
did = [idx(1), diff(idx)]
mat2cell(x,1,did)
答案 1 :(得分:2)
这是一个解决方案(使用稍微复杂的例子):
x = [1 2 3 4 5 6 7 15 16 17 20:25 33 36:40];
ed = [find(diff(x)>1), numel(x)]; %// edges between groups
res = mat2cell(x, 1, ed-[0 ed(1:end-1)])
结果单元格数组:
>> res{1}
1 2 3 4 5 6 7
>> res{2}
15 16 17
>> res{3}
20 21 22 23 24 25
>> res{4}
33
>> res{5}
36 37 38 39 40
答案 2 :(得分:0)
可能不是一个好方法!但这是另一种分离数组的方式:
k=[find(diff(x)~=1) length(x)];
t1=1;
for n = 1:length(k)
t2 = k(n);
assignin('base', ['x' num2str(n)], x(t1:t2));
t1 = t2 + 1;
end
您的示例的输出: -
>> x1
x1 =
1 2 3 4 5 6 7
>> x2
x2 =
15 16 17