MATLAB中dist与pdist、pdist2的区别与联系

该博客详细介绍了MATLAB中用于计算距离的三个函数:dist、pdist和pdist2。dist用于计算权值矩阵与输入矩阵之间的距离,pdist计算矩阵中所有行向量对之间的距离,而pdist2则计算两个矩阵中对应行向量间的距离。文中通过实例展示了不同函数的用法,并提到了多种可选的距离公式,如欧氏距离、平方欧氏距离等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、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函数,用来计算两个向量的距离。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Radar_LFM

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值