Re: moving average function
- To: mathgroup at smc.vnet.net
- Subject: [mg126353] Re: moving average function
- From: Ray Koopman <koopman at sfu.ca>
- Date: Thu, 3 May 2012 04:38:03 -0400 (EDT)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- References: <jnlj94$n3k$1@smc.vnet.net> <jnoa47$547$1@smc.vnet.net> <jnqvr0$j73$1@smc.vnet.net>
On May 2, 2:47 am, rtmphone09 at gmail.com wrote:
> This is intriguing, but the length of the returned list doesn't match the length of the original list.
>
> Length /@ {testList, bma[testList, 5]}
>
> {11, 15}
I think this gives the output you want, but
it's just a cleaned-up version of your code.
mab[data_List, n_Integer?OddQ] := Join[
Mean@Take[data, #]& /@ Range[1,n-2, 2],
MovingAverage[data, n],
Mean@Take[data,-#]& /@ Range[n-2,1,-2]]
mab[testList, 5]
a
(a + b + c)/3
(a + b + c + d + e)/5
(b + c + d + e + f)/5
(c + d + e + f + g)/5
(d + e + f + g + h)/5
(e + f + g + h + i)/5
(f + g + h + i + j)/5
(g + h + i + j + k)/5
(i + j + k)/3
k
An interesting error occurred in an earlier version.
I ran into this once before. See "Insulating data from code"
http://forums.wolfram.com/mathgroup/archive/2006/May/msg00368.html
bad[data_List, n_Integer?OddQ] := Join[
Table[Mean@Take[data, k], {k,1,n-2, 2}],
MovingAverage[data, n],
Table[Mean@Take[data,-k], {k,n-2,1,-2}]]
bad[testList, 5]
a
(a + b + c)/3
(a + b + c + d + e)/5
(b + c + d + e + f)/5
(c + d + e + f + g)/5
(d + e + f + g + h)/5
(e + f + g + h + i)/5
(f + g + h + i + j)/5
(g + h + i + j + k)/5
(3 + i + j)/3
1