2

我有一个嵌套函数,它调用一个基本上包含一些常量和字符串定义的脚本。我需要将这些变量传递给基础工作区。我知道我可以将它们定义global为应该不是最好的解决方案,是吗?

在我的情况下,使用函数的输出参数的传统方式似乎太复杂了。(这实际上只是一次调用,所以我不想破坏我的代码)所以我考虑过使用assigninwho但它似乎既不适用于元胞数组,也不适用于逗号分隔的列表。可能我只是缺少一些语法改进。

function myFunction()

myScriptWithDefinitions;

% who returns a cell array with all variables from my script
temp = who;
% now I try to assign these variables to my base workspace
% these are my attempts, none of them working
assignin('base',who);
assignin('base',temp{:});
assignin('base',{temp{:}});

...
end

我知道我实际上需要同时传递名称列表和值列表。任何进一步的想法?


编辑:像

assignin('base',{'A','B'},{2,5})
% or 
assignin('base',{'A',2},{'B',5})

不起作用,所以我想assignin一般来说不是一个选择。

4

1 回答 1

2

使用 assignin,您一次只能分配 1 个变量。

使用“who”,您将获得一个包含变量名称的字符串元胞数组。现在,如果您有此列表:

myVarList=who;

您可以循环并将变量分配给工作区:

myVarList=who;

for indVar = 1:length(myVarList)
    assignin('base',myVarList{indVar},eval(myVarList{indVar}))
end

注意:这是一个评估解决方案......如果有人知道一个快速的替代品,请告诉我:)

于 2013-10-21T10:30:29.400 回答