Пример #1
0
 private static void GetProductMoments(Matrix A, Vector BMean, PositiveDefiniteMatrix BVariance, Vector mean, PositiveDefiniteMatrix variance)
 {
     // P.mean = A*B.mean
     // P.var = A*B.var*A'
     mean.SetToProduct(A, BMean);
     if (UseAccurateMethod)
     {
         int dim = BVariance.Rows;
         LowerTriangularMatrix cholesky = new LowerTriangularMatrix(dim, dim);
         cholesky.SetToCholesky(BVariance);
         Matrix AL = A * cholesky;
         variance.SetToOuter(AL);
     }
     else
     {
         variance.SetToProduct(A, (A * BVariance).Transpose());
         variance.Symmetrize();
     }
 }