Доступ к переменной из другой рабочей области в Matlab?
есть что-то похожее на assignin()
чтобы получить переменную, которая существует в другом рабочем пространстве, и получить ее в локальное рабочее пространство, например, как доступ к переменной base-workspace в функции!?
один пример, который я в настоящее время пытаюсь достичь: у меня есть функция bla(x)
, который принимает один параметр. Когда x
не указан, функция должна автоматически использовать x
который существует в базовой рабочей области matlab (если есть x
).
что-то хорошее будет
function bla(x)
if(nargin == 0 && exist('x', 'base', 'var'))
x = fetchin('base', 'x');
end
% ...
end
Я знаю, что fetchin()
не существует и что exist()
doesn#t принимает такой второй параметр для проверки в определенном рабочем пространстве!
Большое спасибо заранее!
2 ответов
функция Matlab evalin
можете сделать это:
x=evalin('base','x');
EDIT: Как упоминалось Col Heather, вы можете использовать оператор try / catch для обработки ошибок, которые могут быть сгенерированы функцией evalin
(в вашем случае, если переменная не существует, например), а затем проверить, если переменная имеет правильный тип.
проверка переменной, существующей в caller / base, может быть выполнена через:
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