октава (matlab), как создавать графики без отображения? - PullRequest
4 голосов
/ 04 января 2012

Проблема с октавой (матлаб). В программе у меня есть цикл, в котором я строю данные. В конце каждого цикла я сохраняю графики на диск. Во время этого процесса октаву рисуют каждый сюжет. Это замедляет процесс. Мне нужно только графики для сохранения на диске. Если бы я не мог отобразить их, а просто сохранить, это значительно ускорило бы процесс. Есть ли способ нарисовать график в обработчик, не отображая его? для рисования я использую функцию scatter.

Ответы [ 3 ]

6 голосов
/ 03 июня 2015

Это не тестируется с 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); 

Это не особенно быстро, но он не использует экранные буферы и не захватывает мышь, что происходит, если график должен быть видимым.

6 голосов
/ 04 января 2012

Как ответил на этот вопрос , я бы сделал:

f = figure('visible','off')
2 голосов
/ 28 августа 2016

Закадровый рендеринг поддерживается в 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, как было сказано ранее
...