Find the index of the element of a cell array which has the maximum size

6 visualizzazioni (ultimi 30 giorni)
I have a cell array (B) which has elements having two columns and different number of rows. I want to find the element which has the largest number of rows. I wrote the following code which seems to me non-professional. Is there a better way to do that?
max_index=0;
max_size=0;
for i=1:numel(B)
if max_size<size(B{i},1)
max_size=size(B{i},1);
max_index=i;
end
end
Thanks.

Risposta accettata

Jan
Jan il 4 Giu 2011
[max_size, max_index] = max(cellfun('size', B, 1))
  2 Commenti
Jan
Jan il 27 Ott 2017
Modificato: Jan il 27 Ott 2017
@huahua:
siz = cellfun('size', B, 1);
[~, idx] = max(siz);
siz(idx) = -Inf;
[size2, index2] = max(siz);
This is cheaper than sorting.

Accedi per commentare.

Più risposte (1)

Jos (10584)
Jos (10584) il 26 Ott 2017
NrowsB = cellfun('size',B,1) ;
[~, ri] = sort(NrowsB)
ri(k) % index of B with the k-th most number of rows

Categorie

Scopri di più su MATLAB in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by