如何在MATLAB数组中识别断点



我在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的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

最新更新