Problems with cell array

For example, I've got cell array:
c = {[10 12 13]' [4 5 6]' [7 8 9]';...
[10 20 30]' [40 5 60]' [70 80 90]';...
[100 200 300]' [400 500 600]' [3 800 9]' }
I need to find min in every row of c{i,j}, where i=j. So, I need to take c{1,1}, c{2,2}, c{3,3} and to find min of every row. I dont think my description is clear, so see the attached file. So the answer must be
ans = [3 5 9]'
Thanks a lot !

 Accepted Answer

Andrei Bobrov
Andrei Bobrov on 13 Mar 2015
Edited: Andrei Bobrov on 13 Mar 2015
k = c(1:size(c,1)+1:end));% EDIT (diag(c));
or
k = c(eye(size(c))>0);
out = min([k{:}],[],2);

6 Comments

Undefined function 'diag' for input arguments of type 'cell'
Andrei Bobrov
Andrei Bobrov on 13 Mar 2015
Edited: Andrei Bobrov on 13 Mar 2015
Sorry, I now use Octave... fixed.
It works ! Thanks ! Now I need to understand HOW does it work :)
Thanks for the previous answer ! Can you now help me to do the same thing, but for the case when i~=j ? Thanks !
variant
k = c(~eye(size(c)));
out = min([k{:}],[],2);
That's easy ! Thank you one more time !

Sign in to comment.

More Answers (1)

min(cat(2,c{1:size(c,1)+1:end}),[],2)

Categories

Tags

Community Treasure Hunt

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

Start Hunting!