将多个结构合二为一

时间:2017-03-20 20:12:13

标签: matlab structure matlab-struct

我有一个只包含结构的matlab工作区。所有结构都具有相同的字段。 想象一下,我在工作区中有三个结构,名称为:

B00002N6AA  B00002N6VF  B00004OKOP  

我可以通过执行以下操作将它们组合成一个结构:

combined = [B00002N6AA  B00002N6VF  B00004OKOP];

现在我有成千上万的结构。我知道我可以通过以下方式得到他们的所有名字:

SNames = who;

是否有将它们全部组合成一个结构,而无需手动复制和粘贴其名称?

1 个答案:

答案 0 :(得分:3)

您可以将所有数据保存到文件中,然后将此文件重新加载到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)

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