Подобное Холесскому разложение ковариации
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