You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MATLAB中如何合并两个字段唯一的结构体?

How to Merge Two Unique-Field Structures in MATLAB Efficiently

我之前也碰到过这个MATLAB结构体合并的麻烦事儿,手动一个个加字段真的太折磨人了,后来琢磨出了几个优雅的解决方案,分享给你:

问题场景:现有两个字段完全不重复的结构体:

% 结构体1
S_1.a = 1; S_1.b = 2; S_1.c = 3;
% 结构体2
S_2.d = 1; S_2.e = 2;

需要合并成一个包含所有字段的结构体,但MATLAB没有内置的自动合并命令,手动逐个添加字段既繁琐又低效。

优雅高效的合并方法

方法1:动态字段赋值批量添加

这种方法逻辑清晰,通用性强,就算后续结构体字段有增减,代码也不用修改:

% 以S_1为基础初始化合并后的结构体
merged_struct = S_1;
% 获取S_2的所有字段名
s2_field_names = fieldnames(S_2);
% 循环批量把S_2的字段和值添加进去
for idx = 1:length(s2_field_names)
    current_field = s2_field_names{idx};
    merged_struct.(current_field) = S_2.(current_field);
end

方法2:结构体数组转结构体(更紧凑)

如果确定两个结构体没有重复字段,可以用这个更简洁的写法:

% 将两个结构体打包成结构体数组
struct_array = [S_1, S_2];
% 转换为单元格数组并合并所有字段值
merged_cell_data = struct2cell(struct_array);
% 合并字段名并转换回结构体
merged_struct = cell2struct(merged_cell_data, [fieldnames(S_1); fieldnames(S_2)], 1);

重要提示:如果两个结构体存在重复字段,上述两种方法都会用后一个结构体的字段值覆盖前一个的,所以一定要确保字段唯一再使用哦!

内容的提问来源于stack exchange,提问作者Mark_Anderson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:21:58