将多个结构合二为一

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)

以后最好避免使用编码数据的动态变量名。相反,将数据存储在数据结构本身中。