DSPRelated.com
Forums

convolution of random signals

Started by charanchar December 29, 2008
hi, all
try this in matlab. convolve any random signal with itself several
times (atleast 10 iterations). you will get output as gausssian.
sample code:
t=00:.01:.99;
b=square(2*pi*t); % input may be any shape
b=conv(b,b);
b=conv(b,b);
b=conv(b,b);
b=conv(b,b);
b=conv(b,b);
b=conv(b,b);
b=conv(b,b);
plot(b);


On Dec 29, 7:52&#4294967295;am, charanchar <charanc...@gmail.com> wrote:
> hi, all > try this in matlab. convolve any random signal with itself several > times (atleast 10 iterations). you will get output as gausssian. > sample code: > t=00:.01:.99; > b=square(2*pi*t); % input may be any shape > b=conv(b,b); > b=conv(b,b); > b=conv(b,b); > b=conv(b,b); > b=conv(b,b); > b=conv(b,b); > b=conv(b,b); > plot(b);
If I am not mistaken, if you convolve any function with itself (as long as it is bounded) you will get a gausian.
charanchar wrote:
> hi, all > try this in matlab. convolve any random signal with itself several > times (atleast 10 iterations). you will get output as gausssian.
http://en.wikipedia.org/wiki/Central_limit_theorem
On Dec 29, 8:09&#4294967295;am, buleg...@columbus.rr.com wrote:
> On Dec 29, 7:52&#4294967295;am, charanchar <charanc...@gmail.com> wrote: > > > hi, all > > try this in matlab. convolve any random signal with itself several > > times (atleast 10 iterations). you will get output as gausssian. > > sample code: > > t=00:.01:.99; > > b=square(2*pi*t); % input may be any shape > > b=conv(b,b); > > b=conv(b,b); > > b=conv(b,b); > > b=conv(b,b); > > b=conv(b,b); > > b=conv(b,b); > > b=conv(b,b); > > plot(b); > > If I am not mistaken, if you convolve any function with itself (as > long as it is bounded) you will get a gausian.
I screwed that one up. I meant to say that your observation above is independent of the probability distribution properties of the random event.
On Dec 29, 8:09&#4294967295;am, buleg...@columbus.rr.com wrote:
> On Dec 29, 7:52&#4294967295;am, charanchar <charanc...@gmail.com> wrote: > > > hi, all > > try this in matlab. convolve any random signal with itself several > > times (atleast 10 iterations). you will get output as gausssian. > > sample code: > > t=00:.01:.99; > > b=square(2*pi*t); % input may be any shape > > b=conv(b,b); > > b=conv(b,b); > > b=conv(b,b); > > b=conv(b,b); > > b=conv(b,b); > > b=conv(b,b); > > b=conv(b,b); > > plot(b); > > If I am not mistaken, if you convolve any function with itself (as > long as it is bounded) you will get a gausian.
It doesn't have to be bounded. It is a well known theorem of stats that the distribution of the sum of two random variables is given by the convolution of their individual distributions. Also knowing that convolution in one domain is multiplication in another domain and adding to that the fourier transform of a Gaussian is also a Gaussian, I think you can see how this works out. There is one important exception to summing together random variables to approximate a Gaussian one. The infamous Cauchy distribution. Add together as many Cauchy vars as you wish and the result stays Cauchy. Look up its Fourier transform to see why. It will make perfect sense. Clay
On Dec 29, 5:52&#4294967295;pm, charanchar <charanc...@gmail.com> wrote:


try this

b=rand(1,20)-0.5;
b=conv(b,b);
b=conv(b,b);
b=conv(b,b);
b=conv(b,b);
b=conv(b,b);
b=conv(b,b);
plot(b);

the result is not a gaussian but its envelope is a gaussian.
On Dec 29, 7:14&#4294967295;am, buleg...@columbus.rr.com wrote:


> > If I am not mistaken, if you convolve any function with itself (as > > long as it is bounded) you will get a gausian. > > I screwed that one up. &#4294967295;I meant to say that your observation above is > independent of the probability distribution properties of the random > event.
buleg...'s first statement is not correct. The convolution of a function with itself does *not* result in "a gausian" unless the function itself happens to be a gaussian function (that is, of the form A.exp(-Bt^2)) in which case the convolution gives a result of the form C.exp(-Dt^2), (See Clay's response to this point also) buleg... has provided a correction to the first assertion, but this correction does not fix the mistake about the result of a single convolution. Clay has already pointed out that the lack of dependence on the distribution that buleg... asserted is not true for the result of multiple convolutions either. The OP's statement is, as Clay has already pointed out, an illustration of a result in probability theory that is called the central limit theorem. In fact, a well-known "poor man's Gaussian random variable simulator" uses 12 calls to rand() which we assume returns numbers X1, X2, .... X12 that are uniformly distributed between 0 and 1. Then, X1 + X2 + ... + X12 - 6 takes on values between -6 and + 6 and is approximately distributed like a standard Gaussian random variable (mean 0, variance 1). Note that such a simulator does *not* test 6-sigma quality since all the values are always less than 6-sigma away from the mean! --Dilip Sarwate
clay@claysturner.com wrote:
> On Dec 29, 8:09 am, buleg...@columbus.rr.com wrote: >> On Dec 29, 7:52 am, charanchar <charanc...@gmail.com> wrote: >> >>> hi, all >>> try this in matlab. convolve any random signal with itself several >>> times (atleast 10 iterations). you will get output as gausssian. >>> sample code: >>> t=00:.01:.99; >>> b=square(2*pi*t); % input may be any shape >>> b=conv(b,b); >>> b=conv(b,b); >>> b=conv(b,b); >>> b=conv(b,b); >>> b=conv(b,b); >>> b=conv(b,b); >>> b=conv(b,b); >>> plot(b); >> If I am not mistaken, if you convolve any function with itself (as >> long as it is bounded) you will get a gausian. > > > It doesn't have to be bounded. It is a well known theorem of stats > that the distribution of the sum of two random variables is given by > the convolution of their individual distributions. Also knowing that > convolution in one domain is multiplication in another domain and > adding to that the fourier transform of a Gaussian is also a Gaussian, > I think you can see how this works out. There is one important > exception to summing together random variables to approximate a > Gaussian one. The infamous Cauchy distribution. Add together as many > Cauchy vars as you wish and the result stays Cauchy. Look up its > Fourier transform to see why. It will make perfect sense. > > Clay
_Any_ distribution with infinite variance, not just the Cauchy -- the Cauchy distribution is just the most famous. (Atmospheric noise at MF and below, by the way, comes from electrostatic discharge and is best modeled by a distribution with infinite variance, so it's even a topic that's germane to DSP). -- Tim Wescott Wescott Design Services http://www.wescottdesign.com Do you need to implement control loops in software? "Applied Control Theory for Embedded Systems" gives you just what it says. See details at http://www.wescottdesign.com/actfes/actfes.html
charanchar wrote:
> hi, all > try this in matlab. convolve any random signal with itself several > times (atleast 10 iterations). you will get output as gausssian. > sample code: > t=00:.01:.99; > b=square(2*pi*t); % input may be any shape > b=conv(b,b); > b=conv(b,b); > b=conv(b,b); > b=conv(b,b); > b=conv(b,b); > b=conv(b,b); > b=conv(b,b); > plot(b); > >
Try it in _real math_, and then you'll know for sure -- and you'll see that (a) it's approximate for all but Gaussian signals and (b) it doesn't hold for signals with infinite variance (and yes, there are real-world noise sources that are best modeled as infinite variance processes). -- Tim Wescott Wescott Design Services http://www.wescottdesign.com Do you need to implement control loops in software? "Applied Control Theory for Embedded Systems" gives you just what it says. See details at http://www.wescottdesign.com/actfes/actfes.html