我有一个只包含结构的matlab工作区。所有结构都具有相同的字段。 想象一下,我在工作区中有三个结构,名称为:
B00002N6AA B00002N6VF B00004OKOP
我可以通过执行以下操作将它们组合成一个结构:
combined = [B00002N6AA B00002N6VF B00004OKOP];
现在我有成千上万的结构。我知道我可以通过以下方式得到他们的所有名字:
SNames = who;
是否有将它们全部组合成一个结构,而无需手动复制和粘贴其名称?
答案 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)
将来,最好避免使用编码数据的动态变量名称。相反,请将数据存储在数据结构本身中。