在Matlab中查找点特定半径内的所有邻居
我正在实施Kraskov等人(2004)论文中的等式8,并存在以下问题: 给定向量在Matlab中查找点特定半径内的所有邻居,matlab,Matlab,我正在实施Kraskov等人(2004)论文中的等式8,并存在以下问题: 给定向量X=[X_1,…,X_N]和r=[r_1,…,r_N],我需要计算A=[A_1,…,A_N]其中A_I是r_I半径内X的点数 如果r是一个固定的数字,也就是说,如果每个点周围的半径对于所有点都是固定的,我可以很容易地使用。但因为它是一个向量(每个点的半径不同),我不知道如何快速实现。穷举搜索(或制作任何N^2大小的距离数组)是不好的,因为N大约有一百万个 这不是一个直接的答案,但您可能希望按“x”坐标(或任何其他坐
X=[X_1,…,X_N]
和r=[r_1,…,r_N]
,我需要计算A=[A_1,…,A_N]
其中A_I
是r_I
半径内X
的点数
如果
r
是一个固定的数字,也就是说,如果每个点周围的半径对于所有点都是固定的,我可以很容易地使用。但因为它是一个向量(每个点的半径不同),我不知道如何快速实现。穷举搜索(或制作任何N^2
大小的距离数组)是不好的,因为N
大约有一百万个 这不是一个直接的答案,但您可能希望按“x”坐标(或任何其他坐标)对点进行一阶升序,并确保半径的顺序与点的顺序一致。从那时起,你只需要做每点2检查。一个是看它是否到达前几点,另一个是看它是否到达下一点。希望这有帮助。不确定它在matlab中的性能如何,但升序应该不超过O(logn),算法应该在O(n)中运行,因为每个点的操作数是恒定的。给我们一个输入和输出示例1)X_i中有多少个维度?2) 用于距离度量的欧几里德范数?3) 你能为几个点给出一个简单的工作示例吗?不是一个直接的答案,但你可能希望按“x”坐标(或任何其他坐标)对点进行一阶升序,并确保半径的顺序与点的顺序一致。从那时起,你只需要做每点2检查。一个是看它是否到达前几点,另一个是看它是否到达下一点。希望这有帮助。不确定它在matlab中的性能如何,但升序应该不超过O(logn),算法应该在O(n)中运行,因为每个点的操作数是恒定的。给我们一个输入和输出示例1)X_i中有多少个维度?2) 用于距离度量的欧几里德范数?3) 你能为几个pts提供一个简单的工作示例吗?