2012-02-10 25 views
1

補間を行うために必要な多次元データ構造があります。私は本当にRでこれを行う方法の例を得ることは難しいと思っています!私は、アレイ、oldがある場合の例として2d双線形補間R

:私はの大きさを変更したい。すなわち

new <- interp2d(old, newx=6, newy=5) 

:私がやりたいものを

old <- array(runif(10*12), dim=c(12,10)) 

str(old) 
num [1:12, 1:10] 0.763 0.429 0.792 0.923 0.476 ... 

を配列newを作るです新しい配列がoldデータの6 * 5配列になります。この例では、oldグリッド内の合計を保持することが重要です。上記の行は私がしたいことの例です、私はどのようにして、誰かが望むことを知らなかったのですか??ありがとう!

+0

A '??(私用)interpolate'示す'統計::(基地Rで)approx'、 'spatstat :: interp.im'と' fBasics :: linearInterp'と 'e1071中::補間'。おそらくこれらのうちの1つが機能するでしょうか? (私は、余分なパッケージを必要としないベース-Rのソリューションに興味がありますが、 'stats :: approx'はリストを返すという点で少し扱いに​​くいです)。 –

+1

これはhttp://stackoverflow.com/questions/9171904/r-apply-fun-to-kxk-subsections-of-arrayに非常によく似ています –

答えて

2

ここでは始まりますが、私はそれがあなたが望むものをしていると確信していません。実際には、このように粗くしているときに合計を正確に保持できるかどうかわかりません...「補間」よりもむしろ「ビン(bin)」にしないといけないのですか?

library(sos) 
findFn("{bilinear interpolation}") 

set.seed(101) 
old <- array(runif(10*12), dim=c(12,10)) 

library(fields) 

interp2d <- function(old, newx, newy) { 
    interp.surface.grid(list(x=seq(nrow(old)),y=seq(ncol(old)),z=old), 
         list(x=seq(1,nrow(old),length=newx), 
          y=seq(1,ncol(old),length=newy)))$z 
} 

newmat <- interp2d(old, newx=6, newy=5) 
+0

ありがとうございました!これは私が必要なことをするようです。それは基本パッケージ(すなわちフィールド)以外の何かを必要とする残念ですが、うまくいきますので、私は満足しています! –

関連する問題