【发布时间】:2018-02-19 00:28:39
【问题描述】:
我正在编写一个 KNN 代码,当我使用 pdist 或 pdist2 时,它是如此缓慢。当我使用传统公式计算欧几里得距离时,它的速度要快得多。这是为什么?有没有办法让它更快?
%temp = [F1(i, j), F2(i, j); Xtrain(sample, 1), Xtrain(sample, 2)];
meshgrid_point = [F1(i, j), F2(i, j)];
sample_point = [Xtrain(sample, 1), Xtrain(sample, 2)];
%euclidean_distance = pdist(temp, 'euclidean');
%%euclidean_distance = pdist2(meshgrid_point, sample_point, 'euclidean');
euclidean_distance = sqrt((meshgrid_point(1) - sample_point(1))^2 + (meshgrid_point(2) - sample_point(2))^2);
【问题讨论】:
-
在您的示例代码中,您计算两点之间的距离。
pdist2计算两个输入的所有点对之间的距离。因此,如果您输入一个包含 N 个点的矩阵和一个包含 M 个点的矩阵,您将得到 N*M 距离。我不认为使用手写 MATLAB 代码计算速度更快。但是pdist2如果只给它一对分,可能会有很多开销。
标签: matlab performance