[SciPy-Dev] 1/f noise generation

Phillip Feldman phillip.m.feldman at gmail.com
Fri Aug 11 18:08:34 EDT 2017


Because the integral of 1/f from zero to infinity is infinite, the methods
that I described won't work if one really wants to reproduce the 1/f
characteristic over all frequency.  But, for things like communications
systems applications, where any receiving system has a finite bandwidth,
one doesn't care about the PSD outside the bandwidth of the system, and one
would consequently be simulating something that matches the 1/f
characteristic over a finite bandwidth, and does just about anything else
outside.  A PSD that matches the 1/f curve over an interval [f1, f2], where
f1>0, and is zero outside that interval, corresponds to a well-behaved
process, and no special methods are required.

Phillip

On Fri, Aug 11, 2017 at 2:41 PM, Neal Becker <ndbecker2 at gmail.com> wrote:

> good point!
>
> On Fri, Aug 11, 2017 at 4:55 PM Nathaniel Smith <njs at pobox.com> wrote:
>
>> On Wed, Aug 9, 2017 at 10:19 PM, Phillip Feldman
>> <phillip.m.feldman at gmail.com> wrote:
>> > Firstly, white noise means only that the power spectral density is
>> flat, or
>> > equivalently, that the autocorrelation function is zero everywhere
>> except at
>> > lag zero.
>> >
>> > One can generate Gaussian noise with an arbitrary power spectral
>> density by
>> > filtering white Gaussian noise with a suitable filter. The output of the
>> > filter is the convolution of the impulse response of the filter with the
>> > autocorrelation function of white noise, which gives us the impulse
>> response
>> > of the filter. So, from the convolution theorem and the definition of
>> the
>> > PSD, the PSD of the output is the squared magnitude of the frequency
>> > response of filter.
>>
>> It's not actually possible to generate true 1/f noise this way --
>> technically 1/f noise is non-stationary and doesn't have a PSD. (You
>> can run a PSD estimator on any finite sample of 1/f noise, and get
>> some answer, but as your samples get larger your estimate won't
>> converge, because you keep discovering more and more power at lower
>> and lower frequencies.) So there are specialized methods for
>> generating 1/f noise, involving things like fractional differencing or
>> wavelets.
>>
>> -n
>>
>> --
>> Nathaniel J. Smith -- https://vorpus.org
>> _______________________________________________
>> SciPy-Dev mailing list
>> SciPy-Dev at python.org
>> https://mail.python.org/mailman/listinfo/scipy-dev
>>
>
> _______________________________________________
> SciPy-Dev mailing list
> SciPy-Dev at python.org
> https://mail.python.org/mailman/listinfo/scipy-dev
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/scipy-dev/attachments/20170811/a75c8242/attachment.html>


More information about the SciPy-Dev mailing list