Create 3D Surface

1 Ansicht (letzte 30 Tage)
Kostas Chatz
Kostas Chatz am 13 Feb. 2012
Bearbeitet: Cedric am 10 Okt. 2013
Hello,
I'm trying to create a 3D surface for simulation purposes. My code is:
function ZZ = plot_surface_test(Xl, width)
grid_points=6;
for i=1:grid_points*11
xx(i)=i/(grid_points*10);
for j=1:grid_points*11;
C(i,j)=0;
yy(j)=j/(grid_points*10);
ii=min(find((xx(i)-Xl(1,:)).^2+(yy(j)-Xl(2,:)).^2==min((xx(i)-Xl(1,:)).^2+(yy(j)-Xl(2,:)).^2)));
ZZ(i,j)=Xl(3,ii)*exp(-width(ii)*((xx(i)-Xl(1,ii)).^2+(yy(j)-Xl(2,ii)).^2));
end
end
surf(ZZ)
I would like some suggestions please according to what matrixes Xl and width should be so that this code generate a real-like surface.
Thank you

Antworten (2)

Walter Roberson
Walter Roberson am 13 Feb. 2012
Also, min(find(X)) can be replaced by find(X,1)

Kevin Holst
Kevin Holst am 13 Feb. 2012
It appears that Xl should be a 3x66 numeric matrix and width should be a 1x66. Xl(1,:) looks like it contains an x coordinate for a measurement, Xl(2,:) looks to contain the y coordinate, and Xl(3,:) contains the measurement. I'm not sure about width. It also lookes like you can get rid of C(i,j)=0; unless that's used somewhere later for something.
What else do you need to know about this?
  2 Kommentare
Kostas Chatz
Kostas Chatz am 13 Feb. 2012
I've tried numeric matrixes and the result is not a a real-like surface
Specificly i've put for Xl:
for i=1:grid_points;
for j=1:grid_points;
Xl(1,(i-1)*grid_points+j)=i/grid_points;
Xl(2,(i-1)*grid_points+j)=j/grid_points;
Xl(3,(i-1)*grid_points+j)=maximum_height_surface*rand;
end
end
but i don't have any idea for width.
I've tried an integer instead of vector width and the only thing i get is some random peaks that are not connected to each other.
Kevin Holst
Kevin Holst am 14 Feb. 2012
I just put in width = ones(1,66) and it worked for me. It produces a surface that has small curved square plateaus in a 6x6 square. Unfortunately, I'm not in a place where I can upload at screenshot. What are you expecting the surface to look like?

Melden Sie sich an, um zu kommentieren.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by