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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.