在Matlab中禁用绘图

在Matlab中禁用绘图,matlab,matlab-figure,Matlab,Matlab Figure,我有一些用Matlab编写的程序,出于某些原因(调试、使用不同输入测试等),我需要运行几次 但是,有很多图形是由程序及其各种功能绘制的,因此每次运行程序时,我都必须等待所有图形显示出来,这非常烦人且耗时(尤其是当您使用小型笔记本电脑时)。 程序执行后,我用closeall关闭它们 所以我的问题是: 有没有办法禁用Matlab中的所有绘图/图形/图形?在选项中,或者通过执行某种代码,如禁用绘图和启用绘图,以确保没有显示任何图形 我知道我可以浏览代码并注释绘图部分,但我不想忘记取消注释。您可以使用以

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

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

所以我的问题是:

有没有办法禁用Matlab中的所有绘图/图形/图形?在选项中,或者通过执行某种代码,如
禁用绘图
启用绘图
,以确保没有显示任何图形


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

您可以使用以下命令行运行matlab:

matlab -nojvm
但是你根本就没有GUI。或者,您可以编写一个文件“plot.m”:

function h = plot(varargin)
  h = [];
end
这没什么用。如果这是在工作目录中(或路径顶部附近的其他地方),则plot将调用您的函数,而不是“real”plot。您需要对调用的任何其他绘图函数执行相同的操作


我所知道的“关闭打印”的最接近的方法是一个文件夹,其中包含这样的函数,您可以将其添加到路径中以禁用打印,并将其删除以启用。

尝试两个命令的组合:

set(gcf,'Visible','off')              % turns current figure "off"
set(0,'DefaultFigureVisible','off');  % all subsequent figures "off"
第二个,如果你把它放在程序的开头,可能会对你有帮助。当然,它仍在创建绘图,这对于计算时间和/或RAM问题可能是不可取的

这是一个经典的理由,可以避免使用Matlab。它助长了糟糕的编程设计。为了正确解决这个问题,您应该创建一些东西,让您在程序的最高级别“翻转开关”,并控制绘图是否显示。也许它甚至有显示/不显示选项的分级,因此您可以根据正在运行的诊断选择显示/不显示的不同类型的绘图

理想情况下,您希望这个“翻转开关”创建是一个类,可以访问其他对象的可见性和打印功能。但是,由于交互式面向对象在Matlab中非常麻烦,因此通常不值得开发这样的解决方案,而且大多数人从项目一开始就不考虑这个设计方面


Matlab会鼓励人们通过设置“isPlotVisible”之类的标志变量,并创建始终接受此类标志的函数来解决这个问题。我同意这是一个糟糕的设计。

前面的方法很好,但是一个简单而好的习惯是使用
“开/关参数”
。因此,基本上,在代码的开头,您可以添加如下内容:

DisplayFigure = 1; %1 = display, 0 = no display

之后,为所有与打印相关的命令添加
“if DisplayFigure==1…end”
,其中命令应位于if语句(上面的…中)。因此,您甚至不会计算绘图,这将节省大量时间和内存。您只需将变量“DisplayFigure”的值更改为绘图或不绘图

啊,很好。我不知道这些。同样的事情也适用于倍频程,这是值得注意的,因为绘图是倍频程通常不同于普通Matlab功能的方式之一非常完美!这大大提高了程序的性能。就好像它在为图形创建窗口上花费的时间比实际进行实际计算要多。@olchauvin:注意,EMS意味着绘图仍在创建(“它仍在创建绘图,这可能不需要计算时间和/或RAM问题。”)一个简单的
关闭所有
,定期运行,如果这些看不见的地块占用了大量资源,可能会有助于清理它们。@Li aung Yip:是的,谢谢。因为我在程序开始时有一个
关闭所有的
,这将是好的。+1创造性的解决方案,尽管它很可怕(故意隐藏MATLAB内置?),是的,更糟糕的是,因为我最近批评某人给出了一个可能