从Matlab到Python的interp2(X,Y,Z,XI,YI)

时间:2012-07-13 10:07:17

标签: python matlab scipy interpolation

我需要这个Matlab function的精确Python等效函数才能插入矩阵。

在Matlab中我有:

interp2(X, Y, Z, XI, YI) 
在Scipy,我有:

interp2d(X, Y, Z). 

在Scipy XI和YI失踪。我该如何解决这个问题?我正在使用Matlab中的所有参数。

3 个答案:

答案 0 :(得分:1)

正确的语法是ip = interp2d(x, y, z); zi = ip(xi, yi)

此外,interp2dinterp2并不完全相同。 RectBivariateSpline更接近。

答案 1 :(得分: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))

答案 2 :(得分:0)

对于 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