8 Stimmen

Kann man Funktionen definieren, die auf Eingabedaten wirken

Ich frage mich, ob es einen Workaround in Gnuplot gibt, um etwas wie

plot  input.dat using ($1/2):($2*2) axis x1y1 w lp

con

plot  input.dat using func1($1,$2):func2($1,$2) axis x1y1 w lp

con

func1(x,y) = x/2; func2(x,y) = y*2;

?

Ich möchte meine Eingabedaten (Linie) vor dem Plotten nachbearbeiten.

10voto

Michael J. Barber Punkte 23764

Das können Sie, wenn Sie eine Syntax verwenden, die der von Ihnen vorgeschlagenen sehr nahe kommt. Definieren Sie die Funktionen wie folgt:

func1(x) = x / 2
func2(x) = x * 2

Und verwenden Sie sie so:

 plot "input.dat" using (func1($1)):(func2($2))

Der Klammerknoten in der Handlungsanweisung ist notwendig.

Sie können Funktionen mit mehr als einer Variablen definieren:

func3(x, y) = x * y

Diese werden in ähnlicher Weise verwendet:

plot "input.dat" using (func1($1)):(func3($1, $2))

3voto

Woltan Punkte 13209

Sie können Funktionen in Gnuplot verwenden. Es ist dokumentiert ici .

Ein Beispiel:
Mit der Datendatei Daten.csv :

0.65734 0.59331
0.60033 0.76434
0.66493 0.43881
0.42811 0.42567
0.01783 0.57760

können Sie die Daten mit Funktionen wie dieser darstellen:

func1(x) = x/2
func2(x,y) = y*2

plot "Data.csv" u (func1($1)):(func2($1, $2)) w l

Beachten Sie die "zusätzlichen" Klammern um func1($1) y func2($1, $2) . Diese weisen gnuplot an, den darin enthaltenen Ausdruck auszuwerten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X