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