2017-07-04 11 views
0

matlabのrangesearch関数を使用して最近傍点を探しています。私はこれを長い間行ってきましたが、今私はいくつかの未知の問題に直面し始めました。rangesearch(Matlab)の問題

私は以前に巨大なサイズ(6Mil)でrangesearchを実行して成功しました。今私は0.3Mのためにそれを実行しようとしていた、それは永遠にかかるとそれは〜50GBのメモリを消費します。誰でも助けてくれますか?

私はテストファイルhereを添付しており、単純なコードは以下のとおりである -

Glist =dlmread('test'); 
[idx,dist]= rangesearch(Glist,Glist,12); 

答えて

0

私は提案を持っていますが、私はあまりポイントを持っているとして、コメント欄にそれを置くことができませんでした。

とにかく、Glistの各ポイントをすべて検索する必要がありますか?約3Mのポイントがあるので、時間がかかるだろう。そして、もちろん、各ポイントについて、数百から数千の範囲のポイントを含む1つのセルが作成されるため、膨大なメモリスペースを占有することになります。だから、私はポイントの小さな束で開始し、束のサイズを増やし続けることをお勧めします。たとえば、

tic; [idx,dist]= rangesearch(Glist,Glist(1:50000,:),12);toc 

tic-tocの組み合わせは、経過時間を示します。ところで、私のマシン上では、上記のコマンドは約80秒かかりました。そして、記憶と一緒に時間が増えるので、私はそれを越えて行きたくありませんでした。