Given a cell array, find the longest string

11 visualizaciones (últimos 30 días)
Joseph Williams
Joseph Williams el 15 de Feb. de 2013
Preferably without using loops, I need to find the longest string in a cell array. So with an example array such as the following, in what ways could I go about this? If there are multiple entries with the same length, I need to be able to find both of them.
I'd like to see a way to do it with loops as well.
Pete Townshend Toyota Gene Simmons Steve Jobs Socrates Frank Sinatra Astronomy Idaho Sweatshirt
Thanks

Respuesta aceptada

Azzi Abdelmalek
Azzi Abdelmalek el 15 de Feb. de 2013
Editada: Azzi Abdelmalek el 15 de Feb. de 2013
a={'Pete' 'Townshend1' 'Simmons' 'Steve' 'Sinatra' 'Idaho' 'Sweatshirt'}
val=cellfun(@(x) numel(x),a)
out=a(val==max(val))
%With a loop
for k=1:numel(a)
val(k)=numel(a{k})
end
out=a(val==max(val))
  1 comentario
Jan
Jan el 15 de Feb. de 2013
Editada: Jan el 15 de Feb. de 2013
cellfun('length', a) is much more efficient, because the string methods of cellfun() are determined inside the MEX function, while the anonymous functions need to call Matlab for each argument. Unfortunately these string methods are marked as "backward compatibility" feature only in the documentation, but this is an understatement.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Loops and Conditional Statements en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by