How to find the number of different strings in a cell array?

144 ビュー (過去 30 日間)
Faranak
Faranak 2017 年 10 月 3 日
編集済み: Cedric 2017 年 10 月 3 日
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

採用された回答

Cedric
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 件のコメント
Faranak
Faranak 2017 年 10 月 3 日
Thank you so much. It was perfect.
Cedric
Cedric 2017 年 10 月 3 日
編集済み: Cedric 2017 年 10 月 3 日
My pleasure! Look at Walter's answer and ImageAnalyst example; FINDGROUPS and HISTCOUNTS may be simpler to (re-)understand if you look back at your code in a few years.

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

その他の回答 (1 件)

Walter Roberson
Walter Roberson 2017 年 10 月 3 日
For R2015b or later, use findgroups()
  1 件のコメント
Image Analyst
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 ExchangeCharacters and Strings についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by