# How to plot an Ellipse

1,513 views (last 30 days)

Show older comments

##### 1 Comment

muhammad arfan
on 18 Jun 2019

dears!!!

i have asigned to write a matlab code for 8 point to fit it in ellipse by using least square method..

i am new in using matlab and try my best but my points are not fit on ellipse. i use annealing method so that i have satisfied my teacher by my work. please chk my work and help me.

thanks

arfan khan

clc;

clear all;

close all;

r1 = rand(1);

r2 = [1+rand(1)]; % r2>r1

x0 = 0;

y0 = 0;

N = 8;

n= 100;

x1 = 1;

x2 = 2;

y1 = 1;

y2 = 2;

for i = 1:n

x = x1 +(x2-x1).*rand(N,1);

y = y1 +(y2-y1).*rand(N,1);

f = ((((x./r1).^2) +(y./r2).^2)-1).^2;

[m,l] = min(f);

z =.001* exp(10*(1-i/n));

v = z/2;

% disp('v');

% disp(v)

x1 = x(l)*v;

x2 = x(l)*v;

% disp('x1')

% disp(x1)

% disp('x2')

% disp(x2)

% ay = v./y(l);

% by = v./y(l);

% disp(v);

%

% % hold on;

disp('f');

disp(f);

end

% plot(f,'or')

plot(x,y, '*b');

x=((x(i)-x0)*cos(z)) - ((y(i)-y0)*sin(z))

y=(x(i)-x0)*sin(z)-(y(i)-y0)*cos(z)

xa(i)=rand(1)

x(i)= a+(b-a)*rand(1);

y(i)= rand(1);

for

m(i) = ((((x).^2)/a^2) + (((y).^2)/b^2)-1).^2

end

hold on;

### Accepted Answer

Roger Stafford
on 8 Sep 2013

Edited: Cris LaPierre
on 5 Apr 2019

Let (x1,y1) and (x2,y2) be the coordinates of the two vertices of the ellipse's major axis, and let e be its eccentricity.

a = 1/2*sqrt((x2-x1)^2+(y2-y1)^2);

b = a*sqrt(1-e^2);

t = linspace(0,2*pi);

X = a*cos(t);

Y = b*sin(t);

w = atan2(y2-y1,x2-x1);

x = (x1+x2)/2 + X*cos(w) - Y*sin(w);

y = (y1+y2)/2 + X*sin(w) + Y*cos(w);

plot(x,y,'y-')

axis equal

##### 11 Comments

Image Analyst
on 7 Jul 2020

Here's a full demo:

% Define parameters.

fontSize = 15;

x1 = 1;

x2 = 20;

y1 = 2;

y2 = 8;

eccentricity = 0.85;

numPoints = 300; % Less for a coarser ellipse, more for a finer resolution.

% Make equations:

a = (1/2) * sqrt((x2 - x1) ^ 2 + (y2 - y1) ^ 2);

b = a * sqrt(1-eccentricity^2);

t = linspace(0, 2 * pi, numPoints); % Absolute angle parameter

X = a * cos(t);

Y = b * sin(t);

% Compute angles relative to (x1, y1).

angles = atan2(y2 - y1, x2 - x1);

x = (x1 + x2) / 2 + X * cos(angles) - Y * sin(angles);

y = (y1 + y2) / 2 + X * sin(angles) + Y * cos(angles);

% Plot the ellipse as a blue curve.

subplot(2, 1, 1);

plot(x,y,'b-', 'LineWidth', 2); % Plot ellipse

grid on;

axis equal

% Plot the two vertices with a red spot:

hold on;

plot(x1, y1, 'r.', 'MarkerSize', 25);

plot(x2, y2, 'r.', 'MarkerSize', 25);

caption = sprintf('Ellipse with vertices at (%.1f, %.1f) and (%.1f, %.1f)', x1, y1, x2, y2);

title(caption, 'FontSize', fontSize);

xlabel('x', 'FontSize', fontSize);

ylabel('y', 'FontSize', fontSize);

% Plot the x and y. x in blue and y in red.

subplot(2, 1, 2);

plot(t, x, 'b-', 'LineWidth', 2);

grid on;

hold on;

plot(t, y, 'r-', 'LineWidth', 2);

legend('x', 'y', 'Location', 'north');

title('x and y vs. t', 'FontSize', fontSize);

xlabel('t', 'FontSize', fontSize);

ylabel('x or y', 'FontSize', fontSize);

% Set up figure

g = gcf;

g.WindowState = 'maximized';

g.NumberTitle = 'off';

g.Name = 'Ellipse Demo by Roger Stafford and Image Analyst'

Maite Osaba
on 25 Aug 2022

Edited: Maite Osaba
on 25 Aug 2022

### More Answers (5)

Azzi Abdelmalek
on 8 Sep 2013

Edited: Azzi Abdelmalek
on 12 Jun 2015

a=5; % horizontal radius

b=10; % vertical radius

x0=0; % x0,y0 ellipse centre coordinates

y0=0;

t=-pi:0.01:pi;

x=x0+a*cos(t);

y=y0+b*sin(t);

plot(x,y)

##### 3 Comments

Sandy M
on 27 Jul 2019

Hi, I do my ellipse graph

A=10;

B=7.5;

X=-10:.1:10;

Y=(7.5/10)*(1-x^2)^(1/2)

z=-(7.5/10)*(1-x^2)^(1/2)

Plot(x,y,x,z)

Its ok but i need it in cm units cause if i change properties of figure and paper to cm i get deference’s about 3 or 5 mm How can I justify the unit

Kommi
on 24 Nov 2022

For ellipse

>> clc

clear all

%length of major axis

a = input('please enter the length of major axis: ');

b = input('please enter the length of minor axis: ');

x1 = input('please input the x coordinate of the ellipse: ');

y1 = input('please enter the y coordinate of the ellipse: ');

t = -pi:0.01:pi;

x = x1+(a*cos(t));

y = y1+(b*sin(t));

plot(x,y);

##### 0 Comments

Kate
on 24 Feb 2014

##### 4 Comments

Devi Satya Cheerla
on 12 Jun 2015

Edited: Walter Roberson
on 26 Aug 2022

in the equation of ellipse X2/a2 + Y2/b2 = 1. knowing the points on ellipse, can find a and b. then enter the code below to mathematically compute y and to plot x,y.

code:

x=(0:.01:a); # x value is from 0 to 'a' and discrete with 0.01 scale#

i=1:(a*100+1); # i is to calculate y at every discrete value. it should be for 1 i.e first x value to the last x value.. as it does not have a zero, add 1#

clear y # to clear any previous y value#

for i=1:(a*100+1)

y(i)=(b^2*(1-(x(i)^2)/a^2))^.5; #from the ellipse equation y=sqrt(b2(1-(x2/a2))#

end

plot(x,y)

hold on

plot(x,-y)

hold on

plot(-x,y)

hold on

plot(-x,-y)

Sandy M
on 27 Jul 2019

hi why u product the nmber with 100?

and, if i want the graph with cm units, what i do? cause i change garaph and paper properties but i still defreces about 4 mm when i prented it

Omar Maaroof
on 13 May 2019

you can use

Ellipse2d

##### 1 Comment

Walter Roberson
on 13 May 2019

Matt J
on 24 Nov 2022

Edited: Matt J
on 24 Nov 2022

Using this FEX download,

[x1,y1,x2,y2, e]=deal(1,2,20,8 ,0.85); %hypothetical input

a = 1/2*sqrt((x2-x1)^2+(y2-y1)^2);

b = a*sqrt(1-e^2);

center=[x1+x2,y1+y2]/2;

theta=atan2d(y2-y1,x2-x1); %rotation angle

obj=ellipticalFit.groundtruth([], center,[a,b], theta);

plot(obj); hold on;

plot([x1,x2],[y1,y2],'xk'); hold off;

axis padded

##### 0 Comments

### See Also

### Categories

### Community Treasure Hunt

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

Start Hunting!