有人知道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
提前感谢您提供的任何帮助!
答案 0 :(得分:0)
神经网络工具箱似乎是在Matlab中实现的,因此您只需查看这些源文件并进行计算即可。
如果您在命令窗口中输入dist
打开edit dist
,则会看到它调用dist.apply
或dist.distance
来执行实际工作,后者再次{ {1}}。因此,我的猜测是你正在寻找的东西可以在
dist.apply
在命令窗口中键入toolbox/nnet/nnet/nndistance/+dist/apply.m
以查看它。