将多个结构合二为一
Combine multiple structures into one
我有一个只包含结构的 matlab 工作区。所有结构都有相同的字段。
假设我在工作区中有三个结构,其名称为:
B00002N6AA B00002N6VF B00004OKOP
我可以通过以下方式将它们组合成一个结构:
combined = [B00002N6AA B00002N6VF B00004OKOP];
现在我有成千上万的结构。我知道我可以通过以下方式获得他们所有的名字:
SNames = who;
是否可以将它们全部组合成一个结构,而无需手动复制和粘贴它们的名称?
您可以将所有数据保存到一个文件中,然后将此文件重新加载到 struct
中,然后使用 struct2array
将其转换为结构数组。
filename = [tempname, '.mat'];
% Save all variables starting with B0000
save(filename, 'B0000*')
% load the data back into a struct
tmp = load(filename, '-mat');
% Convert this struct into an array of structs
result = struct2array(tmp);
% Delete the temporary file
delete(filename)
以后最好避免使用编码数据的动态变量名。相反,将数据存储在数据结构本身中。
我有一个只包含结构的 matlab 工作区。所有结构都有相同的字段。 假设我在工作区中有三个结构,其名称为:
B00002N6AA B00002N6VF B00004OKOP
我可以通过以下方式将它们组合成一个结构:
combined = [B00002N6AA B00002N6VF B00004OKOP];
现在我有成千上万的结构。我知道我可以通过以下方式获得他们所有的名字:
SNames = who;
是否可以将它们全部组合成一个结构,而无需手动复制和粘贴它们的名称?
您可以将所有数据保存到一个文件中,然后将此文件重新加载到 struct
中,然后使用 struct2array
将其转换为结构数组。
filename = [tempname, '.mat'];
% Save all variables starting with B0000
save(filename, 'B0000*')
% load the data back into a struct
tmp = load(filename, '-mat');
% Convert this struct into an array of structs
result = struct2array(tmp);
% Delete the temporary file
delete(filename)
以后最好避免使用编码数据的动态变量名。相反,将数据存储在数据结构本身中。