pdist2函数——两组观测值之间的成对距离
1.句法
2.描述
D=pdist2(X,Y,Distance):使用Distance指定的度量返回X和Y中每对观测之间的距离。
D=pdist2(X,Y,Distance,DistParameter):返回由Distance和DistPparameter指定的距离。可以指定DistParameter仅仅只有当Distance是‘seulidean’,'minkowski'或者‘mahalanobis’时.
D=pdist2(__,Name,Value):通过使用成对name-value‘Smallest'或者‘Largest’参数指定一个额外选项,加上任意一个先前的句法。
D=pdist2(X,Y,Distance,'Smallest',K):通过使用由Distance指定的矩阵来计算距离,对每一个观测值Y返回在观测值X中K最小的成对距离以升序的形式。
D=pdist2(X,Y,Distance,DistParameter,'Largest',K):通过使用由Distance和DistParameter指定的矩阵来计算距离,并且返回K最大成对距离以降序的形式。
[D,I]=pdist2(__,Name,Value):返回矩阵I,矩阵I包含D中相应距离的在X中观测值的索引。
3.例子
a.计算欧几里得距离
创建具有3个观测值2个变量的两个矩阵
计算Euclidean距离。输入Distance的参数默认为'euclidean',所以当计算Euclidean距离时不需要使用name-value成对参数,也不需要指定Distance.
D(i,j)对应观测值X的第i个点与观测点Y的第j个点之间的欧式距离。
b.计算Minkowski距离
计算minkowski距离默认指数为2,如果需要指定参数,例如指数为1的曼哈顿距离。
曼哈顿等于城市距离cityblock
c.找到观测点X与Y之间两个最小的成对欧式距离。
对每一个观测值Y,pdist2通过计算和对比与每一个观测值X的距离值找到最小的2个距离。函数对D中的每一列距离值以升序进行排序。I包含对应D中距离值的观测值X的索引。
d.用一种自定的距离函数计算具有缺失值的成对距离
自定义函数忽略具有缺失值的坐标轴,并且计算成对距离通过使用自定义函数。
创建两个矩阵,3个观测值和3个变量
X和Y的前两列相等。假设X(1,1)是缺失值。
计算汉明距离
从结果可以看出,如果观测值X或Y包含NaN值,则函数pdist2返回距离值为NaN。所以D(1,1),D(1,2),D(1,3)均为NaN。
自定义一个距离函数nanhamdist,忽略NaN值并且计算Hamming距离。当在大量的观测值上工作室,可以通过循环数据的坐标使得计算距离速度加快。
计算nanhamdist距离,通过传递句柄函数作为pdist2的输入参数。