【问题标题】:[a b]=cholcov function returns a=[] and b=NaN for a symmetric positive definite matrix[a b]=cholcov 函数为对称正定矩阵返回 a=[] 和 b=NaN
【发布时间】:2012-11-25 14:53:59
【问题描述】:

我有这个矩阵:

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.

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

【问题讨论】:

    标签: matlab matrix decomposition


    【解决方案1】:

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

    S = (S + S')/2;
    

    【讨论】:

      【解决方案2】:

      你写道:

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

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

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

      【讨论】:

      • 非常感谢。我以为 Matlab 认为 e-20 为零!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-04-13
      • 2017-04-20
      • 1970-01-01
      • 2014-03-29
      • 2012-06-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多