3

我正在寻找一种从其他工作区访问变量的方法,特别是调用当前函数的工作区。

我知道如何在简单的情况下做到这一点

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

但是,想想我的函数被许多不同的函数(我无法编辑)调用的情况。myFun而且我只知道他们每个人都会有一个变量x

现在,我如何能够x从被调用的工作区中看到变量myFun

所以我想我的问题的关键点是:

如何以编程方式导航到上述工作区?


这是手动完成的方法

  1. 设置断点
  2. 一旦断点被​​命中使用dbup
  3. 找到 x 并查看它(或用它做某事(例如使用evalinor save/ )load
  4. 按 f5
4

1 回答 1

4

怎么样:

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

但是,Matlab 的文档有一个限制:

evalin 不能递归地用于计算表达式。例如, evalin('caller','evalin(''caller'', ''x'')') 形式的序列不起作用。

但是,evalin并不是一个很好的功能。恕我直言,应避免任何使用。

于 2013-09-12T15:25:39.600 回答