pdist 和 pdist2 的不同行为
Different behaviour for pdist and pdist2
在 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);
你能告诉我为什么吗?
kullback_leibler_divergence
不是对称的,因此顺序很重要:
one_dist = pdist2(A, A(1,:), @kullback_leibler_divergence);
我没有看到任何使用具有 pdist
或 pdist2
的非对称函数的实际应用。
在 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);
你能告诉我为什么吗?
kullback_leibler_divergence
不是对称的,因此顺序很重要:
one_dist = pdist2(A, A(1,:), @kullback_leibler_divergence);
我没有看到任何使用具有 pdist
或 pdist2
的非对称函数的实际应用。