如何在MATLAB中确定打印数字的位置?

Joh*_*ohn 9 matlab

在MATLAB中,如何判断变量输出的位置?

我有大约10K行的MATLAB代码,大约有4个人正在处理它.在某个地方,有人以典型的方式将变量转储到MATLAB脚本中:

foo
Run Code Online (Sandbox Code Playgroud)

不幸的是,我不知道变量输出是什么.而产出正在混乱其他更重要的产出.

有任何想法吗?

ps有人试过覆盖Standard.out吗?由于MATLAB和Java集成非常紧密,这会起作用吗?我遇到这个问题时在Java中使用的一个技巧是将Standard.out替换为我自己的版本.

And*_*nke 7

哦,我也讨厌这个.我希望Matlab有一个"dbstop if display"来完全停止.

来自维银的mlint遍历是一个好主意.但是,Mlint无法看到动态代码,例如eval()或字符串值数字句柄回调的参数.我在这样的回调中运行这样的输出,其中up​​date_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流的自定义替换相似.

毋庸置疑,向内置类型添加方法是非标准的,不受支持的,非常容易出错的,并且在调试会话之外需要非常小心.


Mat*_*oug 5

这是mLint可以帮助您找到的典型模式:

替代文字

因此,请在编辑器的右侧查看橙色线条.这不仅可以帮助您找到这种优化,还可以找到很多甚至更多.另请注意,您的变量名称已突出显示.