What is the right way to interpolate a 2D grid?
What a correct solution constitutes depends on the application. What you have proposed sounds more like an inference or estimation problem (that needs to be fleshed out). It would make sense if you thought your values were noisy. 

If that were the case, try looking at Kriging.

https://en.m.wikipedia.org/wiki/Kriging

If you just want to interpolate MATLAB has interp2

Which (not limited to the  2 types mentioned above) is correct depends on what your ultimate purpose is.