Borrar filtros
Borrar filtros

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

146 visualizaciones (últimos 30 días)
Faranak
Faranak el 3 de Oct. de 2017
Editada: Cedric el 3 de Oct. de 2017
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

Respuesta aceptada

Cedric
Cedric el 3 de Oct. de 2017
Editada: Cedric el 3 de Oct. de 2017
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 comentarios
Faranak
Faranak el 3 de Oct. de 2017
Thank you so much. It was perfect.
Cedric
Cedric el 3 de Oct. de 2017
Editada: Cedric el 3 de Oct. de 2017
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.

Iniciar sesión para comentar.

Más respuestas (1)

Walter Roberson
Walter Roberson el 3 de Oct. de 2017
For R2015b or later, use findgroups()
  1 comentario
Image Analyst
Image Analyst el 3 de Oct. de 2017
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

Iniciar sesión para comentar.

Categorías

Más información sobre Characters and Strings en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by