【发布时间】:2014-12-08 23:10:22
【问题描述】:
我在 matlab 中使用 kNN 搜索函数,但我正在计算我自己定义的类的两个对象之间的距离,所以我编写了一个新的距离函数。就是这样:
function d = allRepDistance(obj1, obj2)
%calculates the min dist. between repr.
% obj2 is a vector, to fit kNN function requirements
n = size(obj2,1);
d = zeros(n,1);
for i=1:n
M = dist(obj1.Repr, [obj2(i,:).Repr]');
d(i) = min(min(M));
end
end
不同的是obj.Repr可能是一个矩阵,我想计算每个参数的所有行之间的最小距离。但是即使obj1.Repr 只是一个向量,它基本上给出了两个向量之间的正常欧几里得距离,kNN 函数也慢了 200 倍!
我只检查了距离函数(没有 kNN)的性能。我测量了计算向量和矩阵行之间的距离(当它们在对象中时)所需的时间,它的工作速度比正常距离函数慢 3 倍。
这有意义吗?有解决办法吗?
【问题讨论】:
-
“n”通常有多大?
-
@AdrienNK:我在 n=3000 和 k=800 和 2(列数)时进行了测量,但我希望 n 更大,可以选择 10000。跨度>
标签: matlab