Suppose you have Nx divisions along the variable of the first column and Ny divisions along the variable of the second column. You must reshape the columns of your matrix according to Nx and Ny
clear variables, close all
Nx = 5;
Ny = 6;
% create your matrix with random inputs
x = linspace(0,1,Nx);
y = linspace(1,2,Ny);
[X0,Y0] = meshgrid(x,y);
Z0 = X0.^2-3*X0.*Y0;
M = [X0(:) Y0(:) Z0(:)];
% The engine you want starts here -----
% reshape the columns of the matrix
X = reshape(M(:,1),Ny,Nx);
Y = reshape(M(:,2),Ny,Nx);
Z = reshape(M(:,3),Ny,Nx);
% plot
figure
surf(X,Y,Z);
view([1 1 1])
Hope it helps!