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

最佳答案

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+…
这就是协方差的定义。

09-30 14:08
查看更多