7,549 views (last 30 days)

I would like to plot a circle with a given radius and center.

MathWorks Support Team
on 3 Jan 2019

Here is a MATLAB function that plots a circle with radius 'r' and locates the center at the coordinates 'x' and 'y':

function h = circle(x,y,r)

hold on

th = 0:pi/50:2*pi;

xunit = r * cos(th) + x;

yunit = r * sin(th) + y;

h = plot(xunit, yunit);

hold off

An alternative method is to use the 'rectangle' function:

function h = circle2(x,y,r)

d = r*2;

px = x-r;

py = y-r;

h = rectangle('Position',[px py d d],'Curvature',[1,1]);

daspect([1,1,1])

If you are using version R2012a or later and have Image Processing Toolbox, then you can use the 'viscircles' function to draw circles:

viscircles(centers,radii)

serwan Bamerni
on 17 Feb 2016

There is now a function called viscircles():

ceethal piyus
on 16 May 2019

I've applied circular hough tranform for identifing the circlular objects in an image and i got the results . But when i used the code into an app designer, insted of ploting the circles into the image where the centers are marked its ploting the circle in a different figure. How can i get both circles and center points into the same axes ( named "app.segmented" )

error

How to add the axes name to viscircles function in an app designer. I tired

viscircles(centres,radii,'color','b','parent','app.segemented'); which is giving the following error.

Sign in to comment.

amine bouabid
on 23 Jul 2018

Edited: amine bouabid
on 23 Jul 2018

hello

you can plot a circle simply by writing :

syms x; syms y;

ezplot((x-xi).^2+(y-yi).^2-r.^2)

where xi and yi are the coordinates of the center and r is the radius

Sign in to comment.

Supoj Choachaicharoenkul
on 2 Oct 2019

plot(x, y, 'bo', 'MarkerSize', 50);

Sign in to comment.

Devin Marcheselli
3 minutes ago

how do i plot a circle using the equation: (x-h).^2+(y-k).^2 = r.^2

Mark Rzewnicki
less than a minute ago

Hey there, I've been playing around with this as it relates to complex-valued functions.

It turns out that this is a very nontrivial question. There are several issues you run into along the way - you need to make some arbitrary choices about how to define your circle. I will share with you the way I found to be most natural.

Assuming y is the indpendent variable, expand the x term in the circle equation:

Bring these expanded term to the right-hand side of the equation:

Take the square root of both sides and bring k to the right-hand side:

This is the equation you can use to plot the circle. The code I came up with is a little messy (was intended for personal use in another context) but I will throw some comments in and hopefully you find it as interesting as I did.

***The big takeaway from all of this: We can deal with circles in rectangular coordinates, but it is much more natural to use polar coordinates and think of the circle as the locus of points with distance r from the center.

% Circle equation: (x-h)^2 + (y-k)^2 = r^2

% Center: (h,k) Radius: r

h = 1;

k = 1;

r = 1;

%% In x-coordinates, the circle "starts" at h-r & "ends" at h+r

%% x_res = resolution spacing between points

xmin = h - r;

xmax = h + r;

x_res = 1e-3;

X = xmin:x_res:xmax;

%% There are 2 y-coordinates on the circle for most x-coordinates.

%% We need to duplicate every x-coordinate so we can match each x with

%% its pair of y-values.

%% Method chosen: repeat the x-coordinates as the circle "wraps around"

%% e.g.: x = [0 0.1 0.2 ... end end ... 0.2 0.1 0]

N = length(X);

x = [X flip(X)];

%% ytemp1: vector of y-values as we sweep along the circle left-to-right

%% ytemp2: vector of y-values as we sweep along the circle right-to-left

%% Whether we take positive or negative values first is arbitrary

ytemp1 = zeros(1,N);

ytemp2 = zeros(1,N);

for i = 1:1:N

square = sqrt(r^2 - X(i)^2 + 2*X(i)*h - h^2);

ytemp1(i) = k - square;

ytemp2(N+1-i) = k + square;

end

y = [ytemp1 ytemp2];

%% plot the (x,y) points

%% axis scaling coefficient c: how far past the radius should the graph go?

c = 1.5;

figure(1)

plot(x,y)

axis([h-c*r h+c*r k-c*r k+c*r]);

Sign in to comment.

Sign in to answer this question.

Opportunities for recent engineering grads.

Apply Today
## 7 Comments

## Direct link to this comment

https://www.mathworks.com/matlabcentral/answers/98665-how-do-i-plot-a-circle-with-a-given-radius-and-center#comment_258691

⋮## Direct link to this comment

https://www.mathworks.com/matlabcentral/answers/98665-how-do-i-plot-a-circle-with-a-given-radius-and-center#comment_258691

## Direct link to this comment

https://www.mathworks.com/matlabcentral/answers/98665-how-do-i-plot-a-circle-with-a-given-radius-and-center#comment_260374

⋮## Direct link to this comment

https://www.mathworks.com/matlabcentral/answers/98665-how-do-i-plot-a-circle-with-a-given-radius-and-center#comment_260374

## Direct link to this comment

https://www.mathworks.com/matlabcentral/answers/98665-how-do-i-plot-a-circle-with-a-given-radius-and-center#comment_388817

⋮## Direct link to this comment

https://www.mathworks.com/matlabcentral/answers/98665-how-do-i-plot-a-circle-with-a-given-radius-and-center#comment_388817

## Direct link to this comment

https://www.mathworks.com/matlabcentral/answers/98665-how-do-i-plot-a-circle-with-a-given-radius-and-center#comment_401575

⋮## Direct link to this comment

https://www.mathworks.com/matlabcentral/answers/98665-how-do-i-plot-a-circle-with-a-given-radius-and-center#comment_401575

## Direct link to this comment

https://www.mathworks.com/matlabcentral/answers/98665-how-do-i-plot-a-circle-with-a-given-radius-and-center#comment_401589

⋮## Direct link to this comment

https://www.mathworks.com/matlabcentral/answers/98665-how-do-i-plot-a-circle-with-a-given-radius-and-center#comment_401589

## Direct link to this comment

https://www.mathworks.com/matlabcentral/answers/98665-how-do-i-plot-a-circle-with-a-given-radius-and-center#comment_471988

⋮## Direct link to this comment

https://www.mathworks.com/matlabcentral/answers/98665-how-do-i-plot-a-circle-with-a-given-radius-and-center#comment_471988

## Direct link to this comment

https://www.mathworks.com/matlabcentral/answers/98665-how-do-i-plot-a-circle-with-a-given-radius-and-center#comment_473774

⋮## Direct link to this comment

https://www.mathworks.com/matlabcentral/answers/98665-how-do-i-plot-a-circle-with-a-given-radius-and-center#comment_473774

Sign in to comment.