计算协方差矩阵在MATLAB与给定的概率

问题描述:

以我MATLAB程序,我有以矩阵给出的m维变量X的发生作为计算协方差矩阵在MATLAB与给定的概率

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矩阵指定的事件。 pX显示每次发生的概率。

+1

你的问题不是很清楚:什么是“发生概率”?基于什么?为什么pX和pY具有列的维数,而你称之为“发生概率”,这是沿着行的?如果你谈论概率(而不是密度),是否意味着x和y是离散的? – 2010-11-28 10:55:31

+0

我编辑问题来解决这个问题。但谈论概率时,X矩阵指定每个事件本身,而pX向量指定发生的概率。 – Isaac 2010-11-28 11:07:28

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是获得测量值xi和xj的联合概率,如果j = i,则为pXj,否则为0。

所以

CX1,1 = PX1 *^XB11 2 + PX2 * XB21^2 + ...

CX2,1 = CX1,2 = PX1 * XB11 * XB12 + PX2 * XB21 * XB22 + ...

这是协方差的定义。