我想将一个结构A
分配给索引的另一个结构B
:
B(3) = A;
A
字段与B
不同。我希望自动创建不存在的字段,并且自动忽略不存在的字段。
这可能在Matlab
吗?
答案 0 :(得分:1)
<强>解决方案强>
您可以使用fieldnames函数,并使用循环分配每个字段值。其他领域将保持不变。
示例强>
%defines input stract
a.f1 = 2; a.f2 = 3; a.f3 = 'str';
temp.f2=5; temp.f3 = 7; temp.f4 =1;
b(1) = temp; b(2) = temp; b(3) = temp;
%iterates over the fields of a and assigns their values into b
fields = fieldnames(a);
for ii = 1:numel(fields)
b(3).(fields{ii}) = a.(fields{ii});
end
<强>结果
前
a =
f1: 2
f2: 3
f3: 'str'
b(3) =
f2: 5
f3: 7
f4: 1
后
b(3)=
f2: 3
f3: 'str'
f4: 1
f1: 2
答案 1 :(得分:0)
我已经用类似这样的功能做了类似的事情:
function B = mergeStruct(B,A,bIdx)
aFields = fieldnames(A);
for af = aFields';
B(bIdx).(char(af)) = A.(char(af));
end
见这个例子:
>> B.a = 1;
>> B.b = 2;
>> A.b = 10;
>> A.c = 11;
>> B = mergeStruct(B,A,3)
>> B(1)
ans =
a: 1
b: 2
c: []
>> B(2)
ans =
a: []
b: []
c: []
>> B(3)
ans =
a: []
b: 10
c: 11