MathGroup Archive 2004

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

Search the Archive

Re: Noisy data and ListConvolve

  • To: mathgroup at smc.vnet.net
  • Subject: [mg45867] Re: Noisy data and ListConvolve
  • From: Mariusz Jankowski<mjankowski at usm.maine.edu>
  • Date: Wed, 28 Jan 2004 05:19:04 -0500 (EST)
  • Organization: University of Southern Maine
  • References: <bv5e3f$t1k$1@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

Yasir, the answers could be the basis of a course on linear systems and
signal processing. But that is hard to do in an email reply so here are some
short tips:

1. For data smoothing, the most commonly used kernel or filter is the
so-called moving average filter:

fir1=Table[1., {n}]/n

Another common smoothing filter comes from sampling the Gaussian (normal)
function, for example,

fir2 = Table[N[Exp[- t ^ 2]], {t,-3,3,1}]/Sqrt[Pi]


2. Assuming Length[fir] = n and is odd 

ListConvolve[ fir, sig, (n+1)/2, 0]

will return a list of same length as sig with equal padding on both ends of
sig. The extent of the padding and its symmetry is determined from the third
argument of ListConvolve. The fourth argument (the "0" in the present case)
specifies the padding value. Many people use the following (which is called
periodic or circular padding):

ListConvolve[fir, sig, (n+1)/2, sig]


3. In order to maintain the dynamic range of your signal, your filter should
be scaled so that the sum of the values equals 1, as was done in (1) above.


See http://www.usm.maine.edu/~mjankowski/docs/ele314 for a list of
Mathematica notebooks on the topic of linear signal processing.




Good luck, Mariusz




>>> Yasvir Tesiram<tesiramy at omrf.ouhsc.edu> 1/27/2004 5:21:35 AM >>>
Hi all,
I recently wanted to smooth out some noisy data and compare it with a
fitting procedure. My enquires led me to ListConvolve. Going through the
examples provided in the help files, some questions arose which I hope
someone will be able to answer for me or point me to some book or
something that goes through this type of analysis.

1. How does one choose an appropriate kernel?
2. I want the same number of data points as my original set of points.
Yet, despite the documentation, even the example returns a list which is
shorter than the original data set. How do you control this?
3. The plot in the example looks great compared with the noisy generated
data, but the spread of y-values after ListConvolve is applied is
completely different.

Does anyone use ListConvolve regularly for smoothing data. If so, your
help would be greatly appreciated.

Thanks
Yas




  • Prev by Date: RE: Mathematica Code to Build and Access KD Trees
  • Next by Date: Re: Noisy data and ListConvolve
  • Previous by thread: Re: Noisy data and ListConvolve
  • Next by thread: Re: Noisy data and ListConvolve