interp2(X, Y, Z, XI, YI) from Matlab to Python

Related searches

I need the exact Python equivalent function of this Matlab function in order to interpolate matrices.

In Matlab I have:

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

while in Scipy I have:

interp2d(X, Y, Z). 

In Scipy XI and YI are missing. How can I resolve this? I'm using all parameters in Matlab.

The correct syntax is ip = interp2d(x, y, z); zi = ip(xi, yi).

Also, interp2d is not exactly the same as interp2. RectBivariateSpline is closer.

2-D data interpolation, I need the exact Python equivalent function of this Matlab function in order to interpolate matrices. In Matlab I have: interp2(X, Y, Z, XI, YI). while in Scipy I have: I need the exact Python equivalent function of this Matlab function in order to interpolate matrices. In Matlab I have: interp2(X, Y, Z, XI, YI) while in Scipy I have: interp2d(X, Y, Z).

I have encountered the same issue, and figured out that scipy.ndimage.map_coordinates does the same as Vq = interp2(V,Xq,Yq). Please read the documentation of these commands to find out the solution for your case.

Try this for Matlab's Vq = interp2(V,Xq,Yq) :

Vq = scipy.ndimage.map_coordinates(V, [Xq.ravel(), Yq.ravel()], order=3, mode='nearest').reshape(V.shape)

[SciPy-User] 2-D data interpolation, I am converting a matlab code to python and I am looking for a function like interp2 [1] for 2-D M = interp2(x,y,z, xi,yi, 'cubic') where x, y and z� Interp2d outputs another function which allows you to call Xi and Yi. However, watch out! It evaluates them as a matrix, and not a scalar. You will have to use a for loop to evaluate each pair of values for Xi and Yi individually and get the same behavior as MATLAB. F=interpolate.interp2d(X,Y,Z) Zi=[] for i, j in zip(Xi,Yi) Zi.append(F(i,j))

Interp2d outputs another function which allows you to call Xi and Yi. However, watch out! It evaluates them as a matrix, and not a scalar. You will have to use a for loop to evaluate each pair of values for Xi and Yi individually and get the same behavior as MATLAB.

F=interpolate.interp2d(X,Y,Z)
Zi=[]
for i, j in zip(Xi,Yi)
   Zi.append(F(i,j))

Function Reference: interp2 - Octave Forge, My matlab code has calls like > > M = interp2(x,y,z, xi,yi, 'cubic') > > where x, y and z describe a surface function. The interp2 function > returns� I need a Python equivalent to the interp2 MATLAB's function. I am trying to make this MATLAB example working in Python but I can't. import numpy as np from scipy.interpolate import interp2d from scipy.interpolate import RectBivariateSpline service = np.array(range(10, 31, 10)) years = np.array(range

Interpolate reference data x , y , z to determine zi at the coordinates xi , yi . The reference data x , y can be matrices, as returned by meshgrid , in which case the � : zi = interp2 (x, y, z, xi, yi): zi = interp2 (z, xi, yi): zi = interp2 (z, n): zi = interp2 (z): zi = interp2 (…, method): zi = interp2 (…, method, extrap) Two

Maybe if you described what the matlab function was actually supposed to do, you'd get more help with a Python implementation. As it stands, you're asking people to go look up with that matlab function does, then figure out how to implement it in Python.

ZI = interp2(X,Y,Z,XI,YI,method) seems to be the code I require where method will be 'linear' etc, however, I am not sure what the values X,Y,Z,XI and YI should be. I guess that Z is my image, and the X and Y are co-ordinates of some kind but how would I determine then?

Comments
  • Hey pv, what function shall I use for closed curve or contour? RectBivariateSpline wanted the points to be in ascending order, which fails in case of contours.
  • is there another way, more direct, to get the vector instead of using the for loop?
  • Ok, I found the solution. You can get the diagonal of the F(Xi,Yi), and you have the final vector.