在MATLAB中实现可选绘图的简便方法

时间:2018-07-17 12:32:06

标签: matlab debugging plot matlab-figure

我喜欢在测试时绘制图形,但是对于整个运行,我希望以一种简单有效的方式关闭图形绘制。目前,我在脚本顶部有一个变量,如下所示:

plotting = true;

然后,在所有带有绘图的部分中,我都有类似的东西

if plotting
    figure;
    plot(x,y)
    ...
end

因此,如果我不想绘图,我只需设置plotting = false; 在脚本的顶部。

是否有更好,更有效的方法?还是有人使用不同的方法?

2 个答案:

答案 0 :(得分:5)

正如评论中提到的那样,您当前的方法就差不多了。这里是关于该方法的注释,不过是替代方法。

保持编辑器警告整洁

如果您使用显示的语法,即在布尔值上没有比较运算符,则MATLAB编辑器将在if语句的第一行下划线:

plotting = false;
if plotting
    figure % <- this line will be underlined orange 
           %    as the editor "knows" it will never be reached!
    % ...
end

一种快速的解决方法是使用相等比较(==),编辑器不会以相同的方式进行检查。这也更加明确,也更加清晰,以备将来参考:

plotting = false;
if plotting == true
    figure % <- this line is now not highlighted
    % ...
end

使用图形编号数组

您在问题中使用“有效”一词。您不会找到比上面的两层线更有效的方法,但是您可能想要玩弄一系列数字。此方法使您可以指定某些图形进行绘图,这意味着您可以拥有一系列可选图形:

plotting = [1 3]; % We want to plot figures 1 and 3

if any(plotting == 1)
    figure(1); % do stuff with figure 1
end
if any(plotting == 2)
    figure(2); % won't enter this condition because plotting = [1 3]
end
if any(plotting == 3)
    figure(3); % do stuff with figure 3
end

如果您不想绘制任何内容,只需设置plotting = [];

请注意,如果您有许多相似的图形,则可以将上述3个条件放在一个简单的循环中,每个图都有较小的变化(由进一步的if语句指示)。

答案 1 :(得分:-1)

您可以添加以下行:

set(0,'DefaultFigureVisible','off')

在代码开始时,隐藏数字。

通过设置取消此操作:

set(0,'DefaultFigureVisible','on')

请注意,图形和曲线仍处于创建状态,只是被隐藏了。


示例:

set(0,'DefaultFigureVisible','off') % Visible off

figure(6); % This figure will be created but hidden

plot(6:8); % Plot is created but on the hidden figure

set(0,'DefaultFigureVisible','on') % Visible on

figure(6); % The figure will now be shown, with the previous plot.