嵌套结构数组的预分配

Preallocation of nested structure array

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

我目前正在使用 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 循环中替换零值。

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

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 的小测试显示从循环版本到所示方法的显着加速。

希望对您有所帮助!