0

我正在尝试预先分配一个统一嵌套的结构数组。

我目前正在使用 for 循环为数组分配值,但我知道如果数组没有被预先分配,这会很慢。

我试图实现的结构由以下代码生成:

aLength = 10;
bLength = 20;

a = struct('b',{});
b = struct('c',{0},'d',{0});
for i = 1:aLength
    for j = 1:bLength
        a(i).b(j) = b;
    end
end

稍后将在 for 循环中替换零值。

4

1 回答 1

3

以下方法为您的循环提供相同的结果:

aLength = 10;
bLength = 20;

b(1:bLength) = struct('c', {0}, 'd', {0});
a(1:aLength) = struct('b', b);

a
a(1)

输出:

a =
  1x10 struct array containing the fields:
    b

ans =
  scalar structure containing the fields:
    b =
      1x20 struct array containing the fields:
        c
        d

一个小测试增加aLengthbLength显示从循环版本到所示方法的急剧加速。

希望有帮助!

于 2019-11-12T07:39:51.217 回答