创建新字段,即减去其他两个字段

时间:2014-01-20 20:53:26

标签: arrays matlab struct field

我有一个1 x 500的matlab数据结构,用于整个过多的度量,存储为字段。每个科目都有每个领域报告的值。我需要创建一个新字段,它是已经存在的两个字段的减法。我知道它需要以某种方式涉及for循环,但我有点失去了如何实现这一点。

1 个答案:

答案 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