最近在用matlab ,一直搞不懂cov()函式怎麼算出來了。從網上查了一下,結合一些程式例子總結如下:
x =
6 9 3 4
5 4 2 1
6 7 7 8
7 8 9 10
>>cov(x)
ans =
0.6667 1.3333 2.3333 3.0000
1.3333 4.6667 3.0000 5.0000
2.3333 3.0000 10.9167 13.0833
3.0000 5.0000 13.0833 16.2500
歸納起來為:cov對角線是相應列的方差,非對角線列是相應列的協方差,你是4*4的原始方陣,所以就是4*4的矩陣。
1.先來驗證cov 對角線是相應列方差:
>>var(x(:,1))
ans =
0.6667
>>var(x(:,2))
ans =
4.6667
>>var(x(:,3))
ans =
10.9167
>>var(x(:,4))
ans =
16.2500
>> diag(cov(x))
ans =
0.6667
4.6667
10.9167
16.2500
>>
從上面結果可以看出cov對角線就是每一列方差。
2.下面來驗證非對角線列是相應列的協方差
d(x+y)=d(x)+d(y)+2cov(x,y)
因此 coc(x,y)=(d(x+y)-d(x)-d(y))/2 (a)
我們來驗證cov(x,y)(4,3)
據a式
>> (var(x(:,3)+x(:,4))-var(x(:,3))-var(x(:,4)))/2
ans =
13.0833
>>值正好等於cov(x,y)(4,3), cov(x,y)(3,4)。
3.疑問
cov(x,y)=exy - ex*ey
但是我按這種方法算,不對。如下:
>> mean(x(:,4).*x(:,3))-mean(x(:,4)).*mean(x(:,3))
ans =
9.8125
≠ 13.0833
有大牛知道為什麼不? 謝謝了。
linux wait函式解析
程序一旦呼叫了wait,就立即阻塞自己,由wait自動分析是否當前程序的某個子程序已經退出,如果讓它找到了這樣乙個已經變成殭屍的子程序,wait 就會收集這個子程序的資訊,並把它徹底銷毀後返回 如果沒有找到這樣乙個子程序,wait就會一直阻塞在這裡,直到有乙個出現為止。wait 等待子程序中斷或結束...
strcpy函式解析
題目 已知strcpy函式的原型是 char strcpy char strdest,const char strsrc 1.不呼叫庫函式,實現strcpy函式。2.解釋為什麼要返回char 解說 1.strcpy的實現 char strcpy char strdest,const char str...
WriteFile 函式解析
bool writefile handle hfile,檔案控制代碼 lpcvoid lpbuffer,資料快取區指標 dword nnumberofbytestowrite,你要寫的位元組數 lpdword lpnumberofbyteswritten,用於儲存實際寫入位元組數的儲存區域的指標 從...