Module: MoreMath::Sequence::MovingAverage

Included in:
MoreMath::Sequence
Defined in:
lib/more_math/sequence/moving_average.rb

Instance Method Summary collapse

Instance Method Details

#simple_moving_average(n) ⇒ Object Also known as: moving_average



4
5
6
7
8
9
10
11
12
13
14
15
16
17
# File 'lib/more_math/sequence/moving_average.rb', line 4

def simple_moving_average(n)
  n < 1 and raise ArgumentError, 'n < 1, has to be >= 1'
  n <= @elements.size or raise ArgumentError,
    'n > #elements, has to be <= #elements'
  avg = []
  0.upto(@elements.size - n) do |i|
    sum = 0.0
    i.upto(i + n - 1) do |j|
      sum += @elements[j].to_f
    end
    avg << sum / n
  end
  avg
end