matlab怎么找出一串数中的连续的数字

输入:[1 1 2 3 6 7 8 9 10 11 12 14 16 17 19]
输出:[1; [1 2 3]; [ 6 7 8 9 10 11 12]; 14; [16 17]; 19]
我的想法:

  1. 遍历整个数列
  2. 一个新的数列用来存放判断连续后的数列
  3. 条件判断:
    1. Value(i+1)-Value(i) == 1, list.append(Value(i+1))
    2. else, list.append(Value(i))

不知道该怎么弄,判断是没问题,但是生成的判断连续数列是有问题的
参考答案:
除了i指示当前遍历到哪里了之外,还设了head,tail两个index来指示找到的连续数列

  1. clc;clear
  2. a = [1 1 2 3 6 7 8 9 10 11 12 14 16 17 19];
  3. b = cell(0,0); %存输出的
  4. num = []; %记录连续数组的长度
  5. ct = 1; %累计数
  6. head = 1; %头
  7. tail = 1; %尾
  8. while(ct<numel(a)) %for ct in len(a):
  9. head = ct;
  10. ct = ct+1; %保证不溢出
  11. while(ct<=numel(a)&&(a(ct)-a(ct-1))==1) %把所有的连续的都找到,然后进入下一个不连续的
  12. ct = ct+1;
  13. end
  14. tail = ct-1;
  15. b = [b;a(head:1:tail)'];%把分割好的连续或不连续的存入b
  16. num = [num; tail-head+1];%记录连续数组的长度
  17. end
  18. if(tail<numel(a)) %当最后一个数是不连续的数的时候,需要单独存一下
  19. b = [b;a(tail+1)'];
  20. num = [num; 1];
  21. end
  22. fprintf('最长的连续数组是:\n')
  23. disp(b{max(num)==num})

https://zhidao.baidu.com/question/589819828541282445.html