Cholesky分解

时间:2016-01-31 12:32:36

标签: matlab

我正在尝试生成一些随机标准正常变量并将它们关联起来 特别是我想:

eq1

其中Y...是我想要模拟的向量,sigma是给定的协方差矩阵。

我在matlab中执行以下操作:

  1. 模拟不相关高斯随机变量的矢量Z
  2. 然后找到Sigma的平方根,即矩阵C,使eq6
  3. 然后目标矢量由

    给出

    eq7

    这是我的matlab代码:

    N = 500000
    u_1 = normrnd(zeros(N,1),1);
    u_2 = normrnd(zeros(N,1),1);
    u_3 = normrnd(zeros(N,1),1);
    u_4 = normrnd(zeros(N,1),1);
    
    rv = [u_1 '; u_2'; u_3'; u_4'];
    
    
    VarCov = [1 -0.87 0.0 -0.6;
              -0.87 1 0.0 0.0;
              0.0 0.0 1 0.0
              -0.6 0.0 0.0 1];
    
    ch = chol(VarCov);
    result = ch * rv;
    

    然而,chol(VarCov)给出的错误是矩阵不是半正定的。

0 个答案:

没有答案