0

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

B00002N6AA  B00002N6VF  B00004OKOP  

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

combined = [B00002N6AA  B00002N6VF  B00004OKOP];

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

SNames = who;

无论如何将它们组合成一个结构而不必手动复制和粘贴它们的名称?

4

1 回答 1

3

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

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

于 2017-03-20T20:14:01.143 回答