Plotten von Daten aus C: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
Osiris (Diskussion | Beiträge) |
Ahi (Diskussion | Beiträge) (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 |
+ | #* 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:
- 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)
- 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
- 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!
- Infos über Gnuplot unter Computer_Benutzung#Visualisierung
- 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)