[a b] = cholcov函数为对称正定矩阵返回a = []和b = NaN

时间:2012-11-25 14:54:00

标签: matlab matrix decomposition

我有这个矩阵:

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)函数会分解此函数而不会出现任何错误。我不知道cholcholcov之间的区别,这并不重要,因为我没有任何选择。当我尝试生成一些随机数时,错误来自mvnrnd(zeros(1,2),S)函数:

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

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

2 个答案:

答案 0 :(得分:4)

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

S = (S + S')/2;

答案 1 :(得分:3)

您写道:

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

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

symmetricS = mean(cat(3,S,S'),3);