如何识别MATLAB数组中的中断?

时间:2015-10-21 03:06:46

标签: arrays matlab for-loop

我在MATLAB中有一个包含

等元素的数组
A=[12 13 14 15 30 31 32 33 58 59 60];

如何识别数据值的中断?例如,上述数据在元素15和33处显示中断。元素按升序排列并且具有1的增量。如何在阵列中识别此模式的中断位置?我使用for和if语句(下面的代码)实现了这一点。有没有更好的方法呢?

count=0;

for i=1:numel(A)-1
    if(A(i+1)==A(i)+1)
        continue;
    else
        count=count+1;
        q(count)=i;
    end
end

1 个答案:

答案 0 :(得分:4)

使用difffind那些不等于1的相邻差异的好时机。但是,这将返回一个比输入数组的长度小1的数组,因为它找到了成对差异直到最后一个元素,所以自然会少一个。因此,当您发现位置不等于1时,请确保将1添加到位置以说明这一点:

>> A=[12 13 14 15 30 31 32 33 58 59 60];
>> q = find(diff(A) ~= 1) + 1

q =

     5     9

这告诉我们数组中的位置5和9是跳转发生的位置,这适用于您的示例数据。

但是,如果您想在之前找到位置(例如代码中),请不要在结果中添加1:

>> q = find(diff(A) ~= 1)

q =

     4     8