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