2013-09-12 3 views
3

Я ищу способ доступа к переменным из других рабочих областей, в частности рабочей области, из которой вызывается текущая функция.Рабочая область функции навигации Matlab

Я знаю, как сделать это в простом случае:

% Get a variable called `x` from the base workspace 
x = evalin('base', 'x'); 

Однако, думать о situation где моя функция myFun, называется множеством различных функций (которые я не могу редактировать). И я просто знаю, что у каждого из них будет переменная x.

Теперь, как бы я мог видеть переменную x из рабочей области, в которой вызывается myFun?

Так что я думаю, ключевой момент в моем вопросе:

Как программно перемещаться в выше рабочей области?


Вот как это можно сделать вручную:

  1. Установить точку останова
  2. После того, как точка останова Использовать dbup
  3. Find х и смотреть на него (или сделать что-то с ним (с evalin или save/load например)
  4. Hit f5
+0

Возможный дубликат [Доступ к переменной из другой рабочей области в Matlab?] (Http://stackoverflow.com/questions/8572177/access-variable-from-other-workspace-in-matlab) –

+0

Связанный, и заголовок будет предложите это, но после прочтения этого вопроса и ответа (который в значительной степени уже включен в этот вопрос), я не думаю, что это дубликат. –

+0

IMO, это в основном тот же вопрос, кроме рабочего пространства '' base'' вместо рабочего пространства '' caller', как в вашем случае. –

ответ

4

Как насчет:

x = evalin('caller', 'x') 

Существует ограничение, однако, из документации от Matlab:

Evalin не может использоваться рекурсивно, чтобы оценить выражение. Например, последовательность формы evalin ('caller', 'evalin (' 'caller' ',' 'x' ')') не работает.

Однако evalin не является отличной функцией. Любое использование следует избегать imho.

+0

Спасибо, не могу поверить, я пропустил это. Как вы думаете, есть способ получить что-нибудь между базой и вызывающим? Или получить список рабочих областей? –

+0

Вы можете использовать 'dbstack', чтобы получить список рабочих областей, однако не удается получить доступ к тем, у кого есть' evalin'. – Nick

Смежные вопросы