【发布时间】:2023-03-28 16:05:01
【问题描述】:
我想用结构向量化操作,并花了几个小时搜索,但我找不到解决方案。 我有一个结构如下:
clear all
n= 10;
for i=1:n
mystruct(i).x = i;
mystruct(i).y = i;
mystruct(i).z = 0;
end
我想将所有 x 添加到所有 y 值并将它们分配给 z。
这行得通:
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]));
但是下一个操作又不行了:
mystruct.z = mystruct2.z;
我当然可以使用 for 循环:
for i=1:n
mystruct(i).z = mystruct(i).x + mystruct(i).y;
end
但这不是我想要的,因为这会使我的代码非常讨厌,并且不适用于使用“parfor”的并行操作。 如何执行此操作?
【问题讨论】:
标签: arrays matlab struct vectorization