获取结构matlab中的最大值
我有一个结构获取结构matlab中的最大值,matlab,Matlab,我有一个结构S,大小3x1,其中S(1,1)=[209443319206]S(2,1)=[300473,1,1]S(3,1)=[305470,1,1]我想做的是只保留一个内部结构,其中S的大小为1x1,而不是nx1此结构是其他结构中第3列和第4列中值最高的结构。因此,在我的示例中,S将只有S(1,1),因为它的第3列和第4列是S(2,1)和S(3,1)中的最高列,其值为319206,而S(2,1)和S(3,1)SoS(2,1)和S(3,1)将被删除,S将是1x1结构,只有S(1,1)。因此,如果
S
,大小3x1
,其中S(1,1)=[209443319206]
S(2,1)=[300473,1,1]
S(3,1)=[305470,1,1]
我想做的是只保留一个内部结构,其中S
的大小为1x1
,而不是nx1
此结构是其他结构中第3列和第4列中值最高的结构。因此,在我的示例中,S
将只有S(1,1)
,因为它的第3列和第4列是S(2,1)和S(3,1)中的最高列,其值为319206,而S(2,1)
和S(3,1)
SoS(2,1)
和S(3,1)
将被删除,S
将是1x1
结构,只有S(1,1)
。因此,如果有人能提出建议,我将假定您对第3列和第4列大于其他数组这一事实的衡量是基于它们的总和
S = struct();
S(1,1).v=[209, 443, 319, 206];
S(2,1).v=[300, 473, 1, 1];
S(3,1).v=[305, 470, 1, 1];
% find index with maxium 3th and 4th column based on their sum
[~, ind] = max(cellfun(@(v) v(3)+v(4), {S(:).v}))
% set S to be equal only to the value with highest 3th and 4th column
S = S(ind);
顺便说一句,语法S(1,1)=[209443319106]
不正确。不能让结构像这样。因此,我在结构中添加了一个v
字段
如果您实际指的是一个单元格
,而不是@chappjc所示的结构
,那么您可以按如下操作:
S = {};
S{1,1}=[209,443,319, 206];
S{2,1}=[300,473,1,1];
S{3,1}=[305,470,1,1];
[~, ind] = max(cellfun(@(v) v(3)+v(4), S));
S = S(ind);
我想你的意思是
cell
不是struct
。未提及任何字段。