Matlab:更改数组内结构的字段值

时间:2013-09-26 19:57:32

标签: arrays matlab struct

我想知道Matlab这样做的方法:

我有一个名为lines的结构数组(Line)。

每一行看起来像:

point1: [1 128]
point2: [218 128]
 theta: -90
   rho: -127

我需要从struct中所有行的point1(2)和point2(2)中减去一个值。

2 个答案:

答案 0 :(得分:2)

point1的单行解决方案将使用arrayfunsetfield / getfield,如下所示,

lineStructArray2 = arrayfun(@(x) (setfield(x,'point1',getfield(x,'point1')+[0 dy])), lineStructArray)

其中dy是您要添加的值(减去负数)point1(2)。为point2制作类似的命令。

答案 1 :(得分:0)

如果您的数组是这样的:

myArray = [line line2];

所以你有一个struct数组。您无法使用

访问它
myArray(:).point1(2);

所以你必须创建一个循环

myStoringArray = [];
for it = 1:size(myArray,2)
  myStoringArray = [myStoringArray myArray(it).point1(2)];
end