最近在用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
>>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对角线就是每一列方差。
D(X+Y)=D(X)+D(Y)+2COV(X,Y)
因此 COC(X,Y)=(D(X+Y)-D(X)-D(Y))/2 (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)。
>> mean(x(:,4).*x(:,3))-mean(x(:,4)).*mean(x(:,3)) ans = 9.8125≠ 13.0833