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

11 vues (au cours des 30 derniers jours)
Soumyatha Gavvala
Soumyatha Gavvala le 17 Juin 2016
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?

Réponse acceptée

Azzi Abdelmalek
Azzi Abdelmalek le 17 Juin 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 commentaires
Azzi Abdelmalek
Azzi Abdelmalek le 17 Juin 2016
How it doesn't work?
Soumyatha Gavvala
Soumyatha Gavvala le 17 Juin 2016
Thank you it works! I just had to use transpose to change the array dimensions.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Logical dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by