Take a look at griddata and scatteredInterpolant
griddata Interpolates scattered data - generally to produce gridded data
Vq = griddata(X,Y,V, xq, yq) where xq is a row vector and yq is a
column vector, expands (xq, yq) via [Xq, Yq] = meshgrid(xq,yq).
[Xq, Yq, Vq] = griddata(X,Y,V, xq, yq) returns the grid coordinates
arrays in addition.
scatteredInterpolant performs interpolation on scattered data that
resides in 2-D or 3-D space. A scattered data set is defined by sample
points X and corresponding values v. A scatteredInterpolant object F
represents a surface of the form v = F(X). Interpolated values vq at
query points Xq are obtained by evaluating the interpolant, vq = F(Xq).