Count the number of same elements in an array

341 ビュー (過去 30 日間)
luca
luca 2019 年 9 月 10 日
編集済み: Vitek Stepien 2021 年 8 月 14 日
Hi given a vector
V = [ 1 2 4 3 4 2 3 5 6 4 5 6 8 4 2 3 5 7 8 5 3 1 3 5 7 8 9 5 3 2 4 6 7 8]
I would like to count how many times the value 1,2,3,4,5,6,7,8,9 are repeated inside V, and obtain a vector that report this values:
C = [2 4 6 5 6 3 3 4 1]
where 1 is repeated 2 times, 2 is repetead 4 times, 3 is repeated 6 times and so on..

採用された回答

madhan ravi
madhan ravi 2019 年 9 月 10 日
編集済み: madhan ravi 2019 年 9 月 10 日
[~,~,ix] = unique(V);
C = accumarray(ix,1).'
  5 件のコメント
Stephen23
Stephen23 2019 年 9 月 10 日
編集済み: Stephen23 2019 年 9 月 10 日
@madhan ravi : this is really quite neat:
accumarray(V(:),1)
Simple idea which works well:
>> V = [2 2 3 4 5 6 7 7 8 8 9 9]
>> accumarray(V(:),1)
ans =
0
2
1
1
1
1
2
2
2
madhan ravi
madhan ravi 2019 年 9 月 10 日
Thank you Stephen :) !

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

その他の回答 (3 件)

Stephen23
Stephen23 2019 年 9 月 10 日
編集済み: Stephen23 2019 年 9 月 10 日
Your 1st example:
>> V = [ 1 2 4 3 4 2 3 5 6 4 5 6 8 4 2 3 5 7 8 5 3 1 3 5 7 8 9 5 3 2 4 6 7 8];
>> C = hist(V,1:max(V))
C =
2 4 6 5 6 3 3 4 1
Your 2nd example:
>> V = [2 2 3 4 5 6 7 7 8 8 9 9]
>> C = hist(V,1:max(V))
C =
0 2 1 1 1 1 2 2 2
  1 件のコメント
luca
luca 2019 年 9 月 10 日
thanks Stephen

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


Vitek Stepien
Vitek Stepien 2021 年 8 月 14 日
編集済み: Vitek Stepien 2021 年 8 月 14 日
I found this function extremely useful, and doing exactly what you need:
V = [ 1 2 4 3 4 2 3 5 6 4 5 6 8 4 2 3 5 7 8 5 3 1 3 5 7 8 9 5 3 2 4 6 7 8];
[gc,grps] = groupcounts(V'); % <- need column vector here
grps'
ans = 1×9
1 2 3 4 5 6 7 8 9
gc'
ans = 1×9
2 4 6 5 6 3 3 4 1
Where grps lists the unique values in order, and gc provides the count of each unique values found in v.
This is very similar to madhan ravi's accumarray, but even simpler.
P.S. I turned gc and grps into row vectors only for compactness of the post, it's purely aesthetical. However groupcounts requires a column vector, not a row.

Hugo Diaz
Hugo Diaz 2020 年 11 月 28 日
I use sparse(V(:),V(:), 1) for large arrays with missing indices.

カテゴリ

Help Center および File ExchangeMultidimensional Arrays についてさらに検索

製品


リリース

R2019a

Community Treasure Hunt

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

Start Hunting!

Translated by