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.
Antworten
Zu viele Anzeigen?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.
Wie in dieser Frage beantwortet, würde ich folgendes tun:
f = figure('visible','off')
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:
- 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.
- Verwenden von gnuplot:
graphics_toolkit gnuplot
wie bereits erwähnt
0 Stimmen
Möglicher duplikat von In MATLAB, wie plotte ich auf ein Bild und speichere das Ergebnis, ohne es anzuzeigen?
4 Stimmen
Das ist eigentlich kein Duplikat, da es hier um OCTAVE und nicht um MATLAB geht.