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

2024-04-26 13:14:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要这个Matlab function的Python等价函数来插值矩阵。

在Matlab中,我有:

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

在纽约的时候我有:

interp2d(X, Y, Z). 

西比锡和伊失踪了。我该怎么解决?我用的是Matlab中的所有参数。


Tags: 函数参数function矩阵插值等价matlabyi
3条回答

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

而且,interp2dinterp2也不完全相同。RectBivariateSpline更近了。

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))

我也遇到过同样的问题,并发现scipy.ndimage.map_coordinatesVq = 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)

相关问题 更多 >