在Matlab中禁用绘图

时间:2012-04-12 18:32:16

标签: matlab matlab-figure

我有一些用Matlab编写的程序,由于某些原因需要运行几次(调试,使用不同的输入进行测试等等)

但是,有很多图形由程序及其各种功能绘制,因此每次运行程序时,我都要等待所有图形显示,这非常烦人且耗时(特别是当你使用小型笔记本电脑时)。 程序执行后,我用close all关闭它们。

所以我的问题是:

有没有办法在选项中禁用Matlab中的所有绘图/图形/图表?,或者通过执行disable plotenable plot等特定代码来确保没有数字显示。

我知道我可以浏览代码并评论绘图部分,但我不想忘记取消注释。

3 个答案:

答案 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”的值来绘制或不绘制数字。