octave(matlab),如何创建情节而不显示?

时间:2012-01-04 04:46:22

标签: matlab octave

八度音程(matlab)的问题。在程序中我有循环我绘制数据。在每个循环结束时,我将绘图保存到光盘。在此过程中,八度绘制每个绘图。它减缓了这个过程。我只需要将图保存在光盘上。如果我无法显示它们,只是保存,它将大大加快这一过程。有没有方法可以绘制绘图到处理程序而不显示它?绘制我使用scatter函数。

3 个答案:

答案 0 :(得分:6)

正如this question所述,我会这样做:

f = figure('visible','off')

答案 1 :(得分:5)

这不是用matlab测试的,可能只限于八度音阶。

使用f = figure('visible','off')无法开箱即用。

您需要选择合适的图形工具包:

available_graphics_toolkits 
ans = 
{
  [1,1] = fltk
  [1,2] = gnuplot
}

默认值为fltk,如果不显示绘图,则无法写入文件。但是,如果选择gnuplot,它将能够在不显示文件的情况下写入文件:

graphics_toolkit gnuplot

f = figure('visible','off')
plot(...)
axis(...)
filename=sprintf('output/%05d.png',t);                                                                          
print(filename); 

它不是特别快,但它不使用屏幕缓冲区或捕获鼠标,如果情节需要可见,就会发生这种情况。

答案 2 :(得分:2)

GNU / Linux支持屏幕外渲染,因为GNU Octave 4.0使用OSMesa。所以今天基本上有两种让figure ("visible", "off");... print (...)工作的方法:

  1. 如果您没有专有的OpenGL驱动程序,而是基于MESA的驱动程序,如radeon,nouveau等(基本上所有免费(如在自由中)驱动程序都基于Mesa)您可以使用基于OpenGL的工具包(qt,fltk)和Octave将使用OSMesa进行打印。
  2. 如前所述使用gnuplot:graphics_toolkit gnuplot