首页 > 编程知识 正文

协方差矩阵matlab,协方差矩阵

时间:2023-05-05 10:18:15 阅读:225706 作者:2384

[今天看论文的时候又看到了协方差矩阵这个破东西,以前看模式分类的时候就特困扰,没想到现在还是搞不清楚,索性开始查协方差矩阵的资料,恶补之后决定马上记录下来,嘿嘿~

协方差矩阵

协方差也只能处理二维问题,那维数多了自然就需要计算多个协方差,比如n维的数据集就需要计算 n!(n−2)!∗2 个协方差,那自然而然我们会想到使用矩阵来组织这些数据。给出协方差矩阵的定义:

Cn∗n=(ci,j,ci,j=cov(Dimi,Dimj))

这个定义还是很容易理解的,我们可以举一个三维的例子,假设数据集有三个维度,则协方差矩阵为:

[协方差定义       在概率论和统计学中,协方差用于衡量两个变量的总体误差。而方差是协方差的一种特殊情况,即当两个变量是相同的情况。       期望值分别为E(X) = μ 与

必须要明确一点,协方差矩阵计算的是不同维度之间的协方差,而不是不同样本之间的。以下的演示将使用Matlab,为了说明计算原理,不直接调用Matlab的cov函数:

首先,随机生成一个10*3维的整数矩阵作为样本集,10为样本的个数,3为样本的维数。

>> mySample=fix(rand(10,3)*50)

mySample =

40 7 32

45 48 1

6 47 42

45 24 46

31 40 33

4 7 37

13 21 37

27 45 19

47 39 32

48 47 8

根据公式,计算协方差需要计算均值,前面特别强调了,协方差矩阵是计算不同维度之间的协方差,要时刻牢记这一点。样本矩阵的每行是一个样本,每列是一个维度,因此我们要按列计算均值。为了描述方便,我们先将三个维度的数据分别赋值:

>> dim1=mySample(:,1)

dim1 =

40

45

6

45

31

4

13

27

47

48

>> dim2=mySample(:,2)

dim2 =

7

48

47

24

40

7

21

45

39

47

>> dim3=mySample(:,3)

dim3 =

32

1

42

46

33

37

37

19

32

8

计算dim1与dim2,dim1与dim3,dim2与dim3的协方差:

>> cov12=sum((dim1-mean(dim1)).*(dim2-mean(dim2)))/(size(mySample,1)-1)

cov12 =

78

>> cov13=sum((dim1-mean(dim1)).*(dim3-mean(dim3)))/(size(mySample,1)-1)

cov13 =

-120.2444

>> cov13=sum((dim1-mean(dim1)).*(dim3-mean(dim3)))/(size(mySample,1)-1)

cov13 =

-120.2444

>> cov13=sum((dim1-mean(dim1)).*(dim3-mean(dim3)))/(size(mySample,1)-1)

cov13 =

-120.2444

>> cov23=sum((dim2-mean(dim2)).*(dim3-mean(dim3)))/(size(mySample,1)-1)

cov23 =

-126.9444

协方差矩阵的对角线上的元素就是各个维度的方差,下面我们依次计算这些方差:

>> var1=std(dim1)^2

var1 =

301.1556

>> var2=std(dim2)^2

var2 =

268.9444

>> var3=std(dim3)^2

var3 =

216.0111

这样,我们就得到了计算协方差矩阵所需要的所有数据,可以调用Matlab的cov函数直接得到协方差矩阵:

>> cov(mySample) ans = 301.1556 78.0000 -120.2444 78.0000 268.9444 -126.9444 -120.2444 -126.9444 216.0111

计算的结果,和之前的数据填入矩阵后的结果完全相同。[转自http://blog.csdn.net/ybdesire/article/details/6270328/协方差的定义 对于一般的分布,直接代入E(X)之类的就可以计算出来了,但真给你一个具体数值的分布,要计算协

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。