How can I plot the region for two inequalities?

조회 수: 72 (최근 30일)
Matthew Morrison
Matthew Morrison 2016년 7월 28일
댓글: Ayka 2022년 12월 14일
I'm looking to plot the two inequalities for the formula: abs(x+y+x.^2<3) and abs(y+x+y.^2<3)
with them both being on the same plot. How would I go about doing this please? Or any other similar example is fine.
Thanks in advance
  댓글 수: 2
Walter Roberson
Walter Roberson 2016년 9월 11일
You should restore the original question here, and open a new question about fonts.
Rena Berman
Rena Berman 2016년 10월 30일
(Answers dev) restored the original question

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

채택된 답변

Karan Gill
Karan Gill 2016년 7월 29일
Here's how to numerically evaluate the conditions and visualize them.
v = -5:0.01:5; % plotting range from -5 to 5
[x y] = meshgrid(v); % get 2-D mesh for x and y
cond1 = x+y+x.^2 < 3; % check conditions for these values
cond2 = y+x+y.^2 < 3;
cond1 = double(cond1); % convert to double for plotting
cond2 = double(cond2);
cond1(cond1 == 0) = NaN; % set the 0s to NaN so they are not plotted
cond2(cond2 == 0) = NaN;
cond = cond1.*cond2; % multiply the two condaces to keep only the common points
surf(x,y,cond)
view(0,90) % change to top view
  댓글 수: 7
Walter Roberson
Walter Roberson 2021년 4월 19일
v = -5:0.01:5; % plotting range from -5 to 5
[x y] = meshgrid(v); % get 2-D mesh for x and y
cond1 = x+y+x.^2 < 3; % check conditions for these values
cond2 = y+x+y.^2 < 3;
cond1 = double(cond1); % convert to double for plotting
cond2 = double(cond2);
cond1(cond1 == 0) = NaN; % set the 0s to NaN so they are not plotted
cond2(cond2 == 0) = NaN;
cond = cond1.*cond2.*0; % multiply the two condaces to keep only the common points
surf(x,y,cond)
Image Analyst
Image Analyst 2021년 4월 19일
The "cond" matrix is either 0 or nan, so why does it look curved/warped instead of flat?

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

추가 답변 (2개)

Image Analyst
Image Analyst 2016년 7월 29일
You could do this:
r = -5:0.01:5; % plotting range from -5 to 5
[x, y] = meshgrid(r); % Get 2-D mesh for x and y based on r
condition1 = x+y+x.^2 < 3;
condition2 = y+x+y.^2 < 3;
output = ones(length(r)); % Initialize to 1
output(~(condition1 & condition2)) = 0; % Zero out coordinates not meeting conditions.
imshow(output, 'xdata', r, 'ydata', r); % Display
axis on;
  댓글 수: 2
Ming Zhen Ellis Tiew
Ming Zhen Ellis Tiew 2020년 10월 5일
Good afternoon, I was wonder is that possible to let the y-axis start form -5 to 5 (because the picture is 5 to -5)? Thank you!
Image Analyst
Image Analyst 2020년 10월 5일
Try
axis ij;
after you've called imshow().

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


Anna
Anna 2017년 11월 20일
Is it possible to draw the region with a different color than black?
  댓글 수: 1
Ayka
Ayka 2022년 12월 14일
There are various ways. The most directy way is to construct the third dimension as the RGB color space and multiply the output by different values as the RGB value. For example, if you want to color the white center area to RGB(64,128,192), you can manipulate as
l = length(r);
colored_output = zeros(l,l,3);
colored_output(:,:,1) = output * 64; % 0 remains 0, 1 is amplified to 64
colored_output(:,:,2) = output * 128;
colored_output(:,:,3) = output * 192;
colored_output = uint8(colored_output); % Convert double to uint8 values
imshow(colored_output, 'xdata', r, 'ydata', r);
axis on
If you want to color the surrounding black area, you can just add values to the zero values like
output1 = output;
output1(output1 == 0) = 64;
colored_output(:,:,1) = output1;

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

카테고리

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

태그

Community Treasure Hunt

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

Start Hunting!

Translated by