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

时间:2018-04-10 01:39:09

标签: matlab debugging

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

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

3 个答案:

答案 0 :(得分:1)

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

例如,如果要在代码中复制名为a的变量,并在基础工作区中将其称为b,请使用assignin('base', 'b', a)

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

答案 1 :(得分:1)

如果您知道要在基础工作区中比较的变量的名称,则可以使用evalin函数来获取它以进行比较。例如,假设您在基础工作区中有变量ground_truth,在任意嵌套函数中有变量result。从该函数中,您可以将它们进行比较,如下所示:

resultsMatch = isequal(result, evalin('base', 'ground_truth'));

答案 2 :(得分:1)

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