Blame demo/running_avg.dem
|
Packit |
0986c0 |
#
|
|
Packit |
0986c0 |
# This script demonstrates the use of assignment operators and
|
|
Packit |
0986c0 |
# sequential expression evaluation to track data points as they
|
|
Packit |
0986c0 |
# are read in.
|
|
Packit |
0986c0 |
#
|
|
Packit |
0986c0 |
# We use the '=' and ',' operators to track the running total
|
|
Packit |
0986c0 |
# and previous 5 values of a stream of input data points.
|
|
Packit |
0986c0 |
#
|
|
Packit |
0986c0 |
# Ethan A Merritt - August 2007
|
|
Packit |
0986c0 |
#
|
|
Packit |
0986c0 |
# Define a function to calculate average over previous 5 points
|
|
Packit |
0986c0 |
#
|
|
Packit |
0986c0 |
set title \
|
|
Packit |
0986c0 |
"Demonstrate use of assignment and serial evaluation operators\n" \
|
|
Packit |
0986c0 |
. "to accumulate statistics as successive data lines are read in\n"
|
|
Packit |
0986c0 |
set key invert box center right reverse Left
|
|
Packit |
0986c0 |
set xtics nomirror
|
|
Packit |
0986c0 |
set ytics nomirror
|
|
Packit |
0986c0 |
set border 3
|
|
Packit |
0986c0 |
|
|
Packit |
0986c0 |
samples(x) = $0 > 4 ? 5 : ($0+1)
|
|
Packit |
0986c0 |
avg5(x) = (shift5(x), (back1+back2+back3+back4+back5)/samples($0))
|
|
Packit |
0986c0 |
shift5(x) = (back5 = back4, back4 = back3, back3 = back2, back2 = back1, back1 = x)
|
|
Packit |
0986c0 |
|
|
Packit |
0986c0 |
#
|
|
Packit |
0986c0 |
# Initialize a running sum
|
|
Packit |
0986c0 |
#
|
|
Packit |
0986c0 |
init(x) = (back1 = back2 = back3 = back4 = back5 = sum = 0)
|
|
Packit |
0986c0 |
|
|
Packit |
0986c0 |
#
|
|
Packit |
0986c0 |
# Plot data, running average and cumulative average
|
|
Packit |
0986c0 |
#
|
|
Packit |
0986c0 |
|
|
Packit |
0986c0 |
datafile = 'silver.dat'
|
|
Packit |
0986c0 |
set xrange [0:57]
|
|
Packit |
0986c0 |
|
|
Packit |
0986c0 |
set style data linespoints
|
|
Packit |
0986c0 |
|
|
Packit |
0986c0 |
plot sum = init(0), \
|
|
Packit |
0986c0 |
datafile using 0:2 title 'data' lw 2 lc rgb 'forest-green', \
|
|
Packit |
0986c0 |
'' using 0:(avg5($2)) title "running mean over previous 5 points" pt 7 ps 0.5 lw 1 lc rgb "blue", \
|
|
Packit |
0986c0 |
'' using 0:(sum = sum + $2, sum/($0+1)) title "cumulative mean" pt 1 lw 1 lc rgb "dark-red"
|
|
Packit |
0986c0 |
|
|
Packit |
0986c0 |
pause -1 "Hit return to continue"
|
|
Packit |
0986c0 |
|
|
Packit |
0986c0 |
reset
|