我正在寻找一种从其他工作区访问变量的方法,特别是调用当前函数的工作区。
我知道在简单的情况下该怎么做:
% Get a variable called `x` from the base workspace
x = evalin('base', 'x');
但是,想想我的函数myFun
的情况,被许多不同的函数调用(我无法编辑)。而且我只知道他们每个人都会有一个可变的x
.
现在,如何从调用myFun
的工作空间中查看变量x
?
所以我想我问题的关键点是:
如何以编程方式导航到上述工作区?
以下是手动完成的方法:
- 设置断点
- 命中断点后,请使用
dbup
- 找到 x 并查看它(或用它做一些事情(例如使用
evalin
或save
/load
) - 点击 f5
怎么样:
x = evalin('caller', 'x')
但是,从 Matlab 的文档来看,有一个限制:
evalin 不能递归用于计算表达式。例如,形式为
evalin('caller','evalin(''caller', ''x')') 的序列不起作用。
但是,evalin
不是一个很棒的功能。恕我直言,应避免任何使用。