Advertisement

matlab 马氏距离 实例,MATLAB求马氏距离(Mahalanobis distance)

阅读量:

MATLAB求马氏距离(Mahalanobis distance)

1.马氏距离计算公式

d2(xi,xj)=(xi-xj)TS-1(xi-xj)

其中,S是总体的协方差矩阵,而不是样本的协方差矩阵。

2.matlab中现有的函数

x=[155 66;180 71;190 73;160 60;190 68;150 58;170 75]

x =

155 66

180 71

190 73

160 60

190 68

150 58

170 75

Y = pdist(x,‘mahal‘)

Y =

Columns 1 through 5

1.572816369474562 2.201942917264386 1.635800793960578 2.695107559788053 1.478413355546874

Columns 6 through 10

1.404831102709996 0.629126547789825 1.713111078598705 1.391260434780810 2.103238561272744

Columns 11 through 15

1.590313263839551 2.103238561272744 1.090736759616727 2.589223001191582 2.033867095735081

Columns 16 through 20

1.825496244926879 0.629126547789825 2.743712945526665 2.441925172889290 2.980237487501595

Column 21

2.793761753017197

其中,X每一行代表一个样例,X是个二维的。Y的第一个数表示x1与x2之间的马氏距离。

3.求x1与x2之间的马氏距离

x=[155 66;180 71;190 73;160 60;190 68;150 58;170 75]

x =

155 66

180 71

190 73

160 60

190 68

150 58

170 75

cov=cov(x)

cov =

1.0e+02 *

2.702380952380953 0.739285714285714

0.739285714285714 0.412380952380952

s=inv(cov)

s =

0.007261927639280 -0.013018640484967

-0.013018640484967 0.047588267151168

a=[-25 -5]s[-25;-5]

a =

2.473751332087140

sqrt(a)

ans =

1.572816369474561

4.注意

计算两两马氏距离时,中间的协方差矩阵永远是总体的,而不是这两个的。所以,马氏距离很容易受总体的影响,总体一变化,两个样例之间的马氏距离就会变化。

全部评论 (0)

还没有任何评论哟~