我正在尝试将有价值的数字(数字并由 for 循环给出)分配给结构字段的名称。例如,我想做如下,
A.bx,其中 A 是结构名称(= char),b 是字段名称(= char)的一部分,x 是 for 循环给出的有价值的。A 和 b 是固定的或预定义的。
任何评论表示赞赏!
我正在尝试将有价值的数字(数字并由 for 循环给出)分配给结构字段的名称。例如,我想做如下,
A.bx,其中 A 是结构名称(= char),b 是字段名称(= char)的一部分,x 是 for 循环给出的有价值的。A 和 b 是固定的或预定义的。
任何评论表示赞赏!
genvarname(str,list)
在 [a string] 中生成一个有效的变量名,str
其中在每次迭代中的值str
都不同于排除列表
并 fieldname(S)
返回结构中已经存在的所有字段名称的列表S
(使用它来创建排除列表)
这是您想要的代码:
A = struct ();
for i = 1:5
A.(genvarname ('b', fieldnames (A))) = i;
end
您可以使用简单的命名结构字段sprintf
A = struct()
for ii = 1:10
fn = sprintf('b%d', ii );
A.(fn) = ii; % use the struct
end
我倾向于同意sebastian建议在这种类型的字段命名上使用数组或单元格。除了单元格和数组之外,您可能会发现containers.Map
它们非常通用和有用。