There are many ways to simulate a multivariate gaussian distribution assuming that you can simulate from independent univariate normal distributions. One of the most popular method is based on the Cholesky decomposition. Let’s see how Rcpp and Armadillo perform on this task.
<span>#include <RcppArmadillo.h></span>
<span>// [[Rcpp::depends(RcppArmadillo)]]</span>
<span>using</span> <span>namespace</span> <span>Rcpp</span><span>;</span>
<span>// [[Rcpp::export]]</span>
<span>arma</span><span>::</span><span>mat</span> <span>mvrnormArma</span><span>(</span><span>int</span> <span>n</span><span>,</span> <span>arma</span><span>::</span><span>vec</span> <span>mu</span><span>,</span> <span>arma</span><span>::</span><span>mat</span> <span>sigma</span><span>)</span> <span>{</span>
<span>int</span> <span>ncols</span> <span>=</span> <span>sigma</span><span>.</span><span>n_cols</span><span>;</span>
<span>arma</span><span>::</span><span>mat</span> <span>Y</span> <span>=</span> <span>arma</span><span>::</span><span>randn</span><span>(</span><span>n</span><span>,</span> <span>ncols</span><span>);</span>
<span>return</span> <span>arma</span><span>::</span><span>repmat</span><span>(</span><span>mu</span><span>,</span> <span>1</span><span>,</span> <span>n</span><span>).</span><span>t</span><span>()</span> <span>+</span> <span>Y</span> <span>*</span> <span>arma</span><span>::</span><span>chol</span><span>(</span><span>sigma</span><span>);</span>
<span>}</span>
The easiest way to perform a ...