我正在运行一个相当大的脚本。在输出屏幕中,我得到ans = 10
。
问题是代码非常大,我无法确定此输出的来源。
是否有任何提示可以在MATLAB环境中找到此输出的来源,因为我不希望屏幕上有随机输出?
答案 0 :(得分:6)
如果是单个脚本文件,您可以通过编程方式调用mlint
以struct
形式返回所有警告:
L = mlint('my_filename'); % No need for .m at the end
检查结构,您可以看到以下内容:
此结构有一个名为'message'
的字段,其中包含各种问题,其中包括我们所追求的问题 - 'Terminate statement with semicolon to suppress output (in functions).'
。在这个阶段你可以运行
find( strcmp({L.message},... % output is not suppressed on purpose
'Terminate statement with semicolon to suppress output (in functions).') )
然后检查要打印的行号。
或者,如果您想跳过变量编辑器,或者想要检查.m
个文件的整个文件夹,您可以运行mlintrpt
(如果是文件夹)或{{1} (在单个文件的情况下)并以下列形式获得报告:
答案 1 :(得分:4)
正如路易斯所说:寻找mlint
错误。在代码中,它显示为橙色阴影=
,橙色在其下方摆动;在右侧的滚动条上,它显示一条橙色线,您可以将鼠标悬停在该线上以查看警告内容,然后单击以转到警告。
此外,我还包括完成的红色错误。这些将导致您的代码无法运行。同样在这里,红色摆动+右边的红线。
最后,右上角的方框,箭头,将是绿色(没有问题),橙色(警告,但代码通常可以运行)或红色(代码赢得不能跑)。
答案 2 :(得分:0)
使用Dev-iL的答案来创建一个简单的函数,它将告诉您未被抑制的代码行。这样您就不需要检查结构L中的返回行。示例:lines = UnsuppressedLines('isEven.m')
function [lines] = UnsuppressedLines( matlabScript)
l = mlint(matlabScript);
unsuppressedInstances = find( strcmp({l.message},'Terminate statement with semicolon to suppress output (in functions).') )
if isempty(unsuppressedInstances)
fprintf('No unsuppressed lines in script')
lines = [];
else
lines = {l.line};
lines = lines(unsuppressedInstances);
end
end