How do I plot a circle with a given radius and center?

조회 수: 5,577 (최근 30일)
MathWorks Support Team
MathWorks Support Team 2010년 7월 26일
답변: Shengchao Lin 2023년 8월 11일
I would like to plot a circle with a given radius and center.

채택된 답변

MathWorks Support Team
MathWorks Support Team 2022년 3월 23일
편집: MathWorks Support Team 2022년 3월 23일
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)
  댓글 수: 8
Image Analyst
Image Analyst 2022년 9월 9일
@Yuvin Wickramanayake no. It means that you put that code into a script, maybe it was called testcircle.m and preceding that code you had code to call the function like
h = circle(x, y, r);
At least that's one possibility. If so, you'd need to close your circle() function with the "end" keyword, which will allow a function to be defined and called from within a script.
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
end
If you still have trouble, attach your whole m-file in a NEW question (not here).
Walter Roberson
Walter Roberson 2022년 9월 9일
You would get a different error message if you had a script with a function after and the function did not have a matching end statement.
That error could happen if you try to create a function inside a script in a MATLAB version before R2015b. It might perhaps also happen if you try to define a function at the command line (I seem to remember the wording as being slightly different for that case, but perhaps that is the wording in an older version than I am using.)

댓글을 달려면 로그인하십시오.

추가 답변 (3개)

serwan Bamerni
serwan Bamerni 2016년 2월 17일
편집: MathWorks Support Team 2023년 5월 26일
There is now a function called viscircles():
  댓글 수: 2
Walter Roberson
Walter Roberson 2016년 10월 17일
This is part of the Image Processing Toolbox
Walter Roberson
Walter Roberson 2020년 12월 25일
viscircles(app.segmented, centres, radii, 'color', 'b')

댓글을 달려면 로그인하십시오.


Steven Lord
Steven Lord 2020년 12월 25일
Another possibility is to approximate the circle using a polyshape with a large number of sides and plot that polyshape.
p = nsidedpoly(1000, 'Center', [2 3], 'Radius', 5);
plot(p, 'FaceColor', 'r')
axis equal

Shengchao Lin
Shengchao Lin 2023년 8월 11일
Using function "fplot" would be my simplest way:
Unit circle:
fplot(@(t) sin(t), @(t) cos(t));
grid on
Circle with center "x", "y" and radius "r":
x = 3; y = 4; r = 5;
fplot(@(t) r*sin(t)+x, @(t) r*cos(t)+y);
grid on;

카테고리

Help CenterFile Exchange에서 Polar Plots에 대해 자세히 알아보기

제품

Community Treasure Hunt

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

Start Hunting!

Translated by