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