2017-07-04 3 views
0

Ich versuche, die nächsten Nachbarn mit der Entfernungssuche-Funktion in Matlab zu finden. Ich mache das schon lange und jetzt habe ich mich mit einigen unbekannten Problemen konfrontiert.Ein Problem mit Entfernungssuche (Matlab)

Ich habe früher ransearch für große Größen (6 Mil.) Und war erfolgreich. Jetzt habe ich versucht, es für 0,3 M laufen zu lassen und es dauert ewig und es verbraucht ~ 50 GB Speicher. Könnte jemand helfen?

Ich habe die Testdatei here und der einfachen Code angebracht ist unten angegeben -

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

Antwort

0

ich einen Verbesserungsvorschlag haben, konnte es aber nicht im Kommentarbereich setzen, wie ich weniger Punkte haben.

Sind Sie sicher, dass Sie jeden Punkt in Glist suchen müssen? Da es etwa 0,3 Millionen Punkte hat, wird es etwas dauern. Und natürlich wird es einen riesigen Speicherplatz einnehmen, da für jeden Punkt eine Zelle erstellt wird, die Punkte von einigen Hundert bis zu Tausenden enthält. Also, ich würde vorschlagen, mit einem kleinen Bündel von Punkten zu beginnen und die Größe des Bündels zu erhöhen. Zum Beispiel

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

Tic-Toc-Kombination gibt Ihnen die verstrichene Zeit. Übrigens, auf meinem Rechner dauerte der obige Befehl ~ 80 Sekunden. Und ich wollte nicht darüber hinausgehen, da die Zeit mit der Erinnerung zunimmt.