MATLAB: Plot surfaces with random peaks

3dMATLABsurfsurface

I'm working on a project where I want to run random walks on 3D surfaces with multiple peaks. In order to do this, I'm looking for a good way to generate surfaces with random peaks. It'd be preferred that they are continuous surfaces and resemble an actual landscape. I found the 'peaks' function of Matlab especially helpful. I also cannot have valleys, but a simple changing of signs of the variable 'z' wherever it was negative gave me a pretty good landscape.
Are there any other ways that I can create such surfaces in Matlab? In the best case, I'd have a function where changing a few parameters can give me surfaces with peaks at random locations and random heights. But any help in this direction is much appreciated. Thank you.

Best Answer

What about griddata?
x = rand(20,1);
y = rand(20,1);
z = rand(20,1);
[x1,y1] = meshgrid(0:0.05:1);
z1 = griddata(x,y,z,x1,y1,'cubic');
plot3(x,y,z,'.r')
surface(x1,y1,z1)