我有一个大小为S
的结构3x1
,其中S(1,1)=[209,443,319, 206]
S(2,1)=[300,473,1,1]
S(3,1)=[305,470,1,1]
我想要做的只是保留一个内部结构S
1}}的大小为1x1
而不是nx1
此结构是其他结构中第3和第4列中具有最高值的结构。所以在我的示例S
中只有S(1,1)
,因为它的第3和第4列在S(2,1)和S(3,1)中最高,值为319,206,而{1}为1,1 {1}}和S(2,1)
因此S(3,1)
和S(2,1)
将被删除,而S(3,1)
只会S
结构只有1x1
。所以如果有人可以请提供建议
答案 0 :(得分:2)
我将假设您测量第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)=[209,443,319, 206]
不正确。不能做这样的结构。因此,我在结构中添加了v
字段。
如果你的意思实际上是cell
而不是struct
,而不是@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);