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

6 vues (au cours des 30 derniers jours)
AP
AP le 4 Juin 2011
Modifié(e) : Jan le 27 Oct 2017
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.

Réponse acceptée

Jan
Jan le 4 Juin 2011
[max_size, max_index] = max(cellfun('size', B, 1))
  2 commentaires
huahua
huahua le 26 Oct 2017
What if I want the cell of second largest size?
Jan
Jan le 27 Oct 2017
Modifié(e) : Jan le 27 Oct 2017
@huahua:
siz = cellfun('size', B, 1);
[~, idx] = max(siz);
siz(idx) = -Inf;
[size2, index2] = max(siz);
This is cheaper than sorting.

Connectez-vous pour commenter.

Plus de réponses (1)

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

Catégories

En savoir plus sur MATLAB dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by