matlab cov 函数解析

               最近在用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

有大牛知道为什么不? 谢谢了。





你可能感兴趣的:(matlab)