【发布时间】:2012-11-12 07:10:15
【问题描述】:
要合并数据,我想加载一个数据作为基础,将数据分配给另一个变量(例如,将其命名为 base_data)。然后加载另一个数据并循环遍历其所有字段。如果基础数据中不存在当前字段,则将该字段添加到基础数据中。 (例如 base_data.fieldname = data.fieldname)。然后我想将 base_data 保存到文件中。我可以知道在 Matlab 中执行此操作的命令吗?
【问题讨论】:
要合并数据,我想加载一个数据作为基础,将数据分配给另一个变量(例如,将其命名为 base_data)。然后加载另一个数据并循环遍历其所有字段。如果基础数据中不存在当前字段,则将该字段添加到基础数据中。 (例如 base_data.fieldname = data.fieldname)。然后我想将 base_data 保存到文件中。我可以知道在 Matlab 中执行此操作的命令吗?
【问题讨论】:
使用动态字段名称:
base_data = load('A.mat');
B = load('B.mat');
fn = fieldnames(B);
for ii=1:length(fn)
fieldname = char(fn(ii));
if ~isfield(base_data,fieldname)
base_data.(fieldname) = B.(fieldname);
end
end
save('base_data','base_data')
【讨论】:
base_data 后,使用 gui(变量检查器窗格)或 disp(fieldnames(base_data)) 向您显示结构中包含的内容。您可以从那里进行调试。您还可以在上面的代码中设置断点,以查看 B 的字段是否被适当地复制到 base_data 中。可能是使用 B=load('B.mat') 语法加载您的 matfile 并没有达到您的预期,在这种情况下,您可能需要先重新排列该结构。