Did a small refinement of that code (in coordination with TD-er), making the number of elements configurable (but max. 200)
Code: Select all
on MyEvent do
// %v201% = max elements
// %v202% = last element
// %v203% = nr Elements
// %v204% = sum
// %v205% = average
if %v201%=0 // Not yet set?
let,201,200 // Set max number of elements, don't set > 200!!!
endif
if %v203% < %v201%
let,202,%v202%+1 // Update index of "last element"
let,203,%v203%+1 // Update nr Elements
else
let,204,%v204%-[var#%v202%] // Subtract oldest element from the sum
let,202,%v202%+1
if %v202% >= %v201%
let,202,0 // Index of "last element" should be modulo max elements
endif
endif
let,%v202%,%eventvalue1% // Store the new value in the array
let,204,%v204%+[var#%v202%] // Add new value to the sum
let,205,%v204%/%v203% // Average
endon
Major difference: Output average is available in %v205% (instead of 201)
Minor difference: No tabs used in the code (that somewhat confuses the code formatting)
Instead of the last 'let', you can also use:
Code: Select all
TaskValueSet,3,4,%v204%/%v203% // Average