Plotten von Daten aus C: Unterschied zwischen den Versionen

Aus Physik
Zur Navigation springen Zur Suche springen
 
(Matlab-Bashing und Typos)
 
(2 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 4: Zeile 4:
 
#* Vorteil: gute, alte Matlab-Plots, Plotbefehle sind (mehr oder weniger) bekannt
 
#* Vorteil: gute, alte Matlab-Plots, Plotbefehle sind (mehr oder weniger) bekannt
 
#* Nachteil: umständlich
 
#* Nachteil: umständlich
  +
#* Nachteil: PostScript von Matlab ist für dreidimensionale Grafiken meist riesig und manchmal nicht ganz korrekt - das kann beim Drucken seltsame Probleme verursachen (Druckjob bricht nach der letzten Seite vor der Grafik ab, obwohl man im GhostView alles sieht) --[[User:Ahi|Ahi]] 13:33, 11 November 2005 (CET)
 
# In C die Berechnungen und Funktionen, mit denen man die Daten erhält, schreiben. <br>Dann aus Matlab heraus die '''Funktionen aufrufen''' und die erhaltenen Daten plotten
 
# In C die Berechnungen und Funktionen, mit denen man die Daten erhält, schreiben. <br>Dann aus Matlab heraus die '''Funktionen aufrufen''' und die erhaltenen Daten plotten
 
#* Im Prinzip wie 1. Methode, man spart sich den Zwischenschritt über die Files
 
#* Im Prinzip wie 1. Methode, man spart sich den Zwischenschritt über die Files
Zeile 9: Zeile 10:
 
#* Vorteil: Ausgaben können in einem Schritt erstellt werden
 
#* Vorteil: Ausgaben können in einem Schritt erstellt werden
 
#* Nachteil: mann muss zusätzlich die Funktionalität bereit stellen, mit deren Hilfe die Daten ins Matlab kommen
 
#* Nachteil: mann muss zusätzlich die Funktionalität bereit stellen, mit deren Hilfe die Daten ins Matlab kommen
# Verwenden des C-Interfaces von '''Gnuplot'''
+
# Verwenden des C-Interfaces von '''Gnuplot''' ("gnuplot_i")
#* Infos dazu unter [[Computer_Benutzung#Visualisierung]]<BR>[http://ndevilla.free.fr/gnuplot/ Link zum Projekt] (alles Nötige steht dort zum Download)
+
#* Infos über Gnuplot unter [[Computer_Benutzung#Visualisierung]]<BR>[http://ndevilla.free.fr/gnuplot/ Link zum Projekt] (alles Nötige steht dort zum Download)<BR>[[Verwendung von gnuplot_i]]
 
#* Vorteil: '''einfach!'''
 
#* Vorteil: '''einfach!'''
 
#* Nachteil: man muss sich in die Plotfunktionen einlesen (geht aber unheimlich schnell, da es wie die Matlab-Plots funktioniert, außerdem ist gute Doku vorhanden)
 
#* Nachteil: man muss sich in die Plotfunktionen einlesen (geht aber unheimlich schnell, da es wie die Matlab-Plots funktioniert, außerdem ist gute Doku vorhanden)
 
#* Nachteil: es sind nicht alle Matlab-Plots verfügbar, aber für die meisten Anwendungen reicht es aus. Es sind auch 3D-Erweiterungen erhältlich!
 
#* Nachteil: es sind nicht alle Matlab-Plots verfügbar, aber für die meisten Anwendungen reicht es aus. Es sind auch 3D-Erweiterungen erhältlich!
  +
# Verwenden der '''GNU plotutils''' (http://www.gnu.org/software/plotutils/): das ist im wesentlich eine Library für C und Fortran, die Plots für X11, PostScript, SVG (Scalable Vector Graphics) und einige weitere Formate erzeugt. Zusätzlich gibt es die [[Shell]]-Commands "graph" und "spline", die aus vorhandenen Daten ohne besonderen Aufwand einfache Plots zeichnen können.
   
 
Die schnellste und einfachste Möglichkeit ist, sofern man nicht Matlab-Plots haben muss, sicherlich die 3. Variante.
 
Die schnellste und einfachste Möglichkeit ist, sofern man nicht Matlab-Plots haben muss, sicherlich die 3. Variante.
   
 
Wünscht man ein komplett objektorientiertes Design, so gibt es auch ein C++-Interface für Gnuplot.
 
Wünscht man ein komplett objektorientiertes Design, so gibt es auch ein C++-Interface für Gnuplot.
  +
  +
  +
----
  +
  +
Ich halte für längere Rechnungen immer noch eine Lösung ohne grafische Benutzeroberfläche für am besten geeignet; man läßt dann die Rechnung im Hintergrund oder im Batchsystem [[Condor]] laufen und schreibt die Daten in ein File, entweder in einem Text-Format oder mit [[netCDF]] bzw. [[HDF5]]. Ohne die laufende Simulation zu stören, kann man von anderen Maschinen aus bereits die Daten analysieren (und plotten). --[[User:Ahi|Ahi]] 13:25, 11 November 2005 (CET)

Aktuelle Version vom 11. November 2005, 13:33 Uhr

Es gibt mehrere Möglichkeiten Plots aus C-Programmen heraus zu erzeugen:

  1. Speichern der Daten in Files, laden in Matlab und Plots erzeugen
    • Vorteil: gute, alte Matlab-Plots, Plotbefehle sind (mehr oder weniger) bekannt
    • Nachteil: umständlich
    • Nachteil: PostScript von Matlab ist für dreidimensionale Grafiken meist riesig und manchmal nicht ganz korrekt - das kann beim Drucken seltsame Probleme verursachen (Druckjob bricht nach der letzten Seite vor der Grafik ab, obwohl man im GhostView alles sieht) --Ahi 13:33, 11 November 2005 (CET)
  2. In C die Berechnungen und Funktionen, mit denen man die Daten erhält, schreiben.
    Dann aus Matlab heraus die Funktionen aufrufen und die erhaltenen Daten plotten
    • Im Prinzip wie 1. Methode, man spart sich den Zwischenschritt über die Files
    • Wie man C-Funktionen aus Matlab startet, findet man hier
    • Vorteil: Ausgaben können in einem Schritt erstellt werden
    • Nachteil: mann muss zusätzlich die Funktionalität bereit stellen, mit deren Hilfe die Daten ins Matlab kommen
  3. Verwenden des C-Interfaces von Gnuplot ("gnuplot_i")
    • Infos über Gnuplot unter Computer_Benutzung#Visualisierung
      Link zum Projekt (alles Nötige steht dort zum Download)
      Verwendung von gnuplot_i
    • Vorteil: einfach!
    • Nachteil: man muss sich in die Plotfunktionen einlesen (geht aber unheimlich schnell, da es wie die Matlab-Plots funktioniert, außerdem ist gute Doku vorhanden)
    • Nachteil: es sind nicht alle Matlab-Plots verfügbar, aber für die meisten Anwendungen reicht es aus. Es sind auch 3D-Erweiterungen erhältlich!
  4. Verwenden der GNU plotutils (http://www.gnu.org/software/plotutils/): das ist im wesentlich eine Library für C und Fortran, die Plots für X11, PostScript, SVG (Scalable Vector Graphics) und einige weitere Formate erzeugt. Zusätzlich gibt es die Shell-Commands "graph" und "spline", die aus vorhandenen Daten ohne besonderen Aufwand einfache Plots zeichnen können.

Die schnellste und einfachste Möglichkeit ist, sofern man nicht Matlab-Plots haben muss, sicherlich die 3. Variante.

Wünscht man ein komplett objektorientiertes Design, so gibt es auch ein C++-Interface für Gnuplot.



Ich halte für längere Rechnungen immer noch eine Lösung ohne grafische Benutzeroberfläche für am besten geeignet; man läßt dann die Rechnung im Hintergrund oder im Batchsystem Condor laufen und schreibt die Daten in ein File, entweder in einem Text-Format oder mit netCDF bzw. HDF5. Ohne die laufende Simulation zu stören, kann man von anderen Maschinen aus bereits die Daten analysieren (und plotten). --Ahi 13:25, 11 November 2005 (CET)