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

2 views (last 30 days)
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.

Accepted Answer

Jan
Jan on 4 Jun 2011
[max_size, max_index] = max(cellfun('size', B, 1))
  2 Comments
Jan
Jan on 27 Oct 2017
Edited: Jan on 27 Oct 2017
@huahua:
siz = cellfun('size', B, 1);
[~, idx] = max(siz);
siz(idx) = -Inf;
[size2, index2] = max(siz);
This is cheaper than sorting.

Sign in to comment.

More Answers (1)

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

Categories

Find more on Shifting and Sorting Matrices in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!