如何在 Matlab 中预分配结构向量

How to pre-allocate a structure vector in Matlab

在 matlab 中,函数 struct 允许预分配这样的结构

S = struct(field1,{},field2,{},...,fieldN,{})

但我需要 S 是一个结构向量,比方说长度为 100,但我不知道该怎么做。我想这样做以便以后可以分配

S(60).field1=1234;

没有因为赋值而使 S 改变大小。

您必须通过在创建结构期间分配给每个字段的值的大小来指定 S 的大小。在这种情况下,以下行可以解决问题

S = struct(field1,cell(1,100),field2,cell(1,100),...,fieldN,cell(1,100));

正如 Cris Luengo 在评论中指出的那样,除了一个字段之外,您还可以对所有字段使用标量。因此,下一行将有完全相同的结果

S = struct(field1,cell(1,100),field2,[],...,fieldN,[]);