Matlab的;结构字段名称有价值(=数字)

时间:2013-11-15 03:02:39

标签: matlab

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

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

任何评论都表示赞赏!

2 个答案:

答案 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非常通用且有用。