对象属性的迭代定义

peb*_*x11 3 matlab struct object

假设您有一个A具有属性的对象,B 并且您想要定义一些参数A.B(比如说A.B.n1 , A.B.n2 , ....),因为这些参数很多,您希望迭代地执行此操作.我遇到的问题是每当我尝试以迭代方式执行此操作时:

for j=1:4
    S=strcat('n',int2str(j));
    A.B.S=j;
end
Run Code Online (Sandbox Code Playgroud)

我只定义A.B.S=4并且不创建 A.B.n1=1 , A.B.n2=2,...,A.B.n4=4.

如何让MATLAB理解我想S成为一个变量?

Amr*_*mro 5

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

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

结果

>> A.B
ans = 
     n1: 1
     n2: 2
     n3: 3
     n4: 4
     n5: 5
     n6: 6
     n7: 7
     n8: 8
     n9: 9
    n10: 10
Run Code Online (Sandbox Code Playgroud)