在matlab中合并结构字段单元格

TNT*_*TNT 2 merge matlab field structure

我希望在我进行部分计算的情况下合并结构字段,以便稍后填充整个结构字段单元格.

根据索引将结果放入细胞中,如下所示:

for i=3:4;
results1.index{i}=i;
results1.sqr{i}=i*i;
end
for i=1;
results2.index{i}=i;
results2.sqr{i}=i*i;
end
Run Code Online (Sandbox Code Playgroud)

分别给予:

results1 = 

    index: {[]  []  [3]  [4]}
      sqr: {[]  []  [9]  [16]}

results2 = 

    index: {[1]}
      sqr: {[1]}
Run Code Online (Sandbox Code Playgroud)

有没有办法合并得到的结果结构

allresults.index={[1] [] [3] [4]}
allresults.sqr={[1] [] [9] [16]}
Run Code Online (Sandbox Code Playgroud)

我可以避免重叠结果,因此在没有冲突的情况下(例如,没有单元格为空)没有冲突解决或覆盖就可以了.请注意,在较大的数据集中,单元格不限于标量,但可能包含单元格或其他类型.

Moh*_*nia 5

您可以先编写一个小帮助函数来合并单元格:

function R = mergeCells(A,B)
R = {};
IA = ~cellfun('isempty',A);
IB = ~cellfun('isempty',B);
R(IA) = A(IA);
R(IB) = B(IB);
end
Run Code Online (Sandbox Code Playgroud)

然后在循环中调用它来合并字段

for k = 1:numel(F), 
    f = F{k}; 
    allresults.(f) = mergeCells(results1.(f), results2.(f)); 
end
Run Code Online (Sandbox Code Playgroud)