pdist和pdist2的不同行为

时间:2016-02-09 12:06:52

标签: matlab distance pdist

在MATLAB代码中,我使用的kullback_leibler_divergence相异度函数可以找到here

我有一个矩阵A,我使用下载的函数计算相异度矩阵。

理论上,如果我计算

clear
A = rand(132,6); % input matrix
diss_mat = pdist(A,'@kullback_leibler_divergence'); % calculate the dissimilarity
square_diss_mat = squareform(diss_mat); % I put the dissimilarities in a square matrix
one_dist = pdist2(A(1,:),A,@kullback_leibler_divergence);

我应该让square_diss_mat的第一行等于one_dist,但我不是。

如果我使用欧几里德距离我得到它:

diss_mat = pdist(A);
square_diss_mat = squareform(diss_mat);
one_dist = pdist2(A(1,:),A); 

你能告诉我为什么吗?

1 个答案:

答案 0 :(得分:1)

kullback_leibler_divergence不对称,因此顺序很重要:

one_dist = pdist2(A, A(1,:), @kullback_leibler_divergence);

我没有看到任何使用pdistpdist2的非对称函数的实际应用。