马氏距离计算--MATLAB

eg:

x=[1 2; 1 3; 2 2; 3 1]

[mx, nx] = size(x)

Dis=ones(mx, nx)

Cov=cov(x)

for i=1:mx

for j=1:nx

D(i,j)=((x(i,:)-x(j,:))*inv(C)*(X(i,:)-X(j,:))')^0.5

end

end

_____

D=       0             2.3452

            2.3452   0

            2.000     1.2247

            2.3452   2.4495

 

------------2.3452  :  x的第一行向量与第二行之间的马氏距离

———— 2.000 第一行与第三行~~~

 

如果直接调用距离函数则为:

Y=pdist(X, 'mahal')

Y=2.3452    2.0000   2.3452    1.2247    2.4495    1.2247

这里的Y是按对角线0左下角的方式从第一列开始排列的~~~

如果想要直观的矩阵,则用函数:y=squreform(y)

 

ps: matlab相对还是比较好用的啊~~~

     以上是百度文库看到的,因为不能下载,就敲下来了,反正也不麻烦,记着以后用的~

又及:对单列可处理,单行不行。所以如果是批量处理中,读取行的值后,要将其转置为列向量(')

 

两个样本:
His1 = {3,4,5,6}
His2 = {2,2,8,4}

它们的均值为:
U = {2.5, 3, 6.5, 5}
协方差矩阵为:
S =
| 0.25  0.50  -0.75  0.50  |
| 0.50  1.00  -1.50  1.00  | 
|-0.75  -1.50    2.25  -1.50  |
| 0.50  1.00  -1.50  1.00  |
其中S(i,j)={[His1(i)-u(i)]*[His1(j)-u(j)]+[His2(i)-u(i)]*[His2(j)-u(j)]}/2

下一步就是求出逆矩阵S^(-1)
马氏距离 D=sqrt{[His1-His2] * S^(-1) * [(His1-His2)的转置列向量]}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值