How to extract the first and last position for each ones series ?

3 visualizaciones (últimos 30 días)
For example
How to extract the first and last position for each ones series ?
X= [0 0 1 1 1 0 1 1 0 1 1 1 0 0 1 ]
%result
y =
3 5
7 8
10 12
15 15
Thanks
  1 comentario
Cedric
Cedric el 23 de En. de 2013
If it is for indexing something else afterwards, you can use that almost directly for logical indexing; you just have to typecast it to logical. E.g.
>> X = [0 0 1 1 1 0 1 1 0 1 1 1 0 0 1 ] ;
>> a = 1:15 ;
>> a(logical(X))
ans =
3 4 5 7 8 10 11 12 15

Iniciar sesión para comentar.

Respuesta aceptada

Andrei Bobrov
Andrei Bobrov el 23 de En. de 2013
y = [strfind([~X(1) X],[0 1]);strfind([X ~X(end)],[1 0])]';

Más respuestas (3)

per isakson
per isakson el 23 de En. de 2013
Try
find( diff( X ) == 1 ) + 1
find( diff( X ) == -1 )
  2 comentarios
per isakson
per isakson el 23 de En. de 2013
I've provided more than half of the solution. Your turn.

Iniciar sesión para comentar.


Roger Stafford
Roger Stafford el 23 de En. de 2013
f = find([false,diff(x)~=0,false]);
y = [f(1:2:end)',f(2:2:end)'-1];

Azzi Abdelmalek
Azzi Abdelmalek el 23 de En. de 2013
You can use
x= [ 0 0 1 1 1 0 1 1 0 1 1 1 0 0 1 ]
y=[x(1) diff(x)] % to find the first column
x1=fliplr(x) % to find the second column by the first method, just by
% reversing x

Categorías

Más información sobre MATLAB en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by