我有一个关于 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';
我真的很感激任何帮助,谢谢!
答案 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