Расчет ковариационной матрицы в MATLAB с заданными вероятностями - PullRequest
1 голос
/ 28 ноября 2010

В моей программе MATLAB у меня есть вхождения m-мерной переменной X, заданной в матрице как

X = [x_11 x_12 ... x_1m; 
     x_21 x_22 ... x_2m;
     .
     .
     .
     x_n1 x_n2 ... x_nm;]

, где каждый - это случай для X.

и вероятностькаждого случая задается как:

pX = [p_x1 p_x2 ... p_xn];

Я ищу простой способ вычисления ковариационной матрицы X (матрицы, которая показывает, как размеры X связаны друг с другом).

Я надеюсь, что есть простой способ рассчитать его в MATLAB, точно так же, как ожидаемое значение X, которое вычисляется по формуле:

EX = pX * X;

Редактировать:

X - случайная величина с дискретными вхождениями, указанными в X-матрице.рХ показывает вероятность каждого вхождения.

1 Ответ

2 голосов
/ 29 ноября 2010
EX = px*X;
nmeas = size(X,1);
XB = X - repmat(EX,nmeas,1);

PD = zeros(nmeas, nmeas);
PD(logical(eye(size(PD)))) = px; % thanks /3441692/kak-naznachit-znacheniya-po-diagonali

CX = XB'*PD*XB;

PDij - совместная вероятность получения измерений xi и xj, которые равны pXj, если j = i, и 0 в противном случае.

Итак

CX1,1 =pX1 * xB11 ^ 2 + px2 * XB21 ^ 2 + ...

CX2,1 = CX1,2 = px1 * xB11 * xB12 + px2 * XB21 * XB22 + ...

что является определением ковариации.

...