Re: filtering data
- To: mathgroup at smc.vnet.net
- Subject: [mg25391] Re: filtering data
- From: Jens-Peer Kuska <kuska at informatik.uni-leipzig.de>
- Date: Fri, 29 Sep 2000 01:06:22 -0400 (EDT)
- Organization: Universitaet Leipzig
- References: <8qhmu2$j06@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Hi, try this, MyFilter[p_?NumericQ, y_, x_, xp1_] := (1 - p)*y + p*((1 - p)*x + xp1)/2 MyFilter[p_?NumericQ, y_List, x_List] := Drop[MyFilter[p, y, x, RotateLeft[x]], -1] I can't reproduce the crash because I have a Octane wit 768 MB RAM. You should not try to print out the result in the Frontend. The formating of a huge data set cost time and memory. Regards Jens steven.w.gaskey at exxon.com wrote: > > I am trying to apply a type of filter to a series of data. The filter is of the form > > y(i+1) = (1-p) y(i) + p/2 ( (1-p) x(i) + x(i+1)). > > where y is the filtered data series and x is the raw data series. > > First, I implemented this by defining the function for the single step then using FoldList to calculate the filtered series. > > BAStep[abai_, p_, {ai_, aip1_}] := (1 - p)abai + p/2((1 - p)ai + aip1) > > BA[a_, p_] := FoldList[BAStep[#1, p, #2] &, a[[1, 1]], a] > > Everything worked fine. However, this required me to partition the list first: > > ap = Partition[a,2,1]. > > When I moved the partition into the definition of the BA function: > > BA2[a_, p_] := FoldList[BAStep[#1, p, #2] &, First[a], Partition[a, 2, 1]] > > The application of the function got very slow and used a huge amount of memory. I applied this to two lists of 1500 points and it used all the system memory, crashed the front end and froze the kernel. > > My questions: > > 1. Is there a better way to implement a filter such as this. > > 2. What was the cause of the large use of memory and long time in applying the filter?