我有一些用Matlab编写的程序,由于某些原因需要运行几次(调试,使用不同的输入进行测试等等)
但是,有很多图形由程序及其各种功能绘制,因此每次运行程序时,我都要等待所有图形显示,这非常烦人且耗时(特别是当你使用小型笔记本电脑时)。
程序执行后,我用close all
关闭它们。
所以我的问题是:
有没有办法在选项中禁用Matlab中的所有绘图/图形/图表?,或者通过执行disable plot
和enable plot
等特定代码来确保没有数字显示。
我知道我可以浏览代码并评论绘图部分,但我不想忘记取消注释。
答案 0 :(得分:13)
尝试两种命令的某种组合:
set(gcf,'Visible','off') % turns current figure "off"
set(0,'DefaultFigureVisible','off'); % all subsequent figures "off"
第二个,如果你把它放在程序的开头附近,可能会为你做的伎俩。当然,它仍在创建绘图,这可能不适合计算时间和/或RAM问题。
这是避免使用Matlab的经典理由。它助长了糟糕的编程设计。要正确解决这个问题,您应该创建一些东西,让您在程序的最高级别“翻转开关”,并控制是否显示图表。也许它甚至具有显示/不显示选项的渐变,因此您可以选择不同类型的图表,这些图表根据您正在运行的诊断程序显示/不显示。
理想情况下,您希望这个“翻转开关”创建成为可以访问其他对象的可见性和绘图功能的类。但是因为在Matlab中交互式面向对象是如此繁琐,所以开发这样一个解决方案通常不值得,而且大多数人从项目一开始就不考虑这个设计方面。
Matlab鼓励有人通过制作像“isPlotVisible”之类的标志变量来解决这个问题,并创建始终接受这些标志的函数。我同意这是一个糟糕的设计。
答案 1 :(得分:3)
您可以从命令行运行matlab:
matlab -nojvm
但是你根本就没有获得GUI。或者,您可以编写一个文件' plot.m':
function h = plot(varargin)
h = [];
end
没有做任何事情。如果这是在工作目录中(或路径顶部附近的其他位置),则情节将调用您的函数而不是真实的'情节。您需要从您调用的任何其他图形功能中执行相同操作。
我所知道的最接近的方式是关闭密谋'将是这样的函数的文件夹,您可以添加到路径以禁用绘图,并删除以启用。
答案 2 :(得分:1)
之前的方法很好,但一个简单而好的习惯就是使用"on/off parameter"
。所以基本上,在代码的开头,你可以添加如下内容:
DisplayFigure = 1; %1 = display, 0 = no display
之后,为所有与绘图相关的命令添加"if DisplayFigure == 1 ... end"
,其中命令应该在if语句中(上面的......)。因此,您甚至不会计算绘图,这将节省您大量的时间和内存。您只需要更改变量“DisplayFigure”的值来绘制或不绘制数字。