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