矢量化和分配结构和字段

时间:2015-10-14 21:16:18

标签: arrays matlab struct vectorization

我想用结构进行矢量化操作并花了几个小时搜索但我找不到解决方案。 我有一个结构如下:

Xcode 6.4

我想将所有x添加到所有y值并将它们分配给z。

这有效:

clear all

n= 10;

for i=1:n

    mystruct(i).x    = i;

    mystruct(i).y    = i;

    mystruct(i).z    = 0;

end

但是,分配数组不会:

test1 = [mystruct.x] + [mystruct.y];

test2 = arrayfun(@(a)mystruct(a).x+mystruct(a).y,1:n);

我可以生成一个新结构:

mystruct.z = [mystruct.x] + [mystruct.y];

mystruct.z = mystruct.x + mystruct.y;

但是下一次操作再次无效:

mystruct2  = struct('z',num2cell ([mystruct.x]+[mystruct.y]));

我当然可以使用for循环:

mystruct.z = mystruct2.z;

但这不是我想要的,因为这会使我的代码非常讨厌,并且无法使用“parfor”进行并行操作。 我该如何执行此操作?

1 个答案:

答案 0 :(得分:2)

我相信您想使用deal函数,该函数用于将输入分配到输出,并使用以MATLAB 7开头的结构。

适当使用[方括号],您可以使用:

[mystruct2.z] = deal([mystruct(1:n).x] + [mystruct(1:n).y]);

输出:

ans =

     2     4     6

耶!