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)と、returnsa=[]と。を返します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 に答える