Create vector only containing consecutive numbers of other vector

2 visualizzazioni (ultimi 30 giorni)
Hi, I'm searching for a possibility to build a vector B which only contains the consecutive numbers of vector A. I tried it like this but it is not working. Can someone help me?
A=[2 5 6 7]; B=0; for m=1:length(A)-1 if diff(A)==1 B=A(m); m=m+1; end end
The anwser should look like this: B=[5 6 7]

Risposta accettata

Guillaume
Guillaume il 30 Mar 2015
Modificato: Guillaume il 30 Mar 2015
Using just diff and logical operations (no find):
A = [2 5 6 7 10 12 13 20];
dA = diff(A) == 1;
B = A([0 dA] | [dA 0])
This assumes that A is a row vector.

Più risposte (1)

Stephen23
Stephen23 il 30 Mar 2015
For large vectors using logical indexing will probably be faster than using find:
>> A = [2,5,6,7];
>> X = diff(A)==1;
>> Y = [false,X] | [X,false];
>> A(Y)
ans =
5 6 7
  6 Commenti
Stephen23
Stephen23 il 31 Mar 2015
Modificato: Stephen23 il 31 Mar 2015
@Janina Koussev: Ask this in a new question.
Star Strider
Star Strider il 31 Mar 2015
I delete my Answers if they are neither Accepted nor Voted. Many others do as well.

Accedi per commentare.

Categorie

Scopri di più su Programming in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by