Доступ к переменной из другой рабочей области в 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