我试图在matlab中使用rangesearch函数找到最近的邻居。我已经做了很长时间了,现在我开始面对一些未知问题。
我之前已经为大尺寸(6 Mil)运行了范围搜索,并且获得了成功。现在我试图以0.3 M的速度运行它并且它需要永远消耗大约50 GB的内存。有人可以帮忙吗?
我附上了测试文件here,下面给出了简单的代码 -
Glist =dlmread('test');
[idx,dist]= rangesearch(Glist,Glist,12);
答案 0 :(得分:0)
我有一个建议,但不能把它放在评论部分,因为我的分数较少。
无论如何,你确定你必须搜索Glist中的每一个点吗?因为它有大约0.3M点,所以需要一些时间。当然,它会占用一个巨大的内存空间,因为每个点创建一个单元格,其中包含数百到数千的点。所以,我建议从一小堆点开始,并继续增加一堆的大小。例如,
tic; [idx,dist]= rangesearch(Glist,Glist(1:50000,:),12);toc
tic-toc组合为您提供了经过的时间。顺便说一下,在我的机器上,上面的命令花了大约80秒。并且,我不想超越它,因为时间会随着记忆而增加。