首页 > 解决方案 > 如何为结构中的多个中级字段分配子级别

问题描述

我正在尝试为字段的每个元素分配一个子字段。

这可以通过如下所示的 for 循环来实现,但是,我想对代码进行矢量化。

n   = 3;
for i=1:n
    mesh.elem(i).x(1) = i;
    mesh.elem(i).x(2) = i^2;
end

我调查了交易的使用,并尝试了以下方法:

mesh.elem(1:n).x(1) = (1:n)-1;

但总是收到错误。

标签: matlabstructurevectorization

解决方案


n = 3;
exponents = 1:2;
values = bsxfun(@power, (1:n)', exponents);
values = num2cell(values, 2);
[mesh.elem(1:n).x] = deal(values{:});

这让你:

>> mesh.elem.x

ans = 
    1    1


ans = 
    2    4


ans = 
    3    9

推荐阅读