2
$\begingroup$

I want to generate random numbers from a multivariate normal distribution in Matlab. Normally, this is done like:

$w = \overline{w} + \text{chol}(\Sigma) \cdot \vec{l}$

But in my case I don't know $\Sigma$ itself, but only its inverse $B=\Sigma^{-1}$

Is there a way to calculate $chol(B^{-1})$, without calculating $B^{-1}$? If I can get an expression like

$w = \overline{w} + F(B)~\backslash~ \vec{l}$, where \ is a more optimal way to calculate an inverse in Matlab, that would be great.

  • 0
    I'm doing the same thing, but I have been getting funky results. You can take the cholesky decomposition of $\Sigma^{-1}$ and find the upper cholesky decomposition of that and then take the inverse. However, what I am left with is a triangular matrix that can reproduce $\Sigma$, but it isn't the same as $chol(\Sigma)$2013-01-30

1 Answers 1

1

If you want to generate multi-variante normal distributed vectors with covariance matrix $\Sigma^{-1}$, you don't need the cholesky decomposition of $\Sigma^{-1}$. Any decomposition $AA^T = \Sigma^{-1}$ is okay. That includes $L^{-T} (L^{-T})^T = \Sigma^{-1}$ where $LL^T = \Sigma$ is the cholesky decomposition of $\Sigma$.