【问题标题】:How does Matlab apply weight in its Euclidean distance weight function?Matlab 如何在其欧几里得距离权重函数中应用权重?
【发布时间】:2014-02-22 03:53:10
【问题描述】:

有人知道 Matlab 的 Z=dist(W,P) 是如何工作的吗? Matlab documentation 没有指定使用权重矩阵 W 的算法。

我正在使用 Octave 并试图模仿这种行为。到目前为止,这个stack overflow post帮助我证明了Octave的Z=squareform(pdist(P'))等价于Matlab的Z=dist(P)。我还可以使用几个 for 循环来指定 Z 的元素:

function z=dist(w,p)
    for i=1:size(p,2)
        for j=1:size(p,2)
            u=p(:,i);
            v=p(:,j);
            z(i,j)=sum((u-v).^2).^0.5;
        end
    end
end

但是,我找不到关于权重矩阵 W 的任何在线文档。我不能简单地将 squareform(pdist(P')) 的输出乘以 W,因为尺寸不匹配。我试图预乘 W,例如sqrt(W*(P(:,1)-P(:,2)).^2),类似this stack overflow post,但输出幅度错误。

这是一个使用 Matlab 的示例:

P=     
9     7    10
10    1    10
2     3     2
10    6    10

W=      
10    9     5     8
5     2    10    10

>> D = dist(P)
   0      10.0995    1.0000
10.0995      0      10.3441
1.0000    10.3441      0

>> D = dist(W,P)
3.8730     9.0000    3.7417
12.0000    8.3666   12.3693

提前感谢您提供的任何帮助!

【问题讨论】:

    标签: matlab octave


    【解决方案1】:

    Neural Network Toolbox 似乎是在 Matlab 本身中实现的,因此您只需查看这些源文件并弄清楚。

    如果您通过在命令窗口中输入edit dist 打开dist,您会看到它调用dist.applydist.distance 来执行实际工作,而后者又调用dist.apply。因此,我的猜测是您要查找的内容可以在第 9 行找到

    toolbox/nnet/nnet/nndistance/+dist/apply.m
    

    在命令窗口中输入edit dist.apply 即可查看。

    【讨论】:

    • 好吧......这个答案只有在可以访问matlab安装时才有帮助:(
    猜你喜欢
    • 1970-01-01
    • 2017-01-07
    • 2014-01-17
    • 1970-01-01
    • 2013-03-02
    • 1970-01-01
    • 2015-07-15
    相关资源
    最近更新 更多