嵌套结构数组的预分配
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
一个增加 aLength
和 bLength
的小测试显示从循环版本到所示方法的显着加速。
希望对您有所帮助!
我正在尝试预分配一个统一嵌套的结构数组。
我目前正在使用 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
一个增加 aLength
和 bLength
的小测试显示从循环版本到所示方法的显着加速。
希望对您有所帮助!