2015-10-21 111 views
2

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

回答

4

好時機使用difffind這不等於1。然而,這會返回一個數組比你輸入數組的長度少一個鄰近的那些不同,因爲它找到配對差異,直到最後一個元素,所以自然會少一個。因此,當你發現不等於1的位置,一定要加1的位置考慮到這一點:

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

q = 

    5  9 

這就告訴我們,您的陣列中的位置1,5和9的地方跳轉發生,這對你的示例數據是正確的。

但是,如果你想找到前跳發生,比如在你的代碼的位置,不要加1的結果:

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

q = 

    4  8