逆距離荷重法を用いてデータの補間を行いたいのですが、データが以下のようにエクセル(csv形式)である場合、どのように計算すればよいのでしょうか?

例)列の左からx座標,y座標,値
x座標 y座標 値
10   15  30
12   52  40
59   79  5
15   9    90

上記のように座標が飛び飛びのデータが1000個程あり、全セル(x,y)=(0,0)~(99,99)の10000セル分のデータを取得したいのですが、抜けのある部分のデータを逆距離荷重法ですべて求めるにはどうすればよいでしょうか?

よろしくお願いいたします。

A 回答 (1件)

データがたった1000点しかなく、欲しいのがわずか10000点。

だったら、素直にデータを全部使えばよろしいでしょう。すなわち、k番目のデータを(x[k], y[k], v[k])、補間で値を計算する点の位置を(x,y)、計算される値をvとして
  D(x,y,x[k], y[k]) = 「(x,y)と(x[k],y[k])の距離」
を定義すれば、
  S = ∑{k=1〜1000} (1/D(x,y,x[k],y[k]))
  v = (1/S)∑{k=1〜1000} (v[k]/D(x,y,x[k],y[k]))
を計算するだけ。マクロを書けばいいんです。

 なお「(x,y)と(x[k], y[k])の距離」はいろんな種類の「距離」がありうるわけで、たとえばユークリッド距離なら
  D(x,y,x[k],y[k]) = √((x-x[k])^2+ (y-y[k])^2)
だし、マンハッタン距離なら
  D(x,y,x[k],y[k]) = |x-x[k]|+ |y-y[k]|
ですね。

 ただし、これだけだと (x,y)=(x[k],y[k])の場合にはD(x,y,x[k],y[k])=0になって、エラー(0による除算)が起こる。なので
  もしD(x,y,x[k],y[k])=0 なら v = v[k]
という分岐処理を入れておく必要があるな。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

近傍のサンプル数をどう数えようかと悩んでおり全部使うという発想に至りませんでしたが、教えて頂いた方法で無事解決しました!

お礼日時:2017/06/20 20:16

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング