5

行列を補間するには、このMatlab関数とまったく同じPythonの同等の関数が必要です。

Matlabで私は持っています:

interp2(X, Y, Z, XI, YI) 

Scipyにいる間私は持っています:

interp2d(X, Y, Z). 

ScipyXIではYIが欠落しています。どうすればこれを解決できますか?Matlabのすべてのパラメーターを使用しています。

4

4 に答える 4

4

正しい構文はip = interp2d(x, y, z); zi = ip(xi, yi)です。

また、interp2dとまったく同じではありませんinterp2RectBivariateSplineが近くにあります。

于 2012-07-13T10:54:06.800 に答える
1

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)
于 2017-05-08T14:40:41.453 に答える
1

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,yX,Y

于 2021-07-09T19:53:10.037 に答える
0

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))
于 2019-05-01T22:30:52.357 に答える