matlab中cov的处理方法

 前几日一MM问我matlab中的cov函数是如何实现的,笔算的结果和电脑算的结果怎么不一样……于是两个人一起算了下,确实结果不太一样(其实差好远)……于是决定花时间研究了一下……于是花了不少时间才研究出来。这里把这个问题总结一下,以给后人前车之鉴。

      算法实现

[javascript]  view plain copy
  1. clc;  
  2. clear all;  
  3.   
  4. M = 5  
  5. N = 3;  
  6.   
  7. % 生成一个M*N的随机原始矩阵  
  8. OriginMatrix = rand( M, N );  
  9.   
  10. % 使用自带的cov函数计算相关矩阵  
  11. CovMatrix = cov( OriginMatrix );  
  12.   
  13. MeanArray = mean( OriginMatrix );  
  14. MeanMatrix = ones( M, 1 ) * MeanArray;  
  15.   
  16. % 得到每列减去每列均值的的矩阵  
  17. OriginSubMean = OriginMatrix - MeanMatrix;  
  18.   
  19. % 计算出相关矩阵  
  20. if M == 1  
  21.     CovMatrixComputed = OriginSubMean' * OriginSubMean / M;  
  22. else  
  23.     CovMatrixComputed = OriginSubMean' * OriginSubMean / ( M-1 );  
  24. end  

      如何理解

      matlab在计算相关矩阵时,把每一列的数作为一个随机变量的样本,每一行作为一个这几个随机变量的联合样本,即第i个随机变量取第k行的样本值时,第j个随机变量也取第k行的样本值。利用这个性质,我们就可以用协方差的公式代入来计算协方差矩阵了。

      然而,由于矩阵中给出只是这些随机变量的样本,根据概率论的知识我们知道,由于我们不知道这些随机变量的概率分布(或联合概率分布),我们是不可能计算出这些随机变量的期望、方差或是协方差的,而只能计算出它们的一个无偏估计,即样本均值、样本方差与样本协方差。其计算公式如下所示:

      matlab中的解释

      cov(x), if X is a vector, returns the variance. For matrices, where each row is an observation, and each column is a variable, cov(X) is the covariance matrix. diag(cov(X)) is a vector of variances for each column, and sqrt(diag(cov(X))) is a vector of standard deviations. cov(X,Y), where X and Y are matrices with the same number of elements, is equivalent to cov([X(:) Y(:)]).

      cov(x) or cov(x,y) normalizes by N-1, if N>1, where N is the number of observations. This makes cov(X)the best unbiased estimate of the covariance matrix if the observations are from a normal distribution. ForN=1cov normalizes by N.


原文出处  http://blog.csdn.net/xiaojidan2011/article/details/8138775 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值