求马氏距离(matlab版):
方法一:
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
>> X
X =
1 2
1 3
2 2
3 1
>> D
D =
0 2.3452 2.0000 2.3452
2.3452 0 1.2247 2.4495
2.0000 1.2247 0 1.2247
2.3452 2.4495 1.2247 0
>> 2.3452 X的第一行向量与第二行向量之间的马氏距离。
2.0000 X的第一行向量与第三行向量之间的马氏距离。
。。。
方法二:
X = [1 2; 1 3; 2 2; 3 1]
X =
1 2
1 3
2 2
3 1
Y = pdist(X,'mahal')
Y =
2.3452 2.0000 2.3452 1.2247 2.4495 1.2247