MATLAB中dist与pdistpdist2的区别与联系
Posted Zhi Zhao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MATLAB中dist与pdistpdist2的区别与联系相关的知识,希望对你有一定的参考价值。
一、dist
dist为欧式距离加权函数。
Z = dist(W,P);
W:指定S行R列的权值矩阵。
P:指定表示R行Q列的输入矩阵,Q为输入的列向量。
函数的返回值Z为一个S行Q列的矩阵。
例1:
>> W = rand(4,3)
W =
0.8342 0.6690 0.1222
0.0156 0.5002 0.6712
0.8637 0.2180 0.5996
0.0781 0.5716 0.0560
>> P = rand(3,1)
P =
0.0563
0.1525
0.0196
>> Z = dist(W,P)
Z =
0.9394
0.7396
0.9962
0.4212
二、pdist
D = pdist(X);
用法:对于一个M×N的矩阵X,pdist计算每对行向量的相互距离,默认采用欧氏距离公式;函数的返回值为向量D,D是具有一行,(m*(m-1)/2)列的行向量。
例2-1:
>> X = randn(4,2)
X =
0.0378 1.5239
-0.3636 0.5458
0.1496 2.0099
-1.9445 1.4167
>> D = pdist(X)
D =
1.0572 0.4987 1.9852 1.5514 1.8049 2.1765
D = pdist(X,distance); 指定使用的距离公式。
distance可以选择以下参数:
'euclidean' - 欧氏距离(默认)
'squaredeuclidean' - 平方欧氏距离
'seuclidean' - 标准化欧氏距离
'cityblock' - 城市街区距离
'minkowski' - 闵可夫斯基距离。默认指数为2,若要指定其他指数,请使用D = PDIST(X,'minkowski',P); 其中,指数P是一个标量正值。
'chebychev' - 切比雪夫距离(最大坐标差)
'mahalanobis' - 马氏距离
'cosine' - 夹角余弦距离
'correlation' - 相关距离
'spearman' - 斯皮尔曼距离
'hamming' - 汉明距离
'jaccard' - 杰卡德距离
function - 用 @ 指定某个函数作为距离计算的公式,例如@DISTFUN
例2-2:
>> X = rand(3,2)
X =
0.8147 0.9134
0.9058 0.6324
0.1270 0.0975
>> D = pdist(X,'minkowski')
D =
0.2954 1.0670 0.9448
三、pdist2
D = pdist2(X,Y);
用法:设X为一个M行N列的矩阵,Y为一个P行Q列的矩阵,则函数的返回值D为一个M行P列的矩阵。
pdist2计算X中任意一个行向量与Y中任意一个行向量的距离,默认采用欧氏距离公式。
例3-1:
>> X = randn(2,3)
X =
-0.4336 3.5784 -1.3499
0.3426 2.7694 3.0349
>> Y = randn(2,3)
Y =
0.7254 0.7147 -0.1241
-0.0631 -0.2050 1.4897
>> D = pdist2(X,Y)
D =
3.3236 4.7449
3.7879 3.3763
D = pdist2(X,Y,distance); 指定使用的距离公式。
pdist与pdist2中distance选择的参数一样。
上述就是在使用dist与pdist、pdist2这三个函数时的区别。
dist与pdist、pdist2之间的联系可以通过MATLAB自带的pdist、pdist2函数的入口参数看出:
[D,I] = pdist2(X,Y,dist,varargin)
Y = pdist(X,dist,varargin)
pdist、pdist2这两个函数在实现过程中也调用了dist函数,用来计算两个向量的距离。
以上是关于MATLAB中dist与pdistpdist2的区别与联系的主要内容,如果未能解决你的问题,请参考以下文章
spring加载classpath与classpath*的区别别
httpservlert 的init 方法与initializingbean的afterpropertiesset有啥显微的区