How to remove some parts of a Matlab plot?

19 次查看(过去 30 天)
Hello,
I just wanted to know if it is possible to remove some parts of a Matlab plot. The solution is the specified region and below is the code,
clc;
clear;
close all;
w = -pi:0.01:pi;
r1 = 3;
r2 = 4;
x1 = 2.5;
y1 = -2;
x2 = 1;
y2 = 0.5;
x11 = x1+r1*cos(w);
y11 = y1+r1*sin(w);
x22 = x2+r2*cos(w);
y22 = y2+r2*sin(w);
x = -5:0.01:5;
yy1 = x-2;
yy2 = -x+2;
plot(x11,y11,'r',x22,y22,'b',x,yy1,'k',x,yy2,'k')
grid on
axis square

采纳的回答

Star Strider
Star Strider 2021-4-3
Try this:
w = -pi:0.01:pi;
r1 = 3;
r2 = 4;
x1 = 2.5;
y1 = -2;
x2 = 1;
y2 = 0.5;
x11 = x1+r1*cos(w);
y11 = y1+r1*sin(w);
x22 = x2+r2*cos(w);
y22 = y2+r2*sin(w);
x = -5:0.01:5;
yy1 = x-2;
yy2 = -x+2;
inred1 = inpolygon(x,yy1,x11,y11);
inred2 = inpolygon(x,yy2,x11,y11);
inblu1 = inpolygon(x,yy1,x22,y22);
inblu2 = inpolygon(x,yy2,x22,y22);
yy1(inred1 & inblu1) = NaN;
yy2(inred2 & inblu2) = NaN;
figure
plot(x11,y11,'r',x22,y22,'b',x,yy1,'k',x,yy2,'k')
grid on
axis equal
producing:
I changed the axis call to make the circles appear round.
  4 个评论
Pooya Zeg
Pooya Zeg 2021-4-3
Great! Thanks. It worked. I'm just wondering if this can also work for "contour."
Star Strider
Star Strider 2021-4-3
As always, my pleasure!
With contour, likely not directly. It would be necessary to get the individual contours (difficult, hoiwever not impossible) and plot them separately, along with any other lines. Then a similar approach would likely work.
Note that contours, at least in my experience, do not overlap as the circles do here, so I have no idea how that would apply.

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Contour Plots 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by