您的位置:首页 > 编程语言 > MATLAB

matlab cov 函数解析

2012-03-09 10:50 281 查看
最近在用matlab,一直搞不懂cov()函数怎么算出来了。从网上查了一下,结合一些程序例子总结如下:

x= 6934 5421 6778 78910 >>cov(x) ans= 0.66671.33332.33333.0000 1.33334.66673.00005.0000 2.33333.000010.916713.0833 3.00005.000013.083316.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

有大牛知道为什么不?谢谢了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: