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')
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/17/24ce196224e7c42e0a33f2085ad8d48c)
4、squareform函数
计算上三角矩阵和方形矩阵之间的距离矩阵
调用格式:
Z = squareform(Y)如果Y是由pdist函数得到的向量,翻转Y为一个对称方矩格式,
则Z(i,j)表示为原数据上i和j间的距离。
详见 matlab help squareform
调用格式: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
相关文章推荐
- 为什么要进行傅立叶变换,究竟有何意义?如何用MATLAB实现快速傅立叶变换?
- Matlab自定义函数
- 关于matlab中regionprops及BoundingBox用法,mark一下
- matlab 内存不足原因探究
- matlab数据精度
- matlab常用命令
- Ubuntu14.04 安装Matlab2013b
- Matlab 高斯 Chi方 右尾函数 Q函数
- matlab 文档背景去除
- matlab中如何使用外部工具箱
- matlab 字符串处理函数
- MATLAB 图像处理相关知识
- matlab画棋盘格程序
- 粒子群算法求解优化问题(MATLAB)
- 模拟退火算法解决旅行商问题(matlab)
- matlab读入三维点云数据斯坦福兔子
- 用matlab gui 实现打开对话框选择图像
- Matlab与科学计算的基本运算
- 将Matlab中的矩阵写入txt文件的方法
- MATLAB - SQL 连接技术