【问题标题】:Different behaviour for pdist and pdist2pdist 和 pdist2 的不同行为
【发布时间】:2016-05-19 10:00:06
【问题描述】:

在 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); 

你能告诉我为什么吗?

【问题讨论】:

    标签: matlab distance pdist


    【解决方案1】:

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

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

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

    【讨论】:

    • 对不起,你是对的!我被对称的 square_diss_mat 弄糊涂了
    • pdist 假定对称属性,只计算矩阵的一半并复制另一半。
    • 感谢 Daniel,该函数显示“实现 Kullback-Leibler Divergence 以与 pdist 一起使用”是一个错误吗?
    • 我没有看到应用程序,但可能有。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-29
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 2014-11-11
    • 2021-03-09
    相关资源
    最近更新 更多