Mathematica 9 is now available
Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
1999
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*November
*December
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 1999

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Moving average type process

  • To: mathgroup at smc.vnet.net
  • Subject: [mg18277] Re: Moving average type process
  • From: Daniel Lichtblau <danl at wolfram.com>
  • Date: Fri, 25 Jun 1999 15:05:23 -0400
  • Organization: Wolfram Research, Inc.
  • References: <7kpbdq$4at@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

Virgil Stokes wrote:
> 
> I wish to perform the following "moving average" type process on
> a list to generate a new list:
> 
> Inputs:
>   wtlist = {w1,w2,w3}     -- weight list
>   inlist = {a,b,c,d,e,f}  -- any other list (>= 3 elements)
> 
> Output:
>   outlist = {w1*a+w2*b+w3*c, w1*b+w2*c+w3*d, w1*c+w2*d+w3*e, w1*d+w2*e+w3*f}
> 
> Note, outlist will always contain 2 less (Length[wtlist]/2) elements
> than in the input list (inlist).
> 
> If w1=w2=w3=x, then
> the following works fine:
> 
> outlist = x*Drop[Plus@@NestList[RotateRight,inlist,2],2]
> 
> This is a weighted (from wtlist) sum over another list of arbitrary
> length (inlist). I would like to get a "fast" function for doing this when
> the weights are not equal.
> 
> -- Virgil

In version 4 one can use ListCorrelate to do this directly.


In[4]:= ??ListCorrelate
ListCorrelate[ker, list] forms the correlation of the kernel ker with
list.
   ListCorrelate[ker, list, k] forms the cyclic correlation in which the
kth
   element of ker is aligned with each element in list.
ListCorrelate[ker,
   list, {kL, kR}] forms the cyclic correlation whose first element
contains
   list[[1]] ker[[kL]] and whose last element contains list[[-1]]
ker[[kR]].
   ListCorrelate[ker, list, klist, p] forms the correlation in which
list is
   padded at each end with repetitions of the element p.
ListCorrelate[ker,
   list, klist, {p1, p2, ... }] forms the correlation in which list is
padded
   at each end with cyclic repetitions of the pi. ListCorrelate[ker,
list,
   klist, padding, g, h] forms a generalized correlation in which g is
used in
   place of Times and h in place of Plus. ListCorrelate[ker, list,
klist,
   padding, g, h, lev] forms a correlation using elements at level lev
in ker
   and list.

Attributes[ListCorrelate] = {Protected}

In[5]:= wtlist = {w1,w2,w3};

In[6]:= inlist = {a,b,c,d,e,f};

In[7]:= outlist = ListCorrelate[wtlist, inlist]
Out[7]= {a w1 + b w2 + c w3, b w1 + c w2 + d w3, c w1 + d w2 + e w3, 
>    d w1 + e w2 + f w3}


Daniel Lichtblau
Wolfram Research


  • Prev by Date: Re: Moving average type process
  • Next by Date: Re: mathlink and absoft C compiler
  • Previous by thread: Re: Moving average type process
  • Next by thread: mathlink and absoft C compiler