我经常希望我可以检查调用堆栈中不同工作区的对象进行比较。有没有办法做到这一点?现在,我必须破坏代码强制返回,返回函数输出变量,以便我回到基础工作区,然后使用openvar将返回的对象与基础工作区中的内容进行比较。
在紧要关头,我可以在调试模式下使用可能深度嵌套的函数保存工作区,然后修改代码(更少)以强制返回基础工作区,然后加载已保存的工作区。我希望有一种方法可以在不破坏代码的情况下强制返回。
答案 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对于比较变量非常有用。