地圏との距離のマトリックス:微積分の繰り返しを避ける

LocoGris

distmfromを使用して、非常に大きな行列内のすべての点間の距離を計算したいと思いgeosphereます。

最小限の例を参照してください。

library(geosphere)
library(data.table)

coords <- data.table(coordX=c(1,2,5,9), coordY=c(2,2,0,1))
distances <- distm(coords, coords, fun = distGeo)

問題は、計算している距離の性質によりdistm、対称行列が返されるため、距離の半分以上を計算することを回避できることです。

structure(c(0, 111252.129800202, 497091.059564718, 897081.91986428, 
111252.129800202, 0, 400487.621661164, 786770.053508848, 497091.059564718, 
400487.621661164, 0, 458780.072878927, 897081.91986428, 786770.053508848, 
458780.072878927, 0), .Dim = c(4L, 4L))

それぞれ2回行うことを避けて、これらすべての距離を計算するためのより効率的な方法を見つけるのを手伝ってもらえますか?

dipetkov

ポイントのすべてのペアワイズ距離を計算する場合xは、を使用するdistm(x)よりも使用することをお勧めしますdistm(x,x)このdistm関数はどちらの場合も同じ対称行列を返しますが、1つの引数を渡すと、行列が対称であることがわかるため、不要な計算は行われません。

あなたはそれを計ることができます。

library("geosphere")

n <- 500
xy <- matrix(runif(n*2, -90, 90), n, 2)

system.time( replicate(100, distm(xy, xy) ) )
#  user  system elapsed 
# 61.44    0.23   62.79 
system.time( replicate(100, distm(xy) ) )
#  user  system elapsed 
# 36.27    0.39   38.05 

Rコードを見geosphere::distmて、2つのケースの処理が異なることを確認することもできます

余談ですが、グーグルですばやく検索するとparallelDist、CRANでの平行距離行列の計算が見つかります。測地線距離はオプションです。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Python:繰り返しを避けて、リストの2つのリストをマージする方法は?

分類Dev

Java 8ストリーム:繰り返しを避けるための条件?

分類Dev

繰り返しの JavaScript を避ける

分類Dev

APIブループリント-認証ブロックの繰り返しを避ける

分類Dev

wcfとefのコードの繰り返しを避ける

分類Dev

共用体タイプのケースへのマッピングの繰り返しを避ける

分類Dev

BLoCとRxDartでの繰り返しを避ける

分類Dev

セットから要素を選択する距離を最大化する(繰り返しを避ける)アルゴリズム

分類Dev

Pythonリストの理解-繰り返し評価を避けたい

分類Dev

繰り返される単語を識別し、Pythonのリストとして2つの単語間の距離を取得するには

分類Dev

クラスのすべてのメソッドで同じことを検証します。コードの繰り返しを避ける

分類Dev

コードの繰り返しを避けるためにジェネリックメソッドを作成しようとしています

分類Dev

Gitワークフロー:繰り返しのコミットメッセージを避けながらブランチをマージする

分類Dev

omnet ++のユークリッド距離に基づいてノードを繰り返し接続します

分類Dev

コードの繰り返しを避けるための最良のpythonicプラクティス?

分類Dev

ボットがグループでコマンドを繰り返すのを避ける方法は?

分類Dev

メッセージの繰り返しを避けますか?

分類Dev

ループの繰り返しごとの結果を分離

分類Dev

Cエラー処理の繰り返しを避ける

分類Dev

パンダでの繰り返し操作を避ける

分類Dev

Coqでの繰り返しを避ける

分類Dev

Vue:計算の繰り返しを避ける

分類Dev

関数の繰り返しを避ける方法

分類Dev

Neo4J:ノードの繰り返しを避ける

分類Dev

Neo4J:ノードの繰り返しを避ける

分類Dev

jQueryコードの繰り返しを避ける

分類Dev

ElasticSearch結果での繰り返しを避ける

分類Dev

Router ファイルで「require」の繰り返しを避ける

分類Dev

XSLTテンプレートの繰り返しを避けるため

Related 関連記事

  1. 1

    Python:繰り返しを避けて、リストの2つのリストをマージする方法は?

  2. 2

    Java 8ストリーム:繰り返しを避けるための条件?

  3. 3

    繰り返しの JavaScript を避ける

  4. 4

    APIブループリント-認証ブロックの繰り返しを避ける

  5. 5

    wcfとefのコードの繰り返しを避ける

  6. 6

    共用体タイプのケースへのマッピングの繰り返しを避ける

  7. 7

    BLoCとRxDartでの繰り返しを避ける

  8. 8

    セットから要素を選択する距離を最大化する(繰り返しを避ける)アルゴリズム

  9. 9

    Pythonリストの理解-繰り返し評価を避けたい

  10. 10

    繰り返される単語を識別し、Pythonのリストとして2つの単語間の距離を取得するには

  11. 11

    クラスのすべてのメソッドで同じことを検証します。コードの繰り返しを避ける

  12. 12

    コードの繰り返しを避けるためにジェネリックメソッドを作成しようとしています

  13. 13

    Gitワークフロー:繰り返しのコミットメッセージを避けながらブランチをマージする

  14. 14

    omnet ++のユークリッド距離に基づいてノードを繰り返し接続します

  15. 15

    コードの繰り返しを避けるための最良のpythonicプラクティス?

  16. 16

    ボットがグループでコマンドを繰り返すのを避ける方法は?

  17. 17

    メッセージの繰り返しを避けますか?

  18. 18

    ループの繰り返しごとの結果を分離

  19. 19

    Cエラー処理の繰り返しを避ける

  20. 20

    パンダでの繰り返し操作を避ける

  21. 21

    Coqでの繰り返しを避ける

  22. 22

    Vue:計算の繰り返しを避ける

  23. 23

    関数の繰り返しを避ける方法

  24. 24

    Neo4J:ノードの繰り返しを避ける

  25. 25

    Neo4J:ノードの繰り返しを避ける

  26. 26

    jQueryコードの繰り返しを避ける

  27. 27

    ElasticSearch結果での繰り返しを避ける

  28. 28

    Router ファイルで「require」の繰り返しを避ける

  29. 29

    XSLTテンプレートの繰り返しを避けるため

ホットタグ

アーカイブ