如何在 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,[]);
在 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,[]);