开发者

Calculating covariance matrix in MATLAB with given probabilities

In my MATLAB program, I have the occurrences of the m-dimensional variable X given in a matrix as

X = [x_11 x_12 ... x_1m; 
     x_21 x_22 ... x_2m;
     .
     .
     .
     x_n1 x_开发者_JAVA百科n2 ... x_nm;]

where each is an case for X.

and the probability of each case is given by:

pX = [p_x1 p_x2 ... p_xn];

I am looking for a simple way to calculate covariance matrix of X (a matrix that shows how the dimensions of X is related to each other).

I hope there is a simple way to calculate it in MATLAB, just like Expected value of X which is calculated by:

EX = pX * X;

Edit:

X is a random variable with discrete occurrences specified by X matrix. pX shows probability of each occurrence.


EX = px*X;
nmeas = size(X,1);
XB = X - repmat(EX,nmeas,1);

PD = zeros(nmeas, nmeas);
PD(logical(eye(size(PD)))) = px; % thanks http://stackoverflow.com/questions/3963565/matlab-how-to-assign-values-on-the-diagonal

CX = XB'*PD*XB;

PDij is the joint probability of getting measurement xi and xj, which is pXj if j=i, and 0 otherwise.

So

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

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

which is the definition of covariance.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜