3

我正在尝试将有价值的数字(数字并由 for 循环给出)分配给结构字段的名称。例如,我想做如下,

A.bx,其中 A 是结构名称(= char),b 是字段名称(= char)的一部分,x 是 for 循环给出的有价值的。A 和 b 是固定的或预定义的。

任何评论表示赞赏!

4

2 回答 2

4

genvarname(str,list)在 [a string] 中生成一个有效的变量名,str其中在每次迭代中的值str都不同于排除列表

fieldname(S) 返回结构中已经存在的所有字段名称的列表S(使用它来创建排除列表)

这是您想要的代码:

A = struct ();
for i = 1:5
    A.(genvarname ('b', fieldnames (A))) = i;
end


阅读
1. 2.genvarname(str,list)
fieldnames(S)

于 2013-11-15T03:50:21.550 回答
1

您可以使用简单的命名结构字段sprintf

A = struct()
for ii = 1:10
    fn = sprintf('b%d', ii );
    A.(fn) = ii; % use the struct
end

我倾向于同意sebastian建议在这种类型的字段命名上使用数组或单元格。除了单元格和数组之外,您可能会发现containers.Map它们非常通用和有用。

于 2013-11-15T08:50:05.013 回答