Plotting a vectorial function over a meshgrid.

1 次查看(过去 30 天)
Dear MathWorks Community, I would like to plot a vectorial function called mysurface over a 2D area like [0,2]x[0,1]. Basically the function describes a deformation of [0,2]x[0,1] into 3D. When defining a meshgrid [X,Y] = meshgrid(0:0.1:2, 0:0.1:1) I can't simply write mysurface([X,Y]), since [X,Y] isn't a vector. How do I handle that? Also I would like to plot the resulting surface, but using surface[X,Y,Z] wouldn't make sense. I need something like p=mysurface([X,Y]) and plot with surface(p(1),p(2),p(3)) but over all points of the grid. Thank you in advance.
  7 个评论
Guillaume
Guillaume 2018-10-24
It sounds like your input was actually a 3D mesh with all points having Z=0 and your output was the resulting 3D mesh after deformation and you're just plotting that resulting 3D mesh.
In which case, yes it's fairly straightforward. However, I don't understand how summing the X and Y coordinates of the input mesh helps.
Please don't close questions that have an answer. Even if the answer is not what you were looking for.
Philipp Tscherner
Philipp Tscherner 2018-10-24
编辑:Philipp Tscherner 2018-10-24
Yes you could identify (x, y) = (x, y, 0). As already said I created 3 matrices Z1, Z2, Z3. Mysurface gets the 2D mesh point (x, y) and returns the deformed point p. Summing over all x, y (the indices i, j have to run accordingly) I can define my deformed surface by Z1, Z2, Z3 and finally plot the resutling surface. Although I know it works, I'm not sure if that's the prettiest way to solve the problem:
p = mysurface(x, y)
Zk(i, j) = p(k)
surf(Z1, Z2, Z3)

请先登录,再进行评论。

回答(1 个)

KSSV
KSSV 2018-10-24
V = [2 3] ;
L = V(1) ; % length of the plate
B = V(2) ; % breadth of the plate
N = 100 ;
x = linspace(0,L,N) ;
y = linspace(0,B,N) ;
[X,Y] = meshgrid(x,y) ;
mesh(X,Y)

类别

Help CenterFile Exchange 中查找有关 Surface and Mesh Plots 的更多信息

产品


版本

R2017a

Community Treasure Hunt

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

Start Hunting!

Translated by