首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

用matlab怎么计算协方差矩阵?求

2012-04-08 
用matlab如何计算协方差矩阵?求高手指点书上说协方差的公式是c(i,j)E{[X(i,:)-E(X(i,:))]*[X(j,:)-E(X(j,

用matlab如何计算协方差矩阵?求高手指点
书上说协方差的公式是c(i,j)=E{[X(i,:)-E(X(i,:))]*[X(j,:)-E(X(j,:))]};  
E是求期望值。

已知   X   =   [-1   1   2   ;   -2   3   1   ;   4   0   3];  
用matlab函数计算:  
c=cov(X)得:  
c=   10.3333       -4.1667         3.0000  
      -4.1667         2.3333       -1.5000  
        3.0000       -1.5000         1.0000  
而我自己按公式编程:  
a   =   [-1   1   2   ;   -2   3   1   ;   4   0   3]  
cov(a);  
for   i=1:size(a,2)  
    for   j=1:size(a,2)  
        c(i,j)=mean((a(i,:)-mean(a(i,:))).*(a(j,:)-mean(a(j,:))));  
    end  
end  
c  
得到的答案确是:  
c=   1.5556           1.8889       -0.8889  
      1.8889           4.2222       -3.2222  
    -0.8889         -3.2222         2.8889    

谁能告诉我为什么2次算得的答案不同??错在哪里?

[解决办法]
[n,p] = size(X);
X = X - ones(n,1) * mean(X);
Y = X '*X/(n-1);
参考一下这个算法
Y为X的协方差

热点排行
Bad Request.