Kurven aus VNA in Gnuplot

Gast #3341669
Lesenswert?

Hallo,
ich weiß nicht sorecht in welchem Forum ich das Posten soll - aber ich 
denke dass Offtopic das beste hierfür ist.

Ich habe Messkurven aus einem VNA(R&S) als CSV-Datei gespeichert.
Die Daten Liegen nun in folgendem Format vor:

freq[Hz]  re:Trc1_Sdd11  im:Trc1_Sdd11
1,00E+05  2,19E-02  -2,43E-04
1,02E+05  2,19E-02  -1,97E-04
1,05E+05  2,19E-02  -2,02E-04
1,07E+05  2,19E-02  -1,84E-04
1,10E+05  2,19E-02  -1,79E-04
[...]

Ich möchte nun mit der Formel: 
20*LOG10(SQRT(re:Trc1_Sdd11^2+im:Trc1_Sdd11^2))
Die Beträge ausrechnen und mit GNUPlot über eine Logarithmischen 
Frequenzskala plotten.

freq[Hz]  re:Trc1_Sdd11
1,00E+05  2,19E-02
1,02E+05  2,19E-02
1,05E+05  2,19E-02
1,07E+05  2,19E-02
1,10E+05  2,19E-02
[...]

Kann mir bitte jemand dabei helfen?
Ich zweifle leider schon daran dass GNUPlot das berechenen kann...
Das würde heißen ich brauche noch ein zweites Tool für die umrechnungne 
und dann GNUPlot fürs Plotten.

//Ach ja: Bevor jemand so schlau ist und mit den Tipp gibt die 5 Werte 
von Hnad zu berechnen: Es geht um hunderte Frequenzpunkte. Das ist nur 
ein Ausschnitt zur Verdeutlichung :-)

Vielen Dank
Gast #3341694
Lesenswert?

Hier mal ein einfaches Beispiel, das alles wichtige enthalten sollte.
Gnuplot kann problemlos Werte berechnen, siehe auch die sehr gute 
gnuplot doku.
1
reset
2

3
set terminal postscript eps enhanced dashlength 5 "LMRoman10-Regular" 24 size 9cm,6cm
4
     
5
set output "jtran.eps"
6

7
set size 1,1
8

9
set rmargin 1
10
set lmargin 1
11
set bmargin 1
12
set tmargin 1
13

14
unset key
15
set xlabel 'f / Hz'
16
set xrange [1e3:1e9]
17
set xtics 10
18
set format x "10^{%L}"
19
set logscale x
20
set ylabel 'jitter transfer / dB' 1
21
set yrange [-80:5]
22
set ytics (-80,-60,-40,-20,0)
23
set grid xtics nomxtics ytics nomytics noy2tics nomy2tics lw 1 lt 4, lw 0.1
24
set pointsize 3
25
set samples 1000
26

27
db(mag) = 20*log10(mag)
28

29
set datafile separator ","
30

31
set style line 2 lw 4
32

33
plot "jtran_mask.csv" using ($1):($2) with lines ls 2 , \
34
     "jtran_data.csv" using ($1):(db($2)) with lines lt 1 lw 3
Moderator #3342169
Lesenswert?

Falls die Gnuplot-Lösung trotzdem noch von Interesse ist:
1
set decimalsign locale
2
set logscale x
3
plot "data" every ::1 using 1:(20*log10(sqrt($2**2+$3**2))) with lines

Damit die Kommata als Dezimaltrennzeichen interpretiert werden, muss die
Enviromnment-Variable LC_NUMERIC (oder LANG, wenn LC_NUMERIC nicht
existiert) auf eine deutsche Locale (bei mir bspw. de_DE.utf8) gesetzt
sein. Alternativ kann der gewünschte Locale-String in Gnuplot auch
explizit angegeben werden mit
1
set decimalsign locale "de_DE.utf8"

Mit "every ::1" wird die erste Datenzeile (mit den Spaltenüberschriften)
übersprungen. "using 1:(20*log10(sqrt($2**2+$3**2)))" gibt an, dass die
x-Werte aus Spalte 1 genommen und die y-Werte aus den Spalten 2 und 3
gemäß der angegebenen Formel berechnet werden.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren