このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
cholcov
コレスキーのような共分散分解
構文
T = cholcov(SIGMA)
[T,num] = cholcov(SIGMA)
[T,num] = cholcov(SIGMA,0)
説明
T = cholcov(SIGMA)
は、SIGMA = T'*T
となる T
を計算します。SIGMA
は正方で対称な半正定値行列でなければなりません。SIGMA
が正定値の場合、T
は正方で、上三角コレスキー因子になります。SIGMA
が正定値でない場合、T
は SIGMA
の固有値分解によって計算されます。この場合、T
は三角または正方である必要はありません。対応する固有値が (小さな許容誤差内で) ゼロに近い固有ベクトルは、省略されます。負の固有値が残っている場合、T
は空になります。
[T,num] = cholcov(SIGMA)
は、SIGMA
の負の固有値の数 num
を返します。num
が正の場合、T
は空になります。num
がゼロの場合、SIGMA
は半正定値です。SIGMA
が正方で対称でない場合、num
は NaN
になり、T
は空です。
[T,num] = cholcov(SIGMA,0)
は、SIGMA
が正定値で T
がコレスキー因子の場合、ゼロに等しい num
を返します。SIGMA
が正定値ではない場合、num
は正の整数になり、T
は空になります。[...] = cholcov(SIGMA,1)
は [...] = cholcov(SIGMA)
と等価です。
例
次の 4 行 4 列の共分散行列はランク落ちしています。
C1 = [2 1 1 2;1 2 1 2;1 1 2 2;2 2 2 3] C1 = 2 1 1 2 1 2 1 2 1 1 2 2 2 2 2 3 rank(C1) ans = 3
因子 C1
に cholcov
を使用します。
T = cholcov(C1) T = -0.2113 0.7887 -0.5774 0 0.7887 -0.2113 -0.5774 0 1.1547 1.1547 1.1547 1.7321 C2 = T'*T C2 = 2.0000 1.0000 1.0000 2.0000 1.0000 2.0000 1.0000 2.0000 1.0000 1.0000 2.0000 2.0000 2.0000 2.0000 2.0000 3.0000
T
を使用して、指定した共分散の乱数データを生成します。
C3 = cov(randn(1e6,3)*T) C3 = 1.9973 0.9982 0.9995 1.9975 0.9982 1.9962 0.9969 1.9956 0.9995 0.9969 1.9980 1.9972 1.9975 1.9956 1.9972 2.9951
拡張機能
バージョン履歴
R2007a で導入