convert an array into its counting sequence..
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
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?
0 Kommentare
Antworten (2)
madhan ravi
am 2 Aug. 2019
Bearbeitet: madhan ravi
am 2 Aug. 2019
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 Kommentare
Jos (10584)
am 2 Aug. 2019
This fails for inputs like [1 1 2 1 1], where values are repeated.
I admit, the question is a little unclear, but "counting sequence" suggests, at least to me, more than just counting ;-)
Jos (10584)
am 2 Aug. 2019
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
0 Kommentare
Siehe auch
Kategorien
Mehr zu Data Types finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!