I'm trying to find an algorithm to generate time correlated random noise $\eta(t)$ (where $t$ is time, which I discretize for practical purposes) such that

$$\eta(0) = 0$$ $$\langle \eta(t), \eta(t+\Delta t)\rangle = \exp\left(-\frac{\Delta t}{\tau}\right)$$

for some correlation time $\tau$.

Attempt: I've had success generating the correlated random noise without the condition $\eta_i(0) = 0$ (i.e. starting at the same intensity) using Cholesky decomposition (i.e. cholcov in Matlab). I naïvely tried to set the (1,1) entry of the covariance matrix to zero to impose the condition, but that resulted in a not-positive-semi-definite matrix.


Take the autoregressive process $X_t = \rho X_{t-1} + \epsilon_t$ where $\epsilon_t$ is white noise with mean zero and variance $\sigma^2$. We will also assume $\rho < 1$. This process will be wide sense stationary (i.e. constant mean, covariance only depends on time differences).

Assuming $X_0 = 0$, then the process has mean zero for all time. The covariance $E[X_t X_{t+n}] = \frac{\sigma^2}{1-\rho^2} \rho^{|n|}$. You can set $\sigma^2, \rho$ to match the required covariance function as you need above.

You can easily implement the recursion for the autoregressive process using filter in Matlab or similar (its an all pole filter), or just directly coding the recursion.

  • $\begingroup$ Thanks. To make the $\eta(t)$ normally distributed, would it suffice to make the $\epsilon_t$ normally distributed? $\endgroup$ – Dwagg Jul 3 '17 at 21:14
  • $\begingroup$ If $\epsilon_t$ is i.i.d. Gaussian, then $X_t$ will also be a Gaussian process. $\endgroup$ – Batman Jul 3 '17 at 22:19

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.