Forum: PC Hard- und Software Gnuplot: Bode-Diagramm aus Messwerten


von Tobias P. (hubertus)


Lesenswert?

Hallo,
ich möchte den Amplituden- und Phasengang einer Schaltung ausmessen und 
mit Gnuplot darstellen. Die Messpunkte habe ich wie folgt in einer 
Textdatei gespeichert:

#frequenz [Hz]    amplitude [V]      phase [°]
1                 1.25               10
10                1                  20
100               0.9                30
1000              0.8                45
10000             0.7                50


Mein Referenzsignal hat eine Amplitude von konstanten 1.25 V, und da ich 
auf dem Oszi die Amplitude direkt messen kann, trage ich diese auch hier 
als Messwert ein. Ich stelle mir das so vor, dass Gnuplot dann mit der 
Spalte 2 folgendes rechnet:

using 1:(20*log($2 / 1.25))

dann bekomme ich ja dB, was ich gerne hätte für die Amplitude.

Mein Gnuplot Code sieht wie folgt aus:
1
set grid
2
set key inside right top samplen 1
3
set logscale xy
4
set log x2
5
unset log y2
6
set format x "$%g$\\,Hz"
7
set format y "$%g$\\,dB"
8
set format y2 "$%g$\\,Grad"
9
set xlabel "$I_L$"
10
set ylabel "Amplitude"
11
set y2label "Phase"
12
set ytics nomirror
13
set y2tics
14
set tics out
15
set autoscale  y
16
set autoscale y2
17
plot \
18
'messdaten/tiefpass.txt' \
19
using 1:(20*log($2/1.25)) title 'Amplitude' with linespoints lw 2, \
20
'messdaten/tiefpass.txt' \
21
using 1:3 title 'Phase' with linespoints lw 2 axes x2y2

Das funktioniert aber nicht: "All points y value undefined". Was mache 
ich falsch? Könnt ihr mir hier weiterhelfen?

Ach ja: ich möchte das Diagramm anschliessend in LaTeX nutzen, daher 
habe ich diese seltsamen Formate für die x und y Achsen :-)

von Uhu U. (uhu)


Lesenswert?

Ich würde als erstes mal die Spaltenüberschriften in der Datendatei in 
Anführungszeichen setzten. Whitespace ist sonst Trenner und er erwartet 
für jedes Wort eine Datenspalte.

von Yalu X. (yalu) (Moderator)


Lesenswert?

Wenn du die y-Werte per Formel in dB umrechnest, darfst du die y-Achse
nicht noch zusätzlich logarithmisch skalieren.

  set logscale x

in Zeile 3 ist ausreichend.

von Tobias P. (hubertus)


Lesenswert?

Hallo,
danke erstmal, so schaut das schon besser aus :-)
jetzt möchte ich noch das Raster so einstellen, dass es aussieht wie in 
LTSpice, also dass auch an den Zwischenwerten Rasterlinien sind, und 
nicht nur bei 1, 10, 100... Hz. Wie geht denn das? dazu habe ich auch 
nichts hilfreiches gefunden...

Gruss

von Yalu X. (yalu) (Moderator)


Lesenswert?

Mit
1
  set grid xtics mxtics ytics mytics

werden alle Linien (für Haupt und Zwischenwerte) gezeichnet. Mit den
Optionen linestyle, linetype und linewidth kannst du zusätzlich das
Aussehen der Linien festlegen, siehe
1
  help grid

Noch ein Tipp:
1
  set format x "$%.0s$\\,%cHz"

"optimiert" einige Nullen in der x-Achsen-Beschriftung weg :)

von Silvio K. (exh)


Lesenswert?

log10 ist der Logarithmus zur Basis 10. Log ohne 10 ist Basis e. Und 
dann ist mir "axis x2y2" aufgefallen. axis x1y2 müsste es heißen, wenn 
sich die Y2-Achse auf die X-achse beziehen soll.

von Tobias P. (hubertus)


Lesenswert?

Herzlichen Dank an alle,
so ist es beinahe Perfekt :D
Jetzt bleibt nur noch eine Frage.

In einem anderen Diagramm trage ich Messwerte ein und passe mittels 
linearem Fit eine Gerade da ein (lineare Regression). Gnuplot errechnet 
die Koeffizienten a znd b korrekt, allerdings wüsste ich den 
Korrelationskoeffizienten auch noch gerne. Zwar kann ich den auch mit 
Maple berechnen, das ist aber mühsam weil ich die Daten dann dort extra 
nochmal von Hand importieren muss... kann ich gnuplot irgendwie dazu 
bewegen, den Korrelationskoeffizienten auch noch auszugeben?

von Uhu U. (uhu)


Lesenswert?

Zeig mal dein Werk.

von Tobias P. (hubertus)


Angehängte Dateien:

Lesenswert?

Hallo Uhu,
sorry für die späte Antwort. Im Anhang mal ein Auszug.
Das Bodediagramm ist auf S. 4, den Rest des Dokuments habe ich nur 
stehen gelassen damit man noch ein paar andere Diagramme sieht.
Viel Spass
Gruss
Tobias

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.