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