1

球上の多数の場所 (5000) 間の距離行列を計算しています (Haversine 距離関数を使用)。

これが私のコードです:

require(geosphere)
x=rnorm(5000)
y=rnorm(5000)
xy1=cbind(x,y)

距離行列の計算にかかる時間は次のとおりです。

 system.time( outer(1:nrow(xy1), 1:nrow(xy1), function(i,j) distHaversine(xy1[i,1:2],xy1[j,1:2])))

このプログラムの実行には時間がかかります。この仕事をするための時間消費を減らす方法を提案してください! ありがとう。

4

2 に答える 2

3

geosphereパッケージに組み込まれている機能を試してみませんか?

z <- distm( xy1 )

一連のポイント間の距離行列を計算するのデフォルトの距離関数distm()は、Haversine ( "distHaversine") 式ですが、fun引数を使用して別の式を指定することもできます。

私の 2.6GHz Core i7 rMBP では、5,000 ポイントで約 5 秒かかります。

于 2016-05-24T07:42:57.820 に答える