0

我有这个矩阵:

S=   6.84370358358718e-006    -7.45833473076585e-007
    -7.45833473076565e-007     7.11723106043725e-006

它是对称的:

S-S'=                     0    -2.00111533788828e-020
      2.00111533788828e-020                         0 

并且是正定的:

eig(S)= 6.22219831321029e-006    and     7.73873633081414e-006

当我使用[a b]=cholcov(S)时,它返回返回a=[]b=NaN。它是用 MatLab 帮助编写的[T,num] = cholcov(SIGMA)...If SIGMA is not square and symmetric, num is NaN and T is empty.

当然,chol(S)函数分解这个函数没有任何错误。我不知道和之间的区别chol并不cholcov重要,因为我没有任何选择。mvnrnd(zeros(1,2),S)当我尝试生成一些随机数时,错误来自函数:

??? Error using ==> mvnrnd at 118
SIGMA must be a symmetric positive semi-definite matrix.

谁能告诉我这里有什么问题?谢谢。

4

2 回答 2

4

它几乎是对称的。你自己承认它不是对称的。几乎怀孕和怀孕一样吗?你证明了 S~=S'。修复很容易。

S = (S + S')/2;
于 2012-11-25T15:09:30.490 回答
3

你写了:

S-S'=                     0    -2.00111533788828e-020
      2.00111533788828e-020                         0 

这就是说 S不是对称的。它几乎是对称的。但是……不完全是。如果这是由于数字引起的,您可以通过以下方式解决此问题:

symmetricS = mean(cat(3,S,S'),3);
于 2012-11-25T15:09:15.117 回答