是否有类似于assignin()
的内容来获取存在于另一个工作空间中的变量并将其传递到本地工作空间,例如比如在函数中访问base-workspace变量!?
我目前正在尝试实现的一个例子是:我有一个函数bla(x)
,它接受一个参数。如果未指定x
,则该函数应自动使用基本matlab工作空间中存在的x
(如果存在x
)。
好的东西将是
function bla(x)
if(nargin == 0 && exist('x', 'base', 'var'))
x = fetchin('base', 'x');
end
% ...
end
我知道fetchin()
不存在,并且exist()
没有采取这样的第二个参数来检查某个工作区!
非常感谢提前!
答案 0 :(得分:18)
Matlab函数evalin
可以做到:
x=evalin('base','x');
编辑:正如Col Heather所提到的,您可以使用try / catch语句来处理函数evalin
可能生成的错误(例如,如果变量不存在,则会出现)检查变量是否具有正确的类型。
答案 1 :(得分:2)
检查调用者/基础中存在的变量可以通过以下方式完成:
existStr=sprintf('exist(''%s'', ''var'')==1', varNames{iVar}); % verify variable exists
isVarExist=evalin(ws, existStr);
if isVarExist
valVar=evalin(ws, varNames{iVar});
else
valVar=[];
end