[latexpage]
Diese Anleitung richtet sich an blutige Anfänger. Es wird das Plotten und Fitten von Daten an einem Beispiel Schritt für Schritt erklärt. Einzige Voraussetzung: Gnuplot muss schon installiert sein. Wie das geht, könnt ihr hier nachlesen.
Bevor es Los geht:
Bevor Gnuplot gestartet wird, muss man sich überlegen in welchem Verzeichnis die Daten liegen, die geplottet werden sollen. Man wechselt im Terminal in dieses Verzeichnis und öffnet Gnuplot.
cd Desktop/Ordner-mit-den-Daten-drin gnuplot
Ich finde es nicht empfehlenswert direkt im Terminal zu arbeiten, da das schnell unübersichtlich wird. Es ist praktischer in einem Texteditor ein Skript zu schreiben, das anschließend von Gnuplot geladen wird. Das Skript muss in dem Ordner abgelegt werden, in dem die Messdaten liegen. Lässt man Gnuplot das Skript laden, verhält es sich so, als hätte man den ganzen Code direkt ins Terminal geschrieben.
load "skript.gp"
Die folgenden Code-Schnipsel werden alle in das Skript geschrieben.
Schritt 1: Laden der Daten
Bei diesem Beispiel handelt es sich um Messwerte der Kennlinie einer Siliziumdiode.
plot "silizium.txt"
Diese Zeile lädt die Werte aus der Datei und plottet sie. Man kann mit diesem Befehl natürlich auch direkt Funktionen plotten. Die Abbildung zeigt die Ausgabe. Anmerkung: Unter der Voraussetzung, dass die Standardeinstellung des Ausgabe-Terminals X11 ist.
Um die Kurve besser darzustellen bietet es sich zunächst an den Ausschnitt der X-Achse zu verändern. Um den veränderten Plot sichtbar zu machen, muss das geränderte Skript gespeichert und neu geladen werden. Arbeitet man nicht mit einem Skript, sonder direkt im Terminal, kann man den Befehl „replot“ verwenden.
plot "silizium.txt" set xrange[0:0.9] set yrange[0:100]
Gnuplot verwendet die englische Notation, daher werden Dezimalstellen mit einem Punkt abgetrennt. Die eckige Klammer mit den Doppelpunkten ist die Syntax für Intervalle. Sie taucht überall in Gnuplot auf.
Schritt 2: Fitten
Um in Gnuplot zu fitten, muss man eine Idee davon haben, welche Form der Fit haben soll. Da Diodenkennlinien immer Exponentialfunktionen enthalten, sieht die Fitfunktion wie folgt aus:
$f(x)=b e^{c x+d}$
Zusammen ergibt das dann:
set xrange[0:0.9] set yrange[0:100] f(x)=b*exp(c*x+d) b=0.001 c=0.001 d=0.001 fit [0.4:0.7] f(x) 'silizium.txt' via b,c,d plot "silizium.txt", f(x)
Zeile 3: Definiert die Funktion $f(x)$. Noch ein Wort zur Syntax: Gnuplot kennt grundlegende mathematische Funktionen. So ist bsp. die Exponentialfunktion schon definiert und man kann sie direkt benutzen.
Zeile 4-6: Teilt Gnuplot mit wo es anfangen soll Parameter zu suchen. Wären diese drei Zeilen nicht enthalten, würde Gnuplot „1“ als niedrigsten Wert annehmen. Da sich die Parameter der Kennlinie der Siliziumdiode in einer anderen Größenordnung befinden, würde Gnuplot „NaN“ („Not a Number“) als Werte ausgeben.
Zeile 7 Führt den eigentlichen Fit durch. Das Intervall, das vor $f(x)$ steht, gibt an welcher Datenbereich gefittet werden soll. In diesem Fall ist es eigentlich nicht notwendig, das Intervall anzugeben, da die gesamten Messdaten mit der Fitfunktion erfasst werden. Hat man aber Messwerte, die an unterschiedlichen Stellen unterschiedliche Plots erfordern, ist es nützlich zu wissen, dass das geht. „via“ legt fest, welche Parameter der Fitfunktion bestimmt werden sollen.
Zeile 8 plottet die Messwerte und den Fit.
Der fertige Plot:
Fragen und Anregungen sind herzlich Willkommen ^^