在MATLAB中,如何判断变量输出的位置?
我有大约10K行的MATLAB代码,大约有4个人正在处理它.在某个地方,有人以典型的方式将变量转储到MATLAB脚本中:
foo
Run Code Online (Sandbox Code Playgroud)
不幸的是,我不知道变量输出是什么.而产出正在混乱其他更重要的产出.
有任何想法吗?
ps有人试过覆盖Standard.out吗?由于MATLAB和Java集成非常紧密,这会起作用吗?我遇到这个问题时在Java中使用的一个技巧是将Standard.out替换为我自己的版本.
哦,我也讨厌这个.我希望Matlab有一个"dbstop if display"来完全停止.
来自维银的mlint遍历是一个好主意.但是,Mlint无法看到动态代码,例如eval()或字符串值数字句柄回调的参数.我在这样的回调中运行这样的输出,其中update_table()在某些条件下返回一些东西.
uicontrol('Style','pushbutton', 'Callback','update_table')
Run Code Online (Sandbox Code Playgroud)
您可以将方法"打孔"到内置类型,为dbstop提供一个钩子.在Matlab路径的目录中,创建一个名为"@double"的新目录,然后创建一个@ double/display.m文件.
function display(varargin)
builtin('display', varargin{:});
Run Code Online (Sandbox Code Playgroud)
那你可以做
dbstop in double/display at 2
Run Code Online (Sandbox Code Playgroud)
并运行您的代码.现在,只要显示被省略的分号隐式调用,包括动态代码,就会被调到调试器中.为@double做这件事似乎也涵盖了char和cell.如果显示的是不同的类型,则可能需要进行实验.
您可以以相同的方式覆盖内置的disp().我认为这与Java的System.out流的自定义替换相似.
毋庸置疑,向内置类型添加方法是非标准的,不受支持的,非常容易出错的,并且在调试会话之外需要非常小心.