2011-08-15 18 views
6

私は2048x2048の不規則なデータのメッシュを持っていますzi = f(xi, yi)本質的に2048の実数の3つの独立したセットです。 Iは0から2047大規模な不規則格子の規則的なグリッドへの2次元補間

Iが1000×1000未満の画像でうまく動作するようgriddataを試みた

が、打撃にある滑らかwi = f(ui, vi)場合uiviの規則的メッシュにそれを(おそらくバイキュービックスプライン)を補間する整数値を必要としますあなたが1500x1500(Delauneyメッシュのメモリqhullエラーが明らかになる)に達するにつれて、私はのいくつかの関数、つまりgeometric_transform,RectBivariateSplinemap_coordinatesを見てきましたが、それらはすべて正規化されたデータを入力として受け取ります。私は何かを見逃して、それを間違って実装することもできます!

私はtformarraymakeresamplerを使用してこのMatlabスクリプトを実行するためにPython/SciPyを使用しようとしています。この大きなデータセットを処理するためにどのような機能を使用できるかについてのご意見はありますか?ありがとう!

+4

私はこの質問を見ています:http://stackoverflow.com/questions/1972172/interpolating-a-scalar-field-in-a-3d-space 私は成功の前にシェパード補間を使用しました。あなたのために働く。 – Yann

答えて

2

エラーを再現しようとしましたが、失敗しました。あなたは32ビットシステムですか?私はscipy/numpyや大きな配列に問題があり、64ビットに切り替えたので、それ以来問題はありませんでした。

は、ここで私はあなたのエラーを再現しようとするために使用されるコードです(それが役に立つ何も発生しませんが、少なくとも同じエラーが発生する必要があります):

y,x=indices([2048,2048],dtype='float64') 
z = randn(2048,2048) 
yr = y + randn(2048,2048) 
xr = x + randn(2048,2048) 
zn = griddata(xr.ravel(),yr.ravel(),z.ravel(),x,y) 
zl = griddata(xr.ravel(),yr.ravel(),z.ravel(),x,y,interp='linear') 

これは私のマシン上で動作します。

Pythonの64ビット版(使用しているOSによっては難しい場合があります)を実行できない場合は、2048x2048グリッドを4つの1024x1024グリッドに分割できますか?

+0

私は入力点と出力点をそれぞれタプルにしてgriddata()を実行する必要がありました。私の2011年のMacbookで12GBのコードは1024秒×1024秒で、2048×2048は184秒で –

+0

コードは機能しません。インポートとは別に、griddata()入力を '(xr.ravel()、yr.ravel()) 'という1つのタプルにまとめ、出力と同じようにする必要があります。'(x、y) ' –

関連する問題