Холески-подобное ковариационное разложение
T = cholcov(SIGMA)
[T,num] = cholcov(SIGMA)
[T,num] = cholcov(SIGMA,0)
T = cholcov(SIGMA) вычисляет T такой, что SIGMA = T'*T. SIGMA должны быть квадратными, симметричными и положительными полуопределенными. Если SIGMA является положительным определенным, то T - квадратный, верхний треугольный фактор Холеского. Если SIGMA не является положительным определенным, T вычисляется из разложения собственного значения SIGMA. T не обязательно является треугольным или квадратным в данном случае. Любые собственные векторы, соответствующее собственное значение которых близко к нулю (в пределах небольшого допуска), опущены. Если остальные собственные значения являются отрицательными, T пуст.
[T,num] = cholcov(SIGMA) возвращает число num отрицательных собственных значений SIGMA, и T пуст, если num является положительным. Если num равно нулю, SIGMA является положительным полуопределенным. Если SIGMA не является квадратным и симметричным, num является NaN и T пуст.
[T,num] = cholcov(SIGMA,0) прибыль num равно нулю, если SIGMA является положительным определенным, и T является фактором Холеского. Если 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Использовать cholcov к фактору C1:
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