如何使用MATLAB粘贴struct对象

时间:2014-06-15 17:12:49

标签: matlab struct

假设下一个变量:

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'

谢谢!

3 个答案:

答案 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

在编程语言中列出的内容是为了避免需要B1B2等变量名称。

答案 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'