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 !

 Akzeptierte Antwort

Andrei Bobrov
Andrei Bobrov am 13 Mär. 2015
Bearbeitet: Andrei Bobrov am 13 Mär. 2015

0 Stimmen

k = c(1:size(c,1)+1:end));% EDIT (diag(c));
or
k = c(eye(size(c))>0);
out = min([k{:}],[],2);

6 Kommentare

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

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Jos (10584)
Jos (10584) am 23 Mär. 2015

0 Stimmen

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

Kategorien

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by