结构分配的向量化

问题描述 投票:0回答:1

我正在尝试将非恒定数组值分配给整个结构中的字段。

我编写了一个实现此目的的for循环脚本:

n   = 5;

c       = {[0,0]};
b(1:n)  = struct('c',c);

for i=1:5

    b(i).c(1) = i;
    b(i).c(2) = i+1;

end

但希望能够向量化c的分配。可以对这些代码进行矢量化,还是使用数字数组更好?]

arrays matlab structure vectorization
1个回答
0
投票

这里是一个矢量化的解决方案,适合您提供的示例,请注意,该解决方案是为您的示例创建的,但是可以使用相同的逻辑轻松地进行概括

使用您的代码,我们得到以下输出:

for i=1:5
    disp(b(i))
end

c =
   1   2
c =
   2   3
c =
   3   4
c =
   4   5
c =
   5   6

矢量化的实现是:

cc = [1,2];
cc_rep = repmat(cc, n, 1);
increm = 0:1:n-1;

cc_rep_in = cc_rep + increm';
cc_rep_in_cell = num2cell(cc_rep_in, 2);

bb(1:n) = struct('c', cc_rep_in_cell);

for i=1:n
    disp(bb(i))
end

并且我们得到以下输出:

c =
   1   2
c =
   2   3
c =
   3   4
c =
   4   5
c =
   5   6
© www.soinside.com 2019 - 2024. All rights reserved.