Vector counting syntax help?

if i have a vector A = [1 1 1 1 2 3 3 5 5 5 5 6 6 7]... its alreay been sortecand only increases.. i want to create a 2nd vector based off A say called B that would have the count of each unique values in the A vector... so, B = [3 1 2 3 2 1] .. because there are 3 1's and 1 2 and 2 3's, etc etc. i just cant seem to get the suntax correct... please help.

 Accepted Answer

Try this —
A = [1 1 1 1 2 3 3 5 5 5 5 6 6 7];
[Au,~,ix] = unique(A,'stable');
Count = accumarray(ix,1);
Result = table(Au(:), Count(:), 'VariableNames',{'Unique_Elements','Count'})
Result = 6×2 table
Unique_Elements Count _______________ _____ 1 4 2 1 3 2 5 4 6 2 7 1
.

4 Comments

haha... my matlab skills are weak... im trying to decode ur answer ;-)
Likely the only function that may be a bit mysterious is accumarray. Here, it looops through the elements of the vector and counts the occurrences of each one, assigned by the ‘ix’ index variable created by the unique function. (The accumarray function can do a number of other things, depending on how the fourth argument, that can be a number of different functions, accumulates and stores the results. The default fourth argument is simply to sum the occurrences, as it does here. It is worthwhile to experiment with accumarray to understand everything it can do.)
ok.. perfect.. after looking at it for a few... just what i needed thanks
As always, my pleasure!

Sign in to comment.

More Answers (0)

Categories

Find more on MATLAB in Help Center and File Exchange

Products

Release

R2021a

Community Treasure Hunt

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

Start Hunting!