在MATLAB中粘贴struct对象

时间:2014-06-26 17:55:03

标签: matlab struct

我有一个关于 struct objects 的新问题:

我有两个结构,一个叫做“B1”,另一个是“B2”,两者都有相似的字段,但不一样。< / p>

现在,我想坚持两个结构对象保持其字段,实际上如果其中一个具有相同的字段(可能发生),则覆盖它。

我尝试使用 cat 命令,这只是给了我这个:

K>> cat(1,B1,B2)

ans = 

2x1 struct array with fields:
    meandata

正如您所看到的,“cat”创建了一个包含2个结构的对象,我想在下一个示例中创建类似于我的内容:

首先:

A.A1.A2=1;
A.A2.A2='a';

B1=A;

最后:

A.A1.A2=3;
A.A2.CC='b';

B2=A;

现在,我想做到这一点:

[B]=StickStructFunction(B1,B2)

选项1:('OverWrite')

B=
    A.A1.A2=3;%=> Overwrite if the field exist already.
    A.A2.A2='a';
    A.A2.CC='b';

选项2 :('保持价值')

B=
    A.A1.A2=[1 3];%=> Keep the values if the field exist already.
    A.A2.A2='a';
    A.A2.CC='b';

我真的很感激任何帮助,谢谢!

1 个答案:

答案 0 :(得分:0)

以下示例显示了如何执行此操作。创建两个结构A和B,可以找到B中的所有字段 - 然后创建一个新的结构C(A的副本)并在其中写入所有有效的B字段。当该字段存在时,它将被覆盖;当它没有时,就会被创建。

A.a = 1;
A.b = 2;
A.c = 3;
B.b = 4;
B.d = 6;

f2 = fieldnames(B);
C = A;
for ii = 1:numel(f2)
    C.(f2{ii}) = B.(f2{ii});
end

disp(C)

结果:

C
a: 1
b: 4
c: 3
d: 6