假设我有权访问使用该load函数创建的结构:
structWithVariables = load('data.mat');
Run Code Online (Sandbox Code Playgroud)
我想将此结构中的所有变量加载到工作空间中,但如果不对所有变量的名称进行硬编码,我无法找到任何方法.
注意:我无权访问.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
Run Code Online (Sandbox Code Playgroud)
将该函数称为struct2vars(structWithVariables),现在它们作为变量填充到您的工作区中.
虽然如果您可以访问要调用的代码,那么重写它以将变量作为函数参数而不是查看当前工作空间可能会更简洁.