Create 3D Surface
6 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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
0 commentaires
Réponses (2)
Walter Roberson
le 13 Fév 2012
You are going to be done in by floating point error. http://matlab.wikia.com/wiki/FAQ#Why_is_0.3_-_0.2_-_0.1_.28or_similar.29_not_equal_to_zero.3F
Also, min(find(X)) can be replaced by find(X,1)
0 commentaires
Kevin Holst
le 13 Fév 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 commentaires
Kevin Holst
le 14 Fév 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?
Voir également
Catégories
En savoir plus sur Surface and Mesh Plots dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!