我喜欢在测试时绘制图形,但是对于整个运行,我希望以一种简单有效的方式关闭图形绘制。目前,我在脚本顶部有一个变量,如下所示:
plotting = true;
然后,在所有带有绘图的部分中,我都有类似的东西
if plotting
figure;
plot(x,y)
...
end
因此,如果我不想绘图,我只需设置plotting = false;
在脚本的顶部。
是否有更好,更有效的方法?还是有人使用不同的方法?
答案 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.