Re: Multiple application of LinearFilter
- To: mathgroup at smc.vnet.net
- Subject: [mg64840] Re: [mg64823] Multiple application of LinearFilter
- From: Pratik Desai <pdesai1 at umbc.edu>
- Date: Sun, 5 Mar 2006 03:19:00 -0500 (EST)
- References: <200603040735.CAA15850@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Lea Rebanks wrote:
>
>Hi All,
>
>I have been using LinearFilter on my data with great success & achieve
>better results the more times I pass my data through the LinearFilter. (
>I have had to adjust data length to maintain correct indexing with
>PadLeft - but this is not my question here.)
>
>Below is how I am applying the multiple LinearFilter.
>
>EG
>
>originaldata
>
>Data1=LinearFilter[originaldata, {1/2,1/2}];
>Data2=LinearFilter[Data1, {1/2,1/2}];
>Data3=LinearFilter[Data2, {1/2,1/2}];
>
>
>My question is - Is there a shorter way of writing multiple passes of
>the above.
>
>If there is a way, please show the code.
>
>It would be great if I could simply adjust the number of passes from say
>three above to any number of passes to find optimum setting for data.
>
>Many thanks for your attention.
>
>Best Regards - Lea Rebanks...
>
>
>
>
>
Hi Lea,
Maybe something like this
In[1]:=
Clear[data1,data2,data3,reps]
<<Statistics`DataSmoothing`
data1 = {7.,4.,5.,3.,8.,5.,2.,3.,6.,8.};
reps=Nest[LinearFilter[#,{1/2,1/2}]&,data1,3]
data2=LinearFilter[data1,{1/2,1/2}]
data3=LinearFilter[data2,{1/2,1/2}]
data4=LinearFilter[data3,{1/2,1/2}]
reps===data4
Out[4]=
{4.625,4.5,5.375,5.5,4.,3.25,4.625}
Out[5]=
{5.5,4.5,4.,5.5,6.5,3.5,2.5,4.5,7.}
Out[6]=
{5.,4.25,4.75,6.,5.,3.,3.5,5.75}
Out[7]=
{4.625,4.5,5.375,5.5,4.,3.25,4.625}
Out[8]=
True
If you have somekind of termination criteria you may even try NestWhile
and NestWhileList
Hope this helps
Pratik
- References:
- Multiple application of LinearFilter
- From: "Lea Rebanks" <lrebanks@netvigator.com>
- Multiple application of LinearFilter