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
    Not sure if this helps but have you referred [mvnrnd](http://www.mathworks.in/help/toolbox/stats/mvnrnd.html)?2012-03-01
  • 0
    mvnrnd takes sigma as second argument, so I'd have to run mvnrnd(mean,inv(B)) which is a pretty expensive calculation.2012-03-01
  • 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