假设下一个变量:
B=genvarname(strcat('B',num2str(25),''));
B将是:
B=B25;
现在,我想隐蔽" B25"在struct对象中,所以我这样做了:
eval([B ' = struct([])']);
使用该代码,我将B25(保存在" B"中)转换为结构对象。
现在,我想将另一个struct对象保存到B25中,就像这样:
A =
a1: 1
a2: 2
a3: 'a'
如您所见,A也是一个结构。
这是我需要你帮助的地方,我不知道如何做这样的事情:
somefunction(B,A);
坚持B与A,像这样:
B25.A=
a1: 1
a2: 2
a3: 'a'
谢谢!
答案 0 :(得分:1)
你可以继续讨厌,并做:
eval([B '.A = A;'])
哪个会起作用,但是当你使用越来越多的变量名称(如B25
)时,样式会变得很糟糕。
然而,正确的问题是,你为什么要使用动态的,编号为"变量名而不是结构数组或单元数组?
如果您有25个B
,那么事情看起来就像以下一样简单:
B(25).A = A; % using a struct-array
或
B{25}.A = A; % using a cell array
在编程语言中列出的内容是为了避免需要B1
,B2
等变量名称。
答案 1 :(得分:0)
为什么不简单:
A = struct('a1', 1, 'a2', 2, 'a3', 'a');
和
B = struct('a', A)
答案 2 :(得分:0)
B=genvarname(strcat('B',num2str(25),''));
VaibleName='A';
Data= struct('a1', 1, 'a2', 2, 'a3', 'a');
eval([B strcat(['=struct(''',VaibleName,''', Data)'''])])
B25.A
ans =
a1: 1
a2: 2
a3: 'a'