我有这个矩阵:
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.
谁能告诉我这里有什么问题? 感谢。
答案 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);