码迷,mamicode.com
首页 > 其他好文 > 详细

MATLAB求马氏距离(Mahalanobis distance)

时间:2019-01-10 21:53:32      阅读:825      评论:0      收藏:0      [点我收藏+]

标签:就会   ref   距离   column   1.4   center   ext   1.7   1.5   

MATLAB求马氏距离(Mahalanobis distance)

作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/

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.注意

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

MATLAB求马氏距离(Mahalanobis distance)

标签:就会   ref   距离   column   1.4   center   ext   1.7   1.5   

原文地址:https://www.cnblogs.com/kailugaji/p/10252280.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!