2014-10-22 58 views
0

說吧,我有A=[1 1 1 4 4 4 4 4 1 1 2 2 1 1 2 2 1 1 1 3 3 3 3 3]。系列號是B=[1:24] 我的問題是我如何找到每個連續數字的開始和結束。 應該開始我的回答的終點是查找每個序列的開始和結束點連續數字matlab

for A=1 is 1,3;9,10;13,14;17,19 
for A=2 is 11,12;15,16 
for A=3 is 20,24 
for A=4 is 4,8` 

回答

1

喜歡的東西:

n = 1; 
B = find(diff([0,A==n,0]));   %//Find where sequences of n and not begin 
B(2:2:end) = B(2:2:end) - 1  %//Change from the beginning of not n sequence to the end of the n sequence 
reshape(B, 2, [])' 

還是現在要2列更容易(和更合乎邏輯的)來做到這一點:

s = find(diff([0,A==n,0])==1); 
e = find(diff([0,A==n,0])==-1) -1; 
B = [s', e'] 
+0

是的。 Tq非常。我得到它 – danjoro 2014-10-22 09:01:09

+0

@danjoro如果可能有一些問題,但你需要徹底測試和調整。例如如果你最後只有一個'1',它還在做你想要的嗎? – Dan 2014-10-22 09:02:58

+0

是的,這是一個概率。我該如何解決它。我怎樣才能確定結果的範圍?B = [1 3; 9,10; 13,14; 17,19] ;.另一個問題是A = 3只讀起點20,但終點24無法讀取。 – danjoro 2014-10-22 09:16:47

相關問題