Matlab函数—pdist、squareform

1.pdist函数

最近开始用matlab做一些算法,用到pdist()函数,发现网上很多的文章讲得不是太明白,我主要对pdist()的具体实现过程用例子的方式进行详述。

D = pidst(X)主要计算X的行的距离,例如输入X为m*n的矩阵,输出D为m*(m-1)/2的向量,计算方法如下例子:

X=[1,2;3,4;5,1] 3*2的矩阵;

pdist(X)计算结果为[2.8284,4.1231,3.6056];

计算方法为第二行与第一行距离(3-1)*(3-1)+(4-2)*(4-2)得到的结果开平方为2.8284,第三行与第一行距离(5-1)*(5-1)+(1-2)*(1-2)得到的结果开平方为4.1231,第三行与第二行距离(5-3)*(5-3)+(1-4)*(1-4)得到的结果开平方为3.6056.

2.squareform 函数

  调用格式:Z=squareform(Y,..)

对于M个点的数据集X,pdist之后的Y将是具有M*(M-1)/2个元素的行向量。

Y这样的显示虽然节省了内存空间,但对用户来说不是很易懂,如果需要对这些距离进行特定操作的话,也不太好索引。MATLAB中可以用squareform把Y转换成方阵形式,方阵中位置的数值就是X中第i和第j点之间的距离,显然这个方阵应该是个对角元素为0的对称阵。

你可能感兴趣的:(Matlab)