我需要这个Matlab function的确切的Python等效函数来插值矩阵。
在Matlab中,我有:
interp2(X, Y, Z, XI, YI)
字符串
在Scipy,我有:
interp2d(X, Y, Z).
型
在Scipy中,Xi和YI都不见了。我怎么解决这个问题呢?我正在使用Matlab中的所有参数。
我需要这个Matlab function的确切的Python等效函数来插值矩阵。
在Matlab中,我有:
interp2(X, Y, Z, XI, YI)
字符串
在Scipy,我有:
interp2d(X, Y, Z).
型
在Scipy中,Xi和YI都不见了。我怎么解决这个问题呢?我正在使用Matlab中的所有参数。
5条答案
按热度按时间41zrol4v1#
正确的语法是
ip = interp2d(x, y, z); zi = ip(xi, yi)
。此外,
interp2d
与interp2
并不完全相同。RectBivariateSpline更接近。34gzjxbg2#
我也遇到过同样的问题,并且发现
scipy.ndimage.map_coordinates
和Vq = interp2(V,Xq,Yq)
的功能是一样的。请阅读这些命令的文档,以找到解决方案。用Matlab的
Vq = interp2(V,Xq,Yq)
来实现:字符串
eqqqjvef3#
对于interp2(v,xq,yq)
字符串
请注意,返回的结果需要调整大小。即(
ip.resize(img.shape)
)这里
y,x
是型
其中
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
2o7dmzc54#
Interp 2d输出另一个函数,允许您调用Xi和Yi。但是,请注意!它将它们作为矩阵进行计算,而不是标量。您将不得不使用for循环来分别计算Xi和Yi的每对值,并获得与MATLAB相同的行为。
字符串
iqjalb3h5#
我只是想自己权衡一下,因为我也在努力寻找一个相当于MATLAB代码的Python:
字符串
在 * 我的特定情况下 *,MATLAB变量和大小是,
*x和y分别为(m x 1)和(1 x n)。
*Xi和yi:均为(1 x w)大小。
*X&Y:(m x n)我的采样点的网格。
*Z:(n x m)对应函数值的数组(在函数中转置)。
*Xi和YI:都是我查询点的(w x w)网格。
*coeff:(1 x w)插值系数的数组。
我尝试了scipy.interpolate. BivariateSpline,并能够获得MATLAB代码产生的精确结果。这只是有点棘手,因为文档有点混乱,但关键是使用.ev方法。Python代码如下:
型
这段代码应该给你给予和MATLAB代码完全相同的结果,其中我的Python变量的大小如下,
*x和y分别为(m,i)和(n,i)。
*Z:(m x n),转自MATLAB。
*Xi&yi:两个变量都是(w,)形状。
*coeff:(w,)。