The surf function only likes to plot on rectangular grids. You have two options:
1. Use the griddata function to interpolate your vectors:
[XI,YI,ZI] = griddata(x,y,z,XI,YI)
2. Hand-process your grid into a set of patches and plot each one separately using the 'patch' function.
CV