How to find the number of different strings in a cell array?
144 ビュー (過去 30 日間)
古いコメントを表示
Hi, I have a cell with different strings. I don't know what are those strings and how many times they are repeated. I want to find the names of strings and find how many they are repeated. For example: c={'a' 'a' 'a' 'a' 'b' 'b' 'b' 'c' 'c' 'd' 'e'}; I want the answer to say that strings are a,b,c,d,e and the numbers they are repeating are 4,3,2,1,1.
I tried strfind command but it is good for a time that you know what are the strings (which I don't know what are the strings!). I tried strcmp command to find how many each are repeated. But still I have problem with finding the strings! Can anyone help me?
Thanks
0 件のコメント
採用された回答
Cedric
2017 年 10 月 3 日
編集済み: Cedric
2017 年 10 月 3 日
Use
uc = unique(c) ;
to get a cell array of unique strings, and its length is their count.
If you need a stat of repetition, use the 2nd or 3rd output of UNIQUE and accumulate ones using it as IDs in acall to ACCUMARRAY.
I can't test right now, but something like
[uc, ~, idc] = unique( c ) ;
counts = accumarray( idc, ones(size(idc)) ) ;
2 件のコメント
その他の回答 (1 件)
Walter Roberson
2017 年 10 月 3 日
1 件のコメント
Image Analyst
2017 年 10 月 3 日
E.g.
c={'a' 'a' 'a' 'a' 'b' 'b' 'b' 'c' 'c' 'd' 'e' 'a' 'a' };
[d, id] = findgroups(c)
counts = histcounts(d)
d =
1 1 1 1 2 2 2 3 3 4 5 1 1
id =
1×5 cell array
{'a'} {'b'} {'c'} {'d'} {'e'}
counts =
6 3 2 1 1
参考
カテゴリ
Help Center および File Exchange で Characters and Strings についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!