Count the number of same elements in an array
334 ビュー (過去 30 日間)
古いコメントを表示
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..
0 件のコメント
採用された回答
madhan ravi
2019 年 9 月 10 日
編集済み: madhan ravi
2019 年 9 月 10 日
[~,~,ix] = unique(V);
C = accumarray(ix,1).'
その他の回答 (3 件)
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'
gc'
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.
0 件のコメント
Hugo Diaz
2020 年 11 月 28 日
I use sparse(V(:),V(:), 1) for large arrays with missing indices.
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Creating and Concatenating Matrices についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!