How do I plot a circle with a given radius and center?
조회 수: 4,566 (최근 30일)
이전 댓글 표시
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
2024년 9월 4일
편집: 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
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
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
2016년 2월 17일
편집: MathWorks Support Team
2023년 5월 26일
There is now a function called viscircles():
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
댓글 수: 2
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;
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Polar Plots에 대해 자세히 알아보기
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!