代码之家  ›  专栏  ›  技术社区  ›  Isaac

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

  •  1
  • Isaac  · 技术社区  · 14 年前

    在我的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表示每次发生的概率。

    1 回复  |  直到 14 年前
        1
  •  2
  •   Marc    14 年前
    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;