How to get all values existing in arrays/matrices?

87 次查看(过去 30 天)
Hello,
Let say I have a 3-by-2 array with random integer values. For example,
myArray = [98 56; 58 52; 100 56];
What I want to do is, I want to get all value in the array and its frequency and save it to another array like this,
listValue = [98 1; 56 2; 58 1; 52 1; 100 1];
Is there any function or a way to do it?
Thank you in advance.

采纳的回答

Andrei Bobrov
Andrei Bobrov 2020-3-24
编辑:Andrei Bobrov 2020-3-24
[a,~,c] = unique(reshape(myArray',[],1),'stable');
out = [a, accumarray(c,1)];
or
out = varfun(@(x)x,array2table(myArray(:)),'GroupingVariables',1);
  2 个评论
Arif Widianto
Arif Widianto 2020-3-24
编辑:Arif Widianto 2020-3-24
The first one works for my case. So, if I want it sorted, the only thing I need to do is changing 'stable' to 'sorted' right?
Andrei Bobrov
Andrei Bobrov 2020-3-24
编辑:Andrei Bobrov 2020-3-24
Yes or:
[a,~,c] = unique(myArray);
out = [a, accumarray(c,1)];

请先登录,再进行评论。

更多回答(2 个)

KSSV
KSSV 2020-3-24
编辑:KSSV 2020-3-24
Read about unique
a = myArray(:) ;
[cnt_unique, unique_a] = hist(a,unique(a)) ;

Walter Roberson
Walter Roberson 2020-3-24
See unique() and accumarray. Or unique and histc or histcounts (but be careful about the last value in histcounts). Or use a loop. Or use sparse(). Lots of ways.

类别

Help CenterFile Exchange 中查找有关 Creating and Concatenating Matrices 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by