我有一个1 x 500的matlab数据结构,用于整个过多的度量,存储为字段。每个科目都有每个领域报告的值。我需要创建一个新字段,它是已经存在的两个字段的减法。我知道它需要以某种方式涉及for循环,但我有点失去了如何实现这一点。
答案 0 :(得分:1)
以下是一个例子:
% lets create a 1x2 structure array with two fields x and y
clear s
s(1).x = 1;
s(1).y = 10;
s(2).x = 5;
s(2).y = 8;
% compute the subtraction of the values y-x
z = num2cell([s.y] - [s.x]);
% create the new field
[s.z] = deal(z{:});
以下是生成的结构数组:
>> whos s
Name Size Bytes Class Attributes
s 1x2 912 struct
>> s(1)
ans =
x: 1
y: 10
z: 9
>> s(2)
ans =
x: 5
y: 8
z: 3
或者,你总是可以写一个简单的for循环:
for i=1:numel(s)
s(i).w = s(i).y - s(i).x;
end