假设我可以访问使用 load
函数创建的结构:
structWithVariables = load('data.mat');
我想将此结构中的所有变量加载到工作区中,但如果不对所有变量的名称进行硬编码,我找不到任何方法。
注意:我无权访问 .mat 文件,也没有加载结构的代码,我实际上只有结构。
注意 2:我想要这样做的原因只是为了使用一些引用变量的代码,就好像它们在工作区中一样。我不想更改代码。
最佳答案
是的。使用 fieldnames
以编程方式获取变量名称,并使用 assignin
将它们粘贴到您的工作区中。
function struct2vars(s)
%STRUCT2VARS Extract values from struct fields to workspace variables
names = fieldnames(s);
for i = 1:numel(names)
assignin('caller', names{i}, s.(names{i}));
end
将该函数称为 struct2vars(structWithVariables)
,现在它们作为变量填充到您的工作区中。
尽管如果您有权访问要调用的代码,重写代码以将变量作为函数参数而不是查看当前工作区可能会更清晰。
关于matlab - 如何将结构中的变量加载到 Matlab 工作区中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29958368/