DSPRelated.com
Forums

How to generate a Gaussian time correlated process?

Started by msarovar March 9, 2010
Hi,

What is the most efficient way to generate a noise process that is Gaussian
correlated in time from a white noise process?

I'm having trouble coming up with a simple FIR filter that will do this.

Any suggestions?

Thanks,
~mohan



msarovar wrote:
> Hi, > > What is the most efficient way to generate a noise process that is Gaussian > correlated in time from a white noise process? > > I'm having trouble coming up with a simple FIR filter that will do this. > > Any suggestions?
You _do_ mean that you want to take white noise and color it in frequency, not that you want to take noise with a non-Gaussian distribution and make it Gaussian, right? Just run it through a FIR filter with a Gaussian shape. Bim-bam-boom, you'll have noise with a Gaussian PSD. Deciding where to truncate the Gaussian is up to you, of course. -- Tim Wescott Control system and signal processing consulting www.wescottdesign.com
On Mar 9, 6:22&#4294967295;am, "msarovar" <mo...@grommit.com> wrote:
> Hi, > > What is the most efficient way to generate a noise process that is Gaussian > correlated in time from a white noise process? > > I'm having trouble coming up with a simple FIR filter that will do this. > > Any suggestions? > > Thanks, > ~mohan
By "Gaussian correlated" do you mean anything other than correlated and Gaussian distributed? What have you tried and why do you think it hasn't worked? "most efficient" is a context dependent term. Are you concerned with implementing in a 8-bit micro-controller, a supercomputer, an FPGA or a PC? Do you mean efficient in your time or the processor's time or memory space? Dale B. Dalrymple
>On Mar 9, 6:22=A0am, "msarovar" <mo...@grommit.com> wrote: >> Hi, >> >> What is the most efficient way to generate a noise process that is
Gaussi=
>an >> correlated in time from a white noise process? >> >> I'm having trouble coming up with a simple FIR filter that will do
this.
>> >> Any suggestions? >> >> Thanks, >> ~mohan > >By "Gaussian correlated" do you mean anything other than correlated >and Gaussian distributed? > >What have you tried and why do you think it hasn't worked? > >"most efficient" is a context dependent term. Are you concerned with >implementing in a 8-bit micro-controller, a supercomputer, an FPGA or >a PC? Do you mean efficient in your time or the processor's time or >memory space? > >Dale B. Dalrymple > >
Hi, Thanks for the quick answers. And sorry for the lack of detail in my last message. First, by "Gaussian correlated" I mean colored noise for which the temporal correlations are Gaussian. What I have tried so far is to form a Gaussian FIR filter and convolve the white noise with it to get output that is Gaussian correlated in time. I am running this on a PC but need to do it many, many times and so efficiency (in time, not memory) is important. Currently, the convolution is the limiting step in my code and I was wondering if there was an easier way to do this. For example, is there a recursive (IIR) filter for generating Gaussian correlations that might decrease the number of convolution steps? Thanks again for the help, ~mohan
msarovar wrote:
>> On Mar 9, 6:22=A0am, "msarovar" <mo...@grommit.com> wrote: >>> Hi, >>> >>> What is the most efficient way to generate a noise process that is > Gaussi= >> an >>> correlated in time from a white noise process? >>> >>> I'm having trouble coming up with a simple FIR filter that will do > this. >>> Any suggestions? >>> >>> Thanks, >>> ~mohan >> By "Gaussian correlated" do you mean anything other than correlated >> and Gaussian distributed? >> >> What have you tried and why do you think it hasn't worked? >> >> "most efficient" is a context dependent term. Are you concerned with >> implementing in a 8-bit micro-controller, a supercomputer, an FPGA or >> a PC? Do you mean efficient in your time or the processor's time or >> memory space? >> >> Dale B. Dalrymple >> >> > > Hi, > Thanks for the quick answers. And sorry for the lack of detail in my last > message. > > First, by "Gaussian correlated" I mean colored noise for which the temporal > correlations are Gaussian. > > What I have tried so far is to form a Gaussian FIR filter and convolve the > white noise with it to get output that is Gaussian correlated in time. I am > running this on a PC but need to do it many, many times and so efficiency > (in time, not memory) is important. Currently, the convolution is the > limiting step in my code and I was wondering if there was an easier way to > do this. > > For example, is there a recursive (IIR) filter for generating Gaussian > correlations that might decrease the number of convolution steps? >
"I'm having trouble coming up with a simple FIR filter that will do this" Thus, no one suggests the obvious. Yes, there are IIR filters that will approximate a Gaussian filter. In continuous time these are referred to as "Bessel filters"; I don't know how they've acquired a different name in the sampled time domain. No matter what, you'll only get an approximation. The FFT of a white Gaussian noise process is itself white Gaussian noise with uniformly distributed phase. If you need finite-length vectors with your Gaussian autocorrelation, you can make sequences with white noise, shape them with the appropriate Gaussian envelope, then take the inverse FFT to get a sequence with your desired time-domain properties. -- Tim Wescott Control system and signal processing consulting www.wescottdesign.com
On 9 Mrz., 15:22, "msarovar" <mo...@grommit.com> wrote:
> Hi, > > What is the most efficient way to generate a noise process that is Gaussian > correlated in time from a white noise process? > > I'm having trouble coming up with a simple FIR filter that will do this. > > Any suggestions? > > Thanks, > ~mohan
This link is three years old but still works: http://math.mit.edu/~stevenj/preprints/iir-colored-noise-2007-03-13.pdf It describes the use of IIR filters to efficiently (wrt to computer time and memory) generate correlated sequences from white sequences. Regards, Andor
>On 9 Mrz., 15:22, "msarovar" <mo...@grommit.com> wrote: >> Hi, >> >> What is the most efficient way to generate a noise process that is
Gaussian
>> correlated in time from a white noise process? >> >> I'm having trouble coming up with a simple FIR filter that will do
this.
>> >> Any suggestions? >> >> Thanks, >> ~mohan > >This link is three years old but still works: > >http://math.mit.edu/~stevenj/preprints/iir-colored-noise-2007-03-13.pdf > >It describes the use of IIR filters to efficiently (wrt to computer >time and memory) generate correlated sequences from white sequences. > >Regards, >Andor >
Great, thanks guys. I will read more about Chebyshev filters. They sound like my solution. Cheers, ~mohan
Andor wrote:
> On 9 Mrz., 15:22, "msarovar" <mo...@grommit.com> wrote: >> Hi, >> >> What is the most efficient way to generate a noise process that is Gaussian >> correlated in time from a white noise process? >> >> I'm having trouble coming up with a simple FIR filter that will do this. >> >> Any suggestions? >> >> Thanks, >> ~mohan > > This link is three years old but still works: > > http://math.mit.edu/~stevenj/preprints/iir-colored-noise-2007-03-13.pdf > > It describes the use of IIR filters to efficiently (wrt to computer > time and memory) generate correlated sequences from white sequences.
Any low-pass filter's output is correlated at high-enough frequencies. Jerry -- Physics is like sex: sure, it may give some practical results, but that's not why we do it. -- Richard P. Feynman (Nobel Prize, Physics) &#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;
On 10 Mrz., 05:35, Jerry Avins <j...@ieee.org> wrote:
> Andor wrote: > > On 9 Mrz., 15:22, "msarovar" <mo...@grommit.com> wrote: > >> Hi, > > >> What is the most efficient way to generate a noise process that is Gaussian > >> correlated in time from a white noise process? > > >> I'm having trouble coming up with a simple FIR filter that will do this. > > >> Any suggestions? > > >> Thanks, > >> ~mohan > > > This link is three years old but still works: > > >http://math.mit.edu/~stevenj/preprints/iir-colored-noise-2007-03-13.pdf > > > It describes the use of IIR filters to efficiently (wrt to computer > > time and memory) generate correlated sequences from white sequences. > > Any low-pass filter's output is correlated at high-enough frequencies.
Of course. The trick is to get the correlation you want as cheap as possible.
On Mar 10, 3:22&#4294967295;am, "msarovar" <mo...@grommit.com> wrote:
> Hi, > > What is the most efficient way to generate a noise process that is Gaussian > correlated in time from a white noise process? > > I'm having trouble coming up with a simple FIR filter that will do this. > > Any suggestions? > > Thanks, > ~mohan
Bit confused here. If you pass Guassian white noise through a LTI filter the output is still Guassian but coloured. Hardy