我需要一个在Python中与这个Matlab函数完全等价的函数,以便对矩阵进行插值。
在Matlab中,我的函数如下:
interp2(X, Y, Z, XI, YI)
在Scipy中我有:
interp2d(X, Y, Z).
在Scipy中没有XI和YI。我该怎么解决呢?我在Matlab中使用所有参数。
我需要一个在Python中与这个Matlab函数完全等价的函数,以便对矩阵进行插值。
在Matlab中,我的函数如下:
interp2(X, Y, Z, XI, YI)
在Scipy中我有:
interp2d(X, Y, Z).
scipy.ndimage.map_coordinates
与Vq = interp2(V,Xq,Yq)
执行相同的操作。请阅读这些命令的文档,找出适合您情况的解决方案。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))
F(Xi,Yi)
的对角线,然后你就有了最终的向量。 - ttsesm[X, Y] = meshgrid(x, y')
[XI, YI] = meshgrid(xi, yi')
Vq = interp2(X, Y, Z', XI, YI)
coeff = diag(Vq)'
from scipy.interpolate import RectBivariateSpline
# NOTE: The x, y, xi, and yi arrays are kept 1-dimensional, and not converted to meshgrids.
interp = RectBivariateSpline(x, y, Z, kx=1, ky=1)
coeff = interp.ev(xi, yi)
这段代码应该会给你与MATLAB代码完全相同的结果,其中我的Python变量的大小如下: