How to plot an elliptical surface in Matlab?
16 views (last 30 days)
Show older comments
Hello there,
Is there a way to plot an elliptical surface (elliptical plate) in Matlab? I've tried the code below (among other codes), but instead of an ellipse, I get a squared shape (I think it is because of meshgrid).
a= 8; b = 6; x=linspace(-a,a,60); y = b*sqrt(1-(x./a).^2);
x = [x; x(length(x):-1:1)]; y = [-y, y];
[x,y]=meshgrid(x,y);
%y = b*sqrt(1-(x./a).^2);
z = ones(size(x));
surface(x,y,z)
Thank you,
0 Comments
Answers (4)
Joseph Cheng
on 22 Apr 2014
Edited: Joseph Cheng
on 22 Apr 2014
depending on what you want to do with it matlab has the function
[x, y, z] = ellipsoid(0,0,0,8,6,3.25,30);
you'll only need half of the generated ellipsoid and you can flatten z to be 1.
0 Comments
Andrew Newell
on 22 Apr 2014
Edited: Andrew Newell
on 22 Apr 2014
You have defined the perimeter of an ellipse, and meshgrid just turns it into a square grid. The command patch allows you to plot your ellipse and fill it with your color of choice.
a= 8; b = 6; x=linspace(-a,a,60); y = b*sqrt(1-(x./a).^2);
x = [x fliplr(x)]; y = [-y y]; z = ones(size(x));
patch(x,y,z,'g')
axis equal
The command axis equal ensures that the ellipse has its true shape and is not distorted by the scale.
Here is another example where z varies and the view is specified:
a= 8; b = 6; x=linspace(-a,a,60); y = b*sqrt(1-(x./a).^2);
x = [x fliplr(x)]; y = [-y y]; z = sin(x);
patch(x,y,z,'g')
axis equal
view(18,22)
0 Comments
fernanr5
on 22 Apr 2014
1 Comment
Andrew Newell
on 22 Apr 2014
Please note that it is less confusing to use "Comment on this Answer" to respond to a particular answer.
See Also
Categories
Find more on Surface and Mesh Plots in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!