How to select elements in an array that are in sequence?

10 views (last 30 days)
I have a dynamic array which goes like this [1 2 3 4 31 32 33 34 35 36 37 38 39 40 41 42 56 57 58 59]. Where there is a larger set of elements in sequence (31 to 42) and smaller sets of elements (1 to 4 and 56 to 59). And these values change for every run.
I want to able to select the larger set of elements in sequence. Here, (31 to 42). Is there any way I can do that?

Accepted Answer

Azzi Abdelmalek
Azzi Abdelmalek on 17 Jun 2016
a=[1 2 3 4 31 32 33 34 35 36 37 38 39 40 41 42 56 57 58 59]
id=[1 diff(a)]==1
ii1=strfind([0 id],[0 1])
ii1(2:end)=ii1(2:end)-1
ii2=strfind([id 0],[1 0])
[~,jd]=max(ii2-ii1)
out=a(ii1(jd):ii2(jd))
  3 Comments
Soumyatha Gavvala
Soumyatha Gavvala on 17 Jun 2016
Thank you it works! I just had to use transpose to change the array dimensions.

Sign in to comment.

More Answers (0)

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!