fetching data from array

1 回表示 (過去 30 日間)
kash
kash 2013 年 9 月 19 日
I have a set of values as
G=[1 1 1 1 2 2 1 2 3 2 2 1 3 3]
in this there are 14 values,i want to fetch as following
there are 4 ones continously so i want to take first 1 ,then 2 2's continously ,i need first 2 ,then only 1 ,so i need to take that
So the output will be [1 2 1 2 3 2 1 3] with index positions [1 5 7 8 9 10 12 13]
kindly help

採用された回答

Andrei Bobrov
Andrei Bobrov 2013 年 9 月 19 日
編集済み: Andrei Bobrov 2013 年 9 月 19 日
G=[1 1 1 1 2 2 1 2 3 2 2 1 3 3];
G1 = G(:);
l = [true;diff(G1(:))~=0];
out = [G1(l),find(l)]

その他の回答 (1 件)

Jan
Jan 2013 年 9 月 19 日
編集済み: Jan 2013 年 9 月 19 日
[value, number, index] = RunLength(G)
Then value and index are the wanted results.
If you have problems to compile the fast MEX file, you can use RunLength_M from this submission instead. If you process millions of elements and runtime matters, be sure to use the compiled version.
  1 件のコメント
kash
kash 2013 年 9 月 20 日
Thanks Jan for ur answer

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

カテゴリ

Help Center および File ExchangeWrite C Functions Callable from MATLAB (MEX Files) についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by