如何汇总不同的字段?我想总结材料的所有信息(1)...所以我想添加5 + 4 + 6 + 300,但我不确定如何。除了做材料之外还有另外一种方法(1)。可能+材料(1)。等等......
material(1).May= 5;
material(1).June=4;
material(1).July=6;
material(1).price=300;
material(2).May=10;
material(2).price=550;
material(3).May=90;
答案 0 :(得分:4)
您可以使用structfun
:
result = sum( structfun(@(x)x, material(1)) );
内部部分(structfun(@(x)x, material(1))
)在结构中的每个单独字段中运行一个函数,并以数组形式返回结果。通过使用标识函数(@(x)x
),我们只获取值。 sum
当然是显而易见的事情。
稍微长一点的方法是访问循环中的每个字段。例如:
fNames = fieldnames(material(1));
accumulatedValue = 0;
for ix = 1:length(fNames)
accumulatedValue = accumulatedValue + material(1).(fNames{ix});
end
result = accumulatedValue
对于某些用户来说,这将更容易阅读,但对于专家用户,第一个将更容易阅读。结果和(近似)表现相同。
答案 1 :(得分:0)
我认为Pursuit的回答非常好,但这里有一个替代方案:
sum( cell2mat( struct2cell( material(1) )));