help-octave
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: vectorized moving average?


From: Francesco Potortì
Subject: Re: vectorized moving average?
Date: Thu, 13 May 2010 08:21:46 +0200

>Your filter code below works just fine when compared to what I had been
>doing, except for a number of initial days, due to what values are assumed
>in negative time.  I had been using the following code:
> 
># "ndays" is the number of days to be used when computing the exponential
>moving average of "data" (data is a column vector)
> data = [repmat(data(1), ndays, 1); data];   # repeat data(1) ndays times at
>the beginning of data for negative time values
> alpha = 2/(ndays+1);
> n = length(data);
> avg = zeros(n,1);
> avg(1) = data(1);

The above instruction is all you need to "invent" past memory for
negative values.  You should do the same for the filter function, but I
could not say how to do it offhand.

> for i = 2 : n
>     ao = avg(i-1);
>     avg(i) = ao + alpha*(data(i) - ao);
> endfor
> 
># trim off run-in period for negative time values
>   long_ma = long_ma(lma_days+1 : end);

I don't understand the above instruction.  What is long_ma?

>For small values of ndays, the number of initial days where there's a
>discrepancy with your filter() implementation is minimal, but for larger
>values of ndays, the number of initial days of discrepancy grows (obviously,
>due to the nature of an exponential MA having a long-tail memory).  Note, I
>add similar negative time values to the front of the vector when using
>filter() as well.  I'm just not sure what is the convention when it comes to
>calculating exponential moving averages for points in "data" where "ndays"
>reaches back into negative time.  Thanks again.

-- 
Francesco Potortì (ricercatore)        Voice: +39 050 315 3058 (op.2111)
ISTI - Area della ricerca CNR          Fax:   +39 050 315 2040
via G. Moruzzi 1, I-56124 Pisa         Email: address@hidden
(entrance 20, 1st floor, room C71)     Web:   http://fly.isti.cnr.it/


reply via email to

[Prev in Thread] Current Thread [Next in Thread]