我正在尝试将非恒定数组值分配给整个结构中的字段。
我编写了一个实现此目的的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的分配。可以对这些代码进行矢量化,还是使用数字数组更好?]
这里是一个矢量化的解决方案,适合您提供的示例,请注意,该解决方案是为您的示例创建的,但是可以使用相同的逻辑轻松地进行概括
使用您的代码,我们得到以下输出:
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