9 Stimmen

`octave(matlab), wie erstelle ich Diagramme, ohne sie anzuzeigen?`

Das Problem mit Octave (Matlab). Im Programm habe ich eine Schleife, in der ich Daten plote. Am Ende jeder Schleife speichere ich die Plots auf die Festplatte. Während dieses Prozesses zeichnet Octave jeden Plot. Dies verlangsamt den Prozess. Ich brauche nur, dass die Plots auf die Festplatte gespeichert werden. Wenn ich sie nicht anzeigen, sondern nur speichern könnte, würde das den Prozess erheblich beschleunigen. Gibt es eine Möglichkeit, den Plot auf einen Handler zu zeichnen, ohne ihn anzuzeigen? Zum Zeichnen verwende ich die scatter-Funktion.

0 Stimmen

4 Stimmen

Das ist eigentlich kein Duplikat, da es hier um OCTAVE und nicht um MATLAB geht.

8voto

Anne van Rossum Punkte 2823

Dies ist nicht mit MATLAB getestet und möglicherweise nur auf Octave beschränkt.

Die Verwendung von f = figure('visible','off') funktioniert nicht out-of-the-box.

Sie müssen ein geeignetes Grafik-Toolkit auswählen:

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

Standardmäßig ist fltk, das jedoch ohne Anzeige des Plots nicht in eine Datei schreiben kann. Wenn Sie jedoch gnuplot auswählen, kann es ohne vorherige Anzeige in eine Datei geschrieben werden:

graphics_toolkit gnuplot

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

Es ist nicht besonders schnell, verwendet jedoch keine Bildschirmspeicher oder erfasst die Maus, was passiert, wenn der Plot sichtbar sein muss.

5voto

Oli Punkte 15585

Wie in dieser Frage beantwortet, würde ich folgendes tun:

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

2voto

Andy Punkte 7781

Offscreen-Rendering wird auf GNU/Linux seit GNU Octave 4.0 unter Verwendung von OSMesa unterstützt. Deshalb gibt es heute im Grunde zwei Möglichkeiten, figure ("visible", "off");... drucken (...) zu verwenden:

  1. Wenn Sie keinen proprietären OpenGL-Treiber haben, sondern einen auf Mesa basierenden Treiber wie radeon, nouveau usw. (im Grunde sind alle frei (im Sinne von Freiheit) Treiber auf Mesa basiert), können Sie OpenGL-basierte Toolkits (qt, fltk) verwenden und Octave wird OSMesa zum Drucken verwenden.
  2. Verwenden von gnuplot: graphics_toolkit gnuplot wie bereits erwähnt

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X