paper 120:计算距离矩阵的函数的pdist和pdist2函数 您所在的位置:网站首页 pdist2函数matlab paper 120:计算距离矩阵的函数的pdist和pdist2函数

paper 120:计算距离矩阵的函数的pdist和pdist2函数

2023-09-25 18:08| 来源: 网络整理| 查看: 265

  matlab中自带的计算距离矩阵的函数有两个pdist和pdist2。前者计算一个向量自身的距离矩阵,后者计算两个向量之间的距离矩阵。基本调用形式如下:

               D = pdist(X)

               D = pdist2(X,Y)

 

   这两个函数都提供多种距离度量形式,非常方便,还可以调用自己编写的距离函数。

 

   需要注意的是:pdist2返回是n*n的距离矩阵,pdist则返回距离矩阵的下三角串联形式。

下面是具体的介绍:

一、pdist Pairwise distance between pairs of objects Syntax D = pdist(X) D = pdist(X,distance) Description D = pdist(X) 计算 X 中各对行向量的相互距离(X是一个m-by-n的矩阵). 这里 D 要特别注意,D 是一个长为m(m–1)/2的行向量.可以这样理解 D 的生成:首先生成一个 X 的距离方阵,由于该方阵是对称的,且对角线上的元素为0,所以取此方阵的下三角元素,按照Matlab中矩阵的按列存储原则,此下三角各元素的索引排列即为(2,1), (3,1), ..., (m,1), (3,2), ..., (m,2), ..., (m,m–1).可以用命令 squareform(D) 将此行向量转换为原距离方阵.(squareform函数是专门干这事的,其逆变换是也是squareform。) D = pdist(X,distance) 使用指定的距离.distance可以取下面圆括号中的值,用红色标出! Metrics Given an m-by-n data matrix X, which is treated as m (1-by-n) row vectors x1, x2, ..., xm, the various distances between the vector xs and xt are defined as follows: 欧几里德距离Euclidean distance('euclidean') d 2 s,t =(x s x t )(x s x t ) ′     Notice that the Euclidean distance is a special case of the Minkowski metric, where p = 2. 欧氏距离虽然很有用,但也有明显的缺点。 一:它将样品的不同属性(即各指标或各变量)之间的差别等同看待,这一点有时不能满足实际要求。 二:它没有考虑各变量的数量级(量纲),容易犯大数吃小数的毛病。所以,可以先对原始数据进行规范化处理再进行距离计算。   标准欧几里德距离Standardized Euclidean distance('seuclidean') d 2 s,t =(x s x t )V 1 (x s x t ) ′     where V is the n-by-n diagonal matrix whose jth diagonal element is S(j)2, where S is the vector of standard deviations. 相比单纯的欧氏距离,标准欧氏距离能够有效的解决上述缺点。注意,这里的V在许多Matlab函数中是可以自己设定的,不一定非得取标准差,可以依据各变量的重要程度设置不同的值,如knnsearch函数中的Scale属性。   马哈拉诺比斯距离Mahalanobis distance(


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有