2010-11-28 124 views
1

以我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

回答

2
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 + ...

這是協方差的定義。