如何在多个变量中使用assignin?

时间:2013-10-21 10:02:28

标签: matlab variable-assignment

我有一个嵌套函数,它调用一个基本包含一些常量和字符串定义的脚本。我需要将这些变量传递给基础工作区。我知道我可以将它们定义为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一般不是一种选择。

1 个答案:

答案 0 :(得分:2)

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

使用“who”获取字符串的单元格数组,其中包含变量的名称。现在,如果你有这个清单:

myVarList=who;

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

myVarList=who;

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

注意:这是一个eval-solution ...如果有人知道快速替换它,请告诉我:))