您的位置:首页 > 编程语言 > MATLAB

matlab中各种距离计算方式

2015-06-30 11:18 996 查看
1、pdist函数

调用格式:Y=pdist(X,’metric’)

说明:用 ‘metric’指定的方法计算 X 数据矩阵中对象之间的距离。’

X:一个m×n的矩阵,它是由m个对象组成的数据集,每个对象的大小为n。

metric’取值如下:

‘euclidean’:欧氏距离(默认);

‘seuclidean’:标准化欧氏距离;

‘mahalanobis’:马氏距离;

‘cityblock’:布洛克距离;

‘minkowski’:明可夫斯基距离;

‘cosine’: 夹角余弦

‘correlation’: 相关距离

‘spearman'

‘hamming’: 汉明距离

‘jaccard’: 杰卡德距离& 杰卡德相似系数

‘chebychev’:Chebychev距离

2、pdist2函数

D = pdist2(X,Y)

D = pdist2(X,Y,distance)

D = pdist2(X,Y,'minkowski',P)

D = pdist2(X,Y,'mahalanobis',C)

D = pdist2(X,Y,distance,'Smallest',K)

D = pdist2(X,Y,distance,'Largest',K)

[D,I] = pdist2(X,Y,distance,'Smallest',K)

[D,I] = pdist2(X,Y,distance,'Largest',K)

clc;clear;

x = rand(4,3)

y = rand(1,3)

md1 = pdist2(x,y,'Euclidean');

md2 = pdist2(x,y,'seuclidean');

md3 = pdist2(x,y,'mahalanobis');

md4 = pdist2(x,y,'cityblock');

md5 = pdist2(x,y,'minkowski',p);

md6 = pdist2(x,y,'chebychev');

md7 = pdist2(x,y,'cosine');

md8 = pdist2(x,y,'correlation');

md9 = pdist2(x,y,'hamming');

md10 = pdist2(x,y,'jaccard');

md11 = pdist2(x,y,'spearman');

D1=[d1,md1],D2=[d2,md2],D3=[d3,md3]

D4=[d4,md4],D5=[d5,md5],D6=[d6,md6]

D7=[d7,md7],D8=[d8,md8]

md9,md10,md11

运行结果如下:

x =

0.5225 0.6382 0.6837

0.3972 0.5454 0.2888

0.8135 0.0440 0.0690

0.6608 0.5943 0.8384

y =

0.5898 0.7848 0.4977

D1 =

0.2462 0.2462

0.3716 0.3716

0.8848 0.8848

0.3967 0.3967

D2 =

0.8355 0.8355

1.5003 1.5003

3.1915 3.1915

1.2483 1.2483

D3 =

439.5074 439.5074

437.5606 437.5606

438.3339 438.3339

437.2702 437.2702

D4 =

0.3999 0.3999

0.6410 0.6410

1.3934 1.3934

0.6021 0.6021

D5 =

0.2147 0.2147

0.3107 0.3107

0.7919 0.7919

0.3603 0.3603

D6 =

0.1860 0.1860

0.2395 0.2395

0.7409 0.7409

0.3406 0.3406

D7 =

0.0253 0.0253

0.0022 0.0022

0.3904 0.3904

0.0531 0.0531

D8 =

1.0731 1.0731

0.0066 0.0066

1.2308 1.2308

1.8954 1.8954

md9 =

1

1

1

1

md10 =

1

1

1

1

md11 =

1.5000

0.0000

1.5000

2.0000

3、mahal函数

调用格式:D2=mahal(Y,X)

D2(I) = (Y(I,:)-MU) * SIGMA^(-1) * (Y(I,:)-MU)',

例子:

x = mvnrnd([0;0], [1 .9;.9 1], 100);

y = [1 1;1 -1;-1 1;-1 -1];

MahalDist = mahal(y,x)

sqEuclidDist = sum((y - repmat(mean(x),4,1)).^2, 2)

plot(x(:,1),x(:,2),'b.',y(:,1),y(:,2),'ro')



4、squareform函数

计算上三角矩阵和方形矩阵之间的距离矩阵

调用格式:

Z = squareform(Y)如果Y是由pdist函数得到的向量,翻转Y为一个对称方矩格式,

则Z(i,j)表示为原数据上i和j间的距离。

详见 matlab help squareform
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: