Jos*_*ues 3 matlab data-structures
我在Matlab工作.我已经定义:
a(1).x=1;
a(1).y=2;
a(1).z.w=3;
a(2).x=4;
a(2).y=5;
a(2).z.w=6;
Run Code Online (Sandbox Code Playgroud)
我现在正在尝试在两个结构a(1)和a(2)中添加字段,以便得到:
c.x = 5;
c.y = 7;
c.z.w = 9;
Run Code Online (Sandbox Code Playgroud)
知道如何以优雅的方式做到这一点吗?请注意,在原始问题中,结构具有更多字段(大约50个).
非常感谢你提前!何塞
对于任何深度的结构,这是一个解决方案
脚本代码(或MATLAB命令)
a(1).x=1;
a(1).y=2;
a(1).z.w=3;
a(2).x=4;
a(2).y=5;
a(2).z.w=6;
c=a(1);
c = returnStruct(c, a(2));
%{
you can also sum any amount of structs
for i=2:length(a)
c=returnStruct(c, a(i));
end
%}
Run Code Online (Sandbox Code Playgroud)
具有递归功能
function rs = returnStruct(s,a)
fn = fieldnames(s);
for i=1:length(fn)
if isstruct(s.(fn{i}))
s.(fn{i}) = returnStruct(s.(fn{i}), a.(fn{i}));
else
s.(fn{i}) = s.(fn{i})+a.(fn{i});
end
end
rs = s;
end
Run Code Online (Sandbox Code Playgroud)
我测试了更深层次的结构,它完美地工作.也许,你必须稍微适应你的情况,但这应该是要走的路.
不幸的是,任何功能struct2cell只会转换第一级,所以你需要别的东西.