pdist
成对观测值之间的距离
描述
例子
计算欧几里得距离和转换距离矢量到矩阵
计算观测值对之间的欧氏距离,并将距离向量转换为使用的矩阵squareform
.
用三个观察结果和两个变量创建一个矩阵。
rng (“默认”)%用于再现性X = rand(3,2);
计算欧氏距离。
D = pdist(X)
D =1×30.2954 1.0670 0.9448
成对距离按(2,1),(3,1),(3,2)的顺序排列。你可以很容易地确定观测之间的距离我
而且j
通过使用squareform
.
Z =方形(D)
Z =3×30 0.2954 1.0670 0.2954 0 0.9448 1.0670 0.9448 0
squareform
返回一个对称矩阵Z (i, j)
对应于观测值之间的成对距离我
而且j
.例如,你可以找到观测值2和3之间的距离。
Z(2、3)
Ans = 0.9448
通过Z
到squareform
函数的输出pdist
函数。
y =方形(Z)
y =1×30.2954 1.0670 0.9448
输出y
从squareform
而且D
从pdist
都是一样的。
计算闵可夫斯基距离
用三个观察结果和两个变量创建一个矩阵。
rng (“默认”)%用于再现性X = rand(3,2);
用默认指数2计算闵可夫斯基距离。
D1 = pdist(X,闵可夫斯基的)
D1 =1×30.2954 1.0670 0.9448
用指数1计算闵可夫斯基距离,它等于城市街区距离。
D2 = pdist(X,闵可夫斯基的, 1)
D2 =1×30.3721 1.5036 1.3136
D3 = pdist(X,“cityblock”)
D3 =1×30.3721 1.5036 1.3136
使用自定义距离函数计算缺少元素的成对距离
定义一个忽略坐标的自定义距离函数南
值,并使用自定义距离函数计算成对距离。
用三个观察结果和两个变量创建一个矩阵。
rng (“默认”)%用于再现性X = rand(3,2);
假设第一个观察的第一个元素缺失了。
X(1,1) = NaN;
计算欧氏距离。
D1 = pdist(X)
D1 =1×3NaN NaN 0.9448
如果观察我
或j
包含南
值,函数pdist
返回南
对于它们之间的成对距离我
而且j
.因此,成对距离(2,1)和(3,1)D1(1)和D1(2)为南
值。
定义一个自定义距离函数naneucdist
它忽略了南
值并返回欧几里得距离。
函数忽略与nan坐标的欧氏距离Nstar = sum(~isnan(sqdx),2);%不包含nan的对个数nstar(nstar == 0) = NaN;如果所有对都包含NaN则返回NaND2squared = sum(sqdx,2,“omitnan”)。* n / nstar;%对缺失坐标的修正D2 =根号下(D2平方);
计算距离naneucdist
通过将函数句柄作为的输入参数传递pdist
.
D2 = pdist(X,@naneucdist)
D2 =1×30.3974 1.1538 0.9448
输入参数
X
- - - - - -输入数据
数字矩阵
输入数据,指定为大小的数字矩阵米——- - - - - -n.行对应单独的观察结果,列对应单独的变量。
数据类型:单
|双
距离
- - - - - -距离度量
特征向量|字符串标量|函数处理
距离度量,指定为字符向量、字符串标量或函数句柄,如下表所示。
价值 | 描述 |
---|---|
“欧几里得” |
欧式距离(默认值)。 |
“squaredeuclidean” |
欧式距离的平方。(此选项仅为提高效率而提供。它不满足三角形不等式。) |
“seuclidean” |
标准化欧氏距离。观测值之间的每个坐标差都通过除以相应的标准偏差元素来缩放, |
“mahalanobis” |
的样本协方差的马氏距离 |
“cityblock” |
城市街区距离。 |
闵可夫斯基的 |
闵可夫斯基距离。默认指数为2。使用 |
“chebychev” |
切比雪夫距离(最大坐标差)。 |
的余弦 |
1减去点间夹角的余弦(作为向量)。 |
“相关” |
1减去点之间的样本相关性(作为值序列处理)。 |
“汉明” |
汉明距离,也就是不同坐标的百分比。 |
“jaccard” |
1减去杰卡德系数,也就是非零坐标的百分比。 |
“枪兵” |
1减去观测值之间的样本斯皮尔曼秩相关(被视为值序列)。 |
@ |
自定义距离函数句柄。距离函数有这样的形式 函数D2 = distfun(ZI,ZJ)距离计算%...
如果数据不是稀疏的,通常可以通过使用内置距离而不是函数句柄来更快地计算距离。 |
有关定义,请参见距离度量.
当你使用“seuclidean”
,闵可夫斯基的
,或“mahalanobis”
,您可以指定一个额外的输入参数DistParameter
控制这些指标。您还可以以与其他缺省值相同的方式使用这些指标DistParameter
.
例子:闵可夫斯基的
DistParameter
- - - - - -距离度量参数值
积极的标量|数值向量|数字矩阵
距离度量参数值,指定为正标量、数值向量或数值矩阵。此参数仅在指定时有效距离
作为“seuclidean”
,闵可夫斯基的
,或“mahalanobis”
.
如果
距离
是“seuclidean”
,DistParameter
是每个维度的比例因子向量,指定为正向量。默认值为性病(X, omitnan)
.如果
距离
是闵可夫斯基的
,DistParameter
为闵可夫斯基距离的指数,指定为正标量。缺省值为2。如果
距离
是“mahalanobis”
,DistParameter
协方差矩阵,指定为数值矩阵。默认值为X (X, omitrows)
.DistParameter
必须是对称且正定的。
例子:闵可夫斯基,3
数据类型:单
|双
输出参数
D
-成对距离
数字行向量
成对距离,作为长度的数字行向量返回米(米-1)/2,对应于观测值对,其中米观察的数量在吗X
.
这些距离按(2,1),(3,1),…, (米,1),(3,2),…, (米, 2),…, (米,米的左下三角形,即米——- - - - - -米列式距离矩阵。观测值之间的成对距离我而且j是在D((张)* (m i / 2) + j-i)为我≤j.
你可以转换D
变成一个对称矩阵squareform
函数。Z =方形(D)
返回一个米——- - - - - -米矩阵Z (i, j)
对应于观测值之间的成对距离我而且j.
如果观察我或j包含南
S中对应的值D
是南
对于内置的距离函数。
D
通常用作聚类或多维缩放中的不相似矩阵。详细信息请参见分层聚类和函数参考页cmdscale
,cophenet
,链接
,mdscale
,optimalleaforder
.这些函数需要D
作为输入参数。
更多关于
距离度量
距离度量是定义两个观测值之间距离的函数。pdist
金宝app支持各种距离度量:欧几里得距离、标准化欧几里得距离、马氏距离、城市街区距离、闵可夫斯基距离、切比雪夫距离、余弦距离、相关距离、汉明距离、杰卡德距离和斯皮曼距离。
给定一个米——- - - - - -n数据矩阵X
,则视为米(1 -n)行向量x1,x2、……x米,向量之间的不同距离x年代而且xt定义如下:
欧氏距离
欧几里得距离是闵可夫斯基距离的一个特例,其中p= 2.
标准化欧氏距离
在哪里V是n——- - - - - -n对角矩阵j第Th对角线元素为(年代(j))2,在那里年代是每个维度的比例因子的向量。
Mahalanobis距离
在哪里C是协方差矩阵。
城市街区距离
城市街区距离是闵可夫斯基距离的一个特例,其中p= 1.
闵可夫斯基距离
对于特殊情况p= 1,闵可夫斯基距离为街区距离。对于特殊情况p= 2,闵可夫斯基距离为欧几里得距离。对于特殊情况p=∞,闵可夫斯基距离为切比雪夫距离。
Chebychev距离
切比雪夫距离是闵可夫斯基距离的一种特殊情况,其中p=∞.
余弦距离
相关距离
在哪里
而且 .
汉明距离
Jaccard距离
斯皮尔曼的距离
在哪里
rsj是xsj接管x1j,x2j,……x乔丹,按
tiedrank
.r年代而且rt的坐标秩向量是x年代而且xt,也就是说,r年代= (r年代1,r年代2,……rsn).
.
.
扩展功能
C/ c++代码生成
使用MATLAB®Coder™生成C和c++代码。
使用注意事项和限制:
距离输入参数值(
距离
)必须是编译时常数。例如,要使用闵可夫斯基距离,包括coder.Constant(闵可夫斯基)
在arg游戏
的价值codegen
.距离输入参数值(
距离
)不能是自定义距离函数。的生成代码
pdist
使用parfor
(MATLAB编码器)在生成的代码中创建在受支持的共享内存多核平台上并行运行的循环。金宝app如果您的编译器不支持开放多处理(OpenMP)应用程金宝app序接口或禁用OpenMP库,MATLAB®编码器™将parfor
循环,为
循环。要查找受支持的编金宝app译器,请参见金宝app支持编译器.若要禁用OpenMP库,请设置EnableOpenMP
属性假
.详细信息请参见编码器。CodeConfig
(MATLAB编码器).
有关代码生成的更多信息,请参见代码生成简介而且通用代码生成工作流程.
GPU代码生成
使用GPU Coder™为NVIDIA®GPU生成CUDA®代码。
使用注意事项和限制:
支持的距金宝app离输入参数值(
距离
)为优化的CUDA代码“欧几里得”
,“squaredeuclidean”
,“seuclidean”
,“cityblock”
,闵可夫斯基的
,“chebychev”
,的余弦
,“相关”
,“汉明”
,“jaccard”
.距离
不能是自定义距离函数。距离
必须是编译时常数。
GPU数组
通过使用并行计算工具箱™在图形处理单元(GPU)上运行来加速代码。
Abrir比如
Tiene una versión modificada de este ejemplo。¿Desea abrir este ejemplo con sus modificaciones?
MATLAB突击队
Ha hecho clic en unenlace que对应一个este commando de MATLAB:
弹射突击队introduciéndolo en la ventana de commandos de MATLAB。Los navegadores web no permission comandos de MATLAB。
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。