11

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

但是,程序及其各种功能绘制了很多图形,因此每次运行程序时,我都必须等待显示所有图形,这非常烦人且耗时(尤其是当您正在使用小型笔记本电脑)。程序执行后,我用close all.

所以我的问题是:

有没有办法禁用 Matlab 中的所有绘图/图形/图形?无论是在选项中,还是通过执行某个代码,例如disable plotenable plot确保没有显示任何数字。

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

4

3 回答 3

14

尝试结合使用这两个命令:

set(gcf,'Visible','off')              % turns current figure "off"
set(0,'DefaultFigureVisible','off');  % all subsequent figures "off"

第二个,如果你把它放在程序的开头附近,可能会为你解决问题。当然,它仍在创建绘图,这对于计算时间和/或 RAM 问题可能是不可取的。

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

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

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

于 2012-04-12T18:43:18.977 回答
3

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

matlab -nojvm

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

function h = plot(varargin)
  h = [];
end

这没有任何作用。如果它在工作目录中(或路径顶部附近的其他地方),那么 plot 将调用您的函数而不是“真实”图。您需要从您调用的任何其他图形函数中执行相同的操作。

我所知道的“关闭绘图”最接近的方法是此类功能的文件夹,您可以将其添加到路径以禁用绘图,并删除以启用。

于 2012-04-12T18:43:16.400 回答
1

以前的方法都很好,但一个简单而好的习惯是使用"on/off parameter". 所以基本上,在代码的开头,您可以添加如下内容:

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

之后,添加"if DisplayFigure == 1 ... end"所有与绘图相关的命令,这些命令应该在 if 语句中(上面的 ...)。因此,您甚至不会计算绘图,这将为您节省大量时间和内存。您只需更改变量“DisplayFigure”的值即可绘制或不绘制图形。

于 2015-02-05T01:33:18.983 回答