行列を補間するには、このMatlab関数とまったく同じPythonの同等の関数が必要です。
Matlabで私は持っています:
interp2(X, Y, Z, XI, YI)
Scipyにいる間私は持っています:
interp2d(X, Y, Z).
ScipyXIではYIが欠落しています。どうすればこれを解決できますか?Matlabのすべてのパラメーターを使用しています。
行列を補間するには、このMatlab関数とまったく同じPythonの同等の関数が必要です。
Matlabで私は持っています:
interp2(X, Y, Z, XI, YI)
Scipyにいる間私は持っています:
interp2d(X, Y, Z).
ScipyXIではYIが欠落しています。どうすればこれを解決できますか?Matlabのすべてのパラメーターを使用しています。
正しい構文はip = interp2d(x, y, z); zi = ip(xi, yi)
です。
また、interp2d
とまったく同じではありませんinterp2
。RectBivariateSplineが近くにあります。
scipy.ndimage.map_coordinates
私は同じ問題に遭遇し、それがと同じことをすることを理解しましたVq = interp2(V,Xq,Yq)
。これらのコマンドのドキュメントを読んで、ケースの解決策を見つけてください。
Matlabのこれを試してみてくださいVq = interp2(V,Xq,Yq)
:
Vq = scipy.ndimage.map_coordinates(V, [Xq.ravel(), Yq.ravel()], order=3, mode='nearest').reshape(V.shape)
interp2(v、xq、yq)の場合
ip = scipy.interpolate.griddata((y.ravel(),x.ravel()),distorted.ravel(),(yq.ravel(),xq.ravel()))
返される結果のサイズを変更する必要があることに注意してください。すなわち(ip.resize(img.shape)
)
ここy,x
にあります
x,y = np.meshgrid(np.arange(w),np.arange(h))
ここw,h
で、はそれぞれ画像の幅と高さです。
詳細については、griddataのドキュメントをご覧ください。 https://docs.scipy.org/doc/scipy/reference/generated/scipy.interpolate.griddata.html
interp2(X、Y、V、Xq、Yq)の場合は、単に次のように置き換えます
x,y
。X,Y
Interp2dは、XiとYiを呼び出すことができる別の関数を出力します。ただし、気を付けてください!それらをスカラーではなく行列として評価します。forループを使用して、XiとYiの値の各ペアを個別に評価し、MATLABと同じ動作を取得する必要があります。
F=interpolate.interp2d(X,Y,Z)
Zi=[]
for i, j in zip(Xi,Yi)
Zi.append(F(i,j))