在Cell结构中找到最大值组合?

时间:2013-03-26 17:50:56

标签: matlab cell max combinations

如果我有以下单元格:

a = cell(5,1);
a{1} = [1 3 1 0];
a{2} = [3 1 3 3];
a{3} = [3 2 3 2];
a{4} = [3 3 3 2];
a{5} = [3 2 3 3];

键入max(cell2mat(a))ans = 3 3 3 3

但这没有意义,因为3 3 3 3甚至不存在于那个细胞结构中!到底是怎么回事 ?以及如何找到细胞结构的最大组合?

note :我指的是3 3 3 23 2 3 3中的最大组合 - 因为它们都具有值3(最大值)3 / 4列a{4}a{5}

2 个答案:

答案 0 :(得分:2)

我相信你想要以下内容:

[~, maxInd] = max(sum(cell2mat(a), 2));
a{maxInd}

ans =

 3     3     3     2

如果您希望所有行的总值与具有最大值的行相同,那么您可以执行以下操作:

% Take the sum along the rows of a
summedMat = sum(cell2mat(a), 2); 
% Find the value from the summed rows that is the highest
maxVal = max(summedMat);         
% Find any other rows that also have this total
maxInd = summedMat == maxVal;
% Get them rows!
a{maxInd}

ans =

 3     3     3     2


ans =

 3     2     3     3

答案 1 :(得分:0)

max(A)给出A中每列的最大值。

所以,如果

A = cell2mat(a)
A =

   1   3   1   0
   3   1   3   3
   3   2   3   2
   3   3   3   2

max(A)是一个包含A的每列中最大元素的向量。