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

4 Ansichten (letzte 30 Tage)
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 Kommentar
Cedric
Cedric am 23 Jan. 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

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

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

Weitere Antworten (3)

per isakson
per isakson am 23 Jan. 2013
Try
find( diff( X ) == 1 ) + 1
find( diff( X ) == -1 )

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

Azzi Abdelmalek
Azzi Abdelmalek am 23 Jan. 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

Kategorien

Mehr zu Numeric Types finden Sie in Help Center und File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by