Matlab 结构体的递归串联
是否可以以某种方式递归连接两个 matlab 结构而不迭代其中一个结构的所有叶子。
例如
xa=1;
xbc=2;
ybd=3;
你=4;
将导致以下结果
res = mergeStructs(x,y)
res.a=4
res.bc=2
res.bd=3
Is it somehow possible to concatenate two matlab structures recursively without iterating over all leaves of one of the structures.
For instance
x.a=1;
x.b.c=2;
y.b.d=3;
y.a = 4 ;
would result in the following
res = mergeStructs(x,y)
res.a=4
res.b.c=2
res.b.d=3
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
以下函数适用于您的特定示例。有些事情它不会考虑,所以如果您希望它适用于其他情况,请告诉我,我可以更新。
然后
res = mergeStructs(x,y);
给出:根据您的要求。
编辑:我将
isstruct(x) &&
添加到第一行。旧版本工作正常,因为如果~isstruct(x)
,isfield(x,n)
返回0
,但新版本如果y
是一个大结构体,~isstruct(x)
。The following function works for your particular example. There will be things it doesn't consider, so let me know if there are other cases you want it to work for and I can update.
Then
res = mergeStructs(x,y);
gives:as you require.
EDIT: I added
isstruct(x) &&
to the first line. The old version worked fine becauseisfield(x,n)
returns0
if~isstruct(x)
, but the new version is slightly faster ify
is a big struct and~isstruct(x)
.