设为首页收藏本站

EPS数据狗论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1393|回复: 0

Matlab协方差矩阵的计算原理

[复制链接]

30

主题

333

金钱

471

积分

入门用户

发表于 2019-7-12 16:42:12 | 显示全部楼层 |阅读模式

Matlab协方差矩阵的计算原理
代码如下:
  1. Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->a =
  2.     -1     1     2
  3.     -2     3     1
  4.     0     3

  5. for i=1:size(a,2)
  6.     for j=1:size(a,2)
  7.         c(i,j)=sum((a(:,i)-mean(a(:,i))).*(a(:,j)-mean(a(:,j))))/(size(a,1)-1);
  8.     end
  9. endc =   10.3333   -4.1667    3.0000   -4.1667    2.3333   -1.5000    3.0000   -1.5000    1.0000
复制代码


c为求得的协方差矩阵,在matlab以矩阵a的每一列为变量,对应的每一行为样本。这样在矩阵a中就有3个列变量分别为a(:,1), a(:,2), a(:,3)。

在协方差矩阵c中,每一个元素c(i,j)为对第i列与第j列的协方差,例如c(1,2) = -4.1667为第一列与第二列的协方差。



拿c(1,2)的求解过程来说

c(1,2)=sum((a(:,1)-mean(a(:,1))).*(a(:,2)-mean(a(:,2))))/(size(a,1)-1);

1. a(:,1)-mean(a(:,1)),第一列的元素减去该列的均值得到

   -1.3333

   -2.3333

    3.6667

2,  a(:,2)-mean(a(:,2)),第二列的元素减去该列的均值得到

   -0.3333

    1.6667

   -1.3333

3, 再将第一步与第二部的结果相乘

   -1.3333        -0.3333           0.4444

   -2.3333  .*     1.6667  =     -3.8889

    3.6667         -1.3333          -4.8889



4, 再将结果求和/size(a,1)-1 得 -4.1667,该值即为c(1,2)的值。



再细看一下是不是与协方差公式:Cov(X,Y) = E{ [ (X-E(X) ] [ (Y-E(Y) ] } 过程基本一致呢,只是在第4步的时候matlab做了稍微的调整,自由度为n-1,减少了一行的样本值个数。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

客服中心
关闭
在线时间:
周一~周五
8:30-17:30
QQ群:
653541906
联系电话:
010-85786021-8017
在线咨询
客服中心

意见反馈|网站地图|手机版|小黑屋|EPS数据狗论坛 ( 京ICP备09019565号-3 )   

Powered by BFIT! X3.4

© 2008-2028 BFIT Inc.

快速回复 返回顶部 返回列表