对象属性的迭代定义

3

假设你有一个对象 A,其中包含属性 B,你希望定义一些 A.B 的参数(例如 A.B.n1、A.B.n2、......),由于这些参数很多,你想要通过迭代的方式完成。但是我遇到的问题是,每次尝试以迭代方式进行时:

for j=1:4
    S=strcat('n',int2str(j));
    A.B.S=j;
end

我只定义了 A.B.S=4,而没有创建 A.B.n1=1 , A.B.n2=2,...,A.B.n4=4

如何让MATLAB理解我想要的是将 S 定义为一个变量?

1个回答

5

您想使用动态字段名来访问结构数据:

S = strtrim(cellstr(num2str((1:10)','n%d')));   %#'
for i=1:numel(S)
    A.B.(S{i}) = i;
end

结果

>> A.B
ans = 
     n1: 1
     n2: 2
     n3: 3
     n4: 4
     n5: 5
     n6: 6
     n7: 7
     n8: 8
     n9: 9
    n10: 10

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接