代码之家  ›  专栏  ›  技术社区  ›  user36800

Matlab:检查来自不同工作空间的对象

  •  2
  • user36800  · 技术社区  · 7 年前

    我经常希望可以检查调用堆栈中不同工作区的对象以进行比较。有没有办法做到这一点?现在,我必须修改代码,强制返回,返回函数输出变量,以便回到基本工作区,然后使用openvar将返回的对象与基本工作区中的内容进行比较。

    在紧急情况下,我可以在调试模式下使用可能嵌套得很深的函数保存工作区,然后修改代码(更少)以强制返回基本工作区,然后加载保存的工作区。我希望有一种方法可以在不破坏代码的情况下强制返回。

    3 回复  |  直到 7 年前
        1
  •  1
  •   Sam Roberts David Peden    7 年前

    您可以使用命令 assignin 将变量复制到基本工作区以进行比较。

    例如,如果要在代码中复制一个名为 a ,并在基本工作区中调用它 b 使用 assignin('base', 'b', a)

    您可以直接在代码中包含该命令,也可以在调试器中手动在命令行中输入该命令。

        2
  •  1
  •   gnovice    7 年前

    如果知道要在基本工作区中与之进行比较的变量的名称,则可以使用 evalin 函数获取它以进行比较。例如,假设您有一个变量 ground_truth 在基本工作空间中,以及一个变量 result 在任意嵌套函数中。通过该函数,您可以比较它们是否相等,如下所示:

    resultsMatch = isequal(result, evalin('base', 'ground_truth'));
    
        3
  •  1
  •   matlabgui    7 年前

    除了已经添加的两个答案之外,您可能会发现 this FEX submission 用于比较变量。