Matlab导航函数工作区

3
我希望您能够在其他工作区访问变量,特别是从调用当前函数的工作区访问变量。 我知道如何在简单情况下实现:
% Get a variable called `x` from the base workspace
x = evalin('base', 'x');

然而,考虑一种情况,我的函数myFun被许多不同的函数(我无法编辑)调用。 我只知道它们每个都会有一个变量x

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

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

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


以下是手动完成的步骤::

  1. 设置断点
  2. 一旦触发断点,请使用dbup
  3. 查找x并查看它(或者使用evalinsave/load执行某些操作)
  4. 按f5

与标题所示相符,但在阅读了该问题和答案之后(这些内容几乎已经包含在此问题中),我不认为它是重复的。 - Dennis Jaheruddin
在我看来,这基本上是相同的问题,只不过使用了 'base' 工作区而不是 'caller' 工作区,就像你的情况一样。 - Eitan T
1个回答

4
如何看待:
x = evalin('caller', 'x')

然而,根据Matlab的文档,有一个限制:

evalin不能递归地用于评估表达式。例如,形如evalin('caller','evalin(''caller'',''x'')')的序列是无效的。

然而,evalin不是一个很好的函数。在我看来,应该尽量避免使用它。


谢谢,真不敢相信我错过了这个。你觉得有没有办法获取基础和调用者之间的任何内容?或者获取工作区列表? - Dennis Jaheruddin
你可以使用 dbstack 获取工作区列表,但是无法使用 evalin 访问它们。 - Nick

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接