algorithm - 搜索最近的 k 个元素

标签 algorithm matlab search vector

<分区>

我有一堆(或多或少 3500 个)具有 4096 个分量的向量,我需要一个快速的方法来查看,给定另一个具有相同长度的向量的输入,这是最近的 N。 我想使用一些 matlab 函数来做到这一点。这可以满足我的需要吗?

https://uk.mathworks.com/help/stats/classificationknn-class.html

最佳答案

您建议的是聚类函数,它应该从所有向量中生成 N 个聚类。不确定这是你想要的。如果你只是想在一堆向量之间有 N 个最小距离,你可以很容易地手动完成。像这样的东西:

distances = matrixOfvectors - yourVector; % repmat(your...) if you have older Matlab.
[val, pos] = sort(sum(distances.^2, 2)); % Sum might need 1 instead of 2, depends whether vectors are rows or columns.
minVectors = pos(1:N); % Take indices of N nearest to get which vectors are the closest.

如果 N 很小,比如 3 或更少,则避免排序会稍微快一些,只需先将每个新向量与第二大向量进行比较,然后根据结果与第一或第三向量进行比较。

关于algorithm - 搜索最近的 k 个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44516061/

相关文章:

python - 从 Python 访问/调用 Simulink

java - 如何在 Netbeans 中使用 java 搜索 mongodb 数据库中的条目?

algorithm - 判断一个数是否为素数的好算法?

c++ - 如何在二维数组 ROW 中找到最小值和最大值?

algorithm - 线性时间内的最小轴平行边界框

c - 实现首次拟合算法

MATLAB 特征函数

Python Mlab - 无法导入名称 find_available_releases

c++ - 使用 std::vector<std::string> 的快速搜索算法

css - 编辑输入类型 ="search"伪元素 Button ('x' )