compare length of arrays in a cell

6 visualizaciones (últimos 30 días)
ludvikjahn
ludvikjahn el 12 de Mzo. de 2015
Comentada: Adam el 13 de Mzo. de 2015
good morning, I have acell array and i want to compare cell's length. Till now I used just t compare the equality of the cells using:
isequal(A{1,:})
A is the cell array.
I tried to run
isequal(length(A{1,:}))
but that's not correct.
What is the easiest way to achieve that, without using a or cycle???
Thanks
  6 comentarios
ludvikjahn
ludvikjahn el 13 de Mzo. de 2015
yes of course, I have just mistaken the brackets.
Adam
Adam el 13 de Mzo. de 2015

Iniciar sesión para comentar.

Respuesta aceptada

Stephen23
Stephen23 el 13 de Mzo. de 2015
Editada: Stephen23 el 13 de Mzo. de 2015
This is easy to do in one line using cellfun , diff and any:
>> A = {cell(1,3),cell(1,3),cell(1,3)};
>> B = {cell(1,5),cell(1,2),cell(1,9)};
>> any(~diff(cellfun(@numel,A)))
ans =
1
>> any(~diff(cellfun(@numel,B)))
ans =
0

Más respuestas (1)

per isakson
per isakson el 12 de Mzo. de 2015
Editada: per isakson el 12 de Mzo. de 2015
A hint based on some guessing
cac = {'abc','def', 'ghi'};
tmp = cellfun( @length, cac, 'uni', false );
isequal( tmp{:} )
returns
ans =
1
I failed to make a one-liner
&nbsp
Addendum
A variant more in line with the comments to the question
cac = {'abc','def', 'ghi'};
cac = { cac, cac, cac };
tmp = cellfun( @length, cac, 'uni', false );
isequal( tmp{:} )
returns
ans =
1
  2 comentarios
ludvikjahn
ludvikjahn el 12 de Mzo. de 2015
Editada: ludvikjahn el 12 de Mzo. de 2015
sorry, what stands 'uni' for? just as an example of length?
per isakson
per isakson el 12 de Mzo. de 2015
Editada: per isakson el 12 de Mzo. de 2015
It's short for 'UniformOutput'. See cellfun, Apply function to each cell in cell array

Iniciar sesión para comentar.

Categorías

Más información sobre Cell Arrays 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