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的区别与联系的主要内容,如果未能解决你的问题,请参考以下文章

JAVA中float与double的区

将数据变量从 matlab 保存到 csv 或文本文件

spring加载classpath与classpath*的区别别

httpservlert 的init 方法与initializingbean的afterpropertiesset有啥显微的区

终于有一篇文章可以把C 与 C++ 的区别说清楚了

如何在 Matlab Coder 中为具有不同输入数量的函数定义输入类型?