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).

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 ornstein-uhlenbeck stochastic differential equation (sde) using the euler method and the euler-maruyama 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 runge-kutta scheme to a stochastic differential equation.

Author:

Miroslav Stoyanov,
Oak Ridge National Laboratory.

Reference:

1. Martin Gardner,
White and brown music, fractal curves and one-over-f fluctuations,
Scientific American,
Volume 238, Number 4, April 1978, pages 16-32.
2. 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 802-827.
3. Edoardo Milotti,
1/f noise: a pedagogical review,
arXiv:physics/0204033.
4. Sophocles Orfanidis,
Introduction to Signal Processing,
Prentice-Hall, 1995,
ISBN: 0-13-209172-0,
LC: TK5102.5.O246.
5. William Press,
Flicker Noises in Astronomy and Elsewhere,
Volume 7, Number 4, 1978, pages 103-119.
6. 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 257-278, 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 zero-mean, 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.