convert an array into its counting sequence..

5 ビュー (過去 30 日間)
VISHWATEJ N
VISHWATEJ N 2019 年 8 月 2 日
編集済み: madhan ravi 2019 年 8 月 2 日
i want to convert an array into its counting sequence. for example
if the input is :
x = [1 1 4 4 6 7]
two 1's two 4's one 6 one 7...
output must be :
y=[2 1 2 4 1 6 1 7]
can anyone help?

回答 (2 件)

madhan ravi
madhan ravi 2019 年 8 月 2 日
編集済み: madhan ravi 2019 年 8 月 2 日
According to what I understand you want to count the number of occurances of each unique elements in the array x, then:
x = [1 1 4 4 6 7];
[u,~,idx]=unique(x);
v=accumarray(idx,1);
y=reshape([v,u(:)].',1,[])
Gives:
y =
2 1 2 4 1 6 1 7
  2 件のコメント
madhan ravi
madhan ravi 2019 年 8 月 2 日
I'm not sure either let the OP verify it ;)

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


Jos (10584)
Jos (10584) 2019 年 8 月 2 日
This is called run-length encoding, for which there are very efficient functions available on the File Exchange.
I point you to my own function RUNINDEX which can also return this:
[~, RLE] = runindex(x)
y = reshape(RLE(:,[3 1]).', 1, []) % your format

カテゴリ

Find more on Argument Definitions in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by