フィルターのクリア

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

3 ビュー (過去 30 日間)
Javier
Javier 2013 年 1 月 23 日
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 件のコメント
Cedric
Cedric 2013 年 1 月 23 日
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

サインインしてコメントする。

採用された回答

Andrei Bobrov
Andrei Bobrov 2013 年 1 月 23 日
y = [strfind([~X(1) X],[0 1]);strfind([X ~X(end)],[1 0])]';
  1 件のコメント
Javier
Javier 2013 年 1 月 23 日
Thanks Andrei, you are the BEST............

サインインしてコメントする。

その他の回答 (3 件)

per isakson
per isakson 2013 年 1 月 23 日
Try
find( diff( X ) == 1 ) + 1
find( diff( X ) == -1 )
  2 件のコメント
per isakson
per isakson 2013 年 1 月 23 日
I've provided more than half of the solution. Your turn.
Javier
Javier 2013 年 1 月 23 日
Thanks per........

サインインしてコメントする。


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

Azzi Abdelmalek
Azzi Abdelmalek 2013 年 1 月 23 日
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

カテゴリ

Help Center および File ExchangeMathematics についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by