cnoise
cnoise,
a MATLAB code which
generates sequences that simulate 1/f^alpha power law noise. This includes
white noise (alpha = 0), pink noise (alpha = 1) and red or Brownian noise (alpha = 2),
as well as noise for values of alpha between 0 and 2.
CNOISE is based in part on an algorithm by Kasdin,
as cited in the references.
Kasdin's implementation referenced a number of functions from the
Numerical Recipes library (FOUR1, FREE_VECTOR, GASDEV, RAN1,
REALFT, VECTOR). Numerical Recipes is a proprietary library
whose components cannot be freely distributed. Moreover,
the Fourier transform functions require the size of the data
to be a power of 2.
This version of the program is implemented as a MATLAB function.
The Fourier transform functions that are invoked can handle input
data of any size.
Versions of the algorithm are implemented which generate a vector x
of size N with a 1/f^alpha frequency distribution, with three choices
for the underlying distribution of the white noise vector:

f_alpha_uniform ( n, range, alpha ),
a uniform distribution on (range,+range);

f_alpha_gaussian ( n, q_d, alpha ),
a Gaussian distribution with mean 0, variance q_d;

f_alpha_tgaussian ( n, q_d, range, alpha ),
a Gaussian distribution with mean 0,
variance q_d, truncated to (range,range).
Licensing:
The computer code and data files described and made available on this web page
are distributed under
the GNU LGPL license.
Languages:
cnoise is available in
a C version and
a MATLAB version.
Related Data and Programs:
colored_noise,
a MATLAB code which
generates samples of noise obeying a 1/f^alpha power law.
ornstein_uhlenbeck,
a MATLAB code which
approximates solutions of the ornsteinuhlenbeck
stochastic differential equation (sde) using the euler method and
the eulermaruyama method.
pink_noise,
a MATLAB code which
computes a "pink noise" signal obeying a 1/f power law.
stochastic_rk,
a MATLAB code which
applies a rungekutta scheme to a stochastic differential equation.
Author:
Miroslav Stoyanov,
Oak Ridge National Laboratory.
Reference:

Martin Gardner,
White and brown music, fractal curves and oneoverf fluctuations,
Scientific American,
Volume 238, Number 4, April 1978, pages 1632.

Jeremy Kasdin,
Discrete Simulation of Colored Noise and Stochastic Processes
and 1/f^a Power Law Noise Generation,
Proceedings of the IEEE,
Volume 83, Number 5, 1995, pages 802827.

Edoardo Milotti,
1/f noise: a pedagogical review,
arXiv:physics/0204033.

Sophocles Orfanidis,
Introduction to Signal Processing,
PrenticeHall, 1995,
ISBN: 0132091720,
LC: TK5102.5.O246.

William Press,
Flicker Noises in Astronomy and Elsewhere,
Comments on Astrophysics,
Volume 7, Number 4, 1978, pages 103119.

Miroslav Stoyanov, Max Gunzburger, John Burkardt,
Pink Noise, 1/f^alpha Noise, and Their Effect on Solutions
of Differential Equations,
International Journal for Uncertainty Quantification,
Volume 1, Number 3, pages 257278, 2011.
Source Code:

f_alpha_gaussian.m,
generates a discrete colored noise vector of size N with power
spectrum distribution of ALPHA.
White noise is sampled from a Gaussian (0,q_d) distribution.

f_alpha_tgaussian.m,
generates a discrete colored noise vector of size N with power
spectrum distribution of ALPHA.
White noise is sampled from a truncated Gaussian distribution
with zeromean, variance Q_D, and range (R,+R).

f_alpha_uniform.m,
generates a discrete colored noise vector of size N with power
spectrum distribution of ALPHA.
White noise is sampled from a uniform distribution
with range (R,+R).

freq_plotter.m,
performs a numerical test on the frequency distribution of
discrete approximations to a continuous noise field.
Last revised on 22 December 2018.