Forum: PC-Programmierung gnuplot: Mittelwert über begrenzte Anzahl von Messpunkten


von Markus (Gast)


Lesenswert?

Hallo,

ich suche nach einer Möglichkeit, in Gnuplot aus einer Datenreihe den 
Mittelwert aus jeweils 10 aufeinanderfolgenden Messpunkten zu berechnen 
und diesen Mittelwert in einem Plot darzustellen. Also angenommen ich 
habe 100 Zeilen (Messwerte) dann sollen daraus 10 Punkte resultieren die 
jeweils den Mittelwert von 10 Messungen bilden.

Den Mittelwert über alle Messpunkte kann ich ja mit

f(x) = mittelwert
fit f(x) "datenfile" using 1:3 via mittelwert

bestimmen, und dann z.B. mit

plot "datenfile" using 1:mittelwert

ausgeben.

Ich denke, es könnte igrendwie mit "every" gehen, aber mit fehlt die 
passende Idee dazu.

Wer kann helfen ?

Markus

von Fabian O. (xfr)


Lesenswert?

Das habe ich vor einiger Zeit auch mal gesucht, bin aber leider nicht 
fündig geworden. Ich habe dann die csv-Dateien mit awk behandelt. Ist 
nicht schön, aber funktioniert:
1
awk 'BEGIN{FS=",";num=10}{sum+=$2;if(NR==1){print $1","$2}else if(NR%num==1){print $1","sum/num;sum=0}}' daten.csv

Der Aufruf funktioniert mit einer csv-Datei, die aus zwei Spalten 
besteht, von denen die Werte in der zweiten Spalte gemittelt werden 
sollen. Es wird jede zehnte Zeile ausgegeben. Die erste Spalte der 
Ausgabe ist unverändert, die zweite enhält den Mittelwert der letzten 10 
Messwerte.

von Markus (Gast)


Lesenswert?

ok, sowas wäre als Notlösung schon möglich (zumal ich gnuplot eh über 
perl ansteuere).
Danke für den Tipp.

falls jemand doch noch weiss, wie ich das direkt im Gnuplot lösen kann, 
wäre ich für weitere Vorschläge dankbar.

Markus

von Martin N. (mneumann3)


Lesenswert?

Der Link hilft, auch wenn es den Autor nicht mehr hilft.

http://gnuplot.sourceforge.net/demo_4.4/data_feedback.html

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.