【问题标题】:Matlab navigate function workspaceMatlab 导航函数工作区
【发布时间】:2013-09-12 15:23:00
【问题描述】:

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

简单的情况下我知道怎么做

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

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

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

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

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


这是手动完成的方法

  1. 设置断点
  2. 一旦断点被​​命中,使用dbup
  3. 找到 x 并查看它(或用它做点什么(例如 evalinsave/load
  4. 按 f5

【问题讨论】:

  • 相关,并且标题会暗示它,但是在阅读了那个问题和答案(几乎已经包含在这个问题中)之后,我认为它不是重复的。
  • IMO 这基本上是同一个问题,除了在您的情况下使用 'base' 工作区而不是 'caller' 工作区。

标签: matlab function workspace


【解决方案1】:

怎么样:

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

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

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

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

【讨论】:

  • 谢谢,真不敢相信我错过了这个。你认为有办法在基地和呼叫者之间获得任何东西吗?或者获取工作区列表?
  • 您可以使用dbstack 获取工作区列表,但是无法访问使用evalin 的工作区。
猜你喜欢
  • 2012-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-23
  • 1970-01-01
相关资源
最近更新 更多