我想绘制满足条件的一组点,例如:
{(x,y) : x+y = 1}
或{(x,y) : -xlog(x)-ylog(y)>10}
或{(x,y,z) : x + yz^2 < 2}
(或任何其他财产)。
我找不到如何在matlab中绘制这些东西(我发现只有如何绘制函数,无法找到如何在平面中绘制集合)。任何帮助都将受到欢迎。
谢谢
答案 0 :(得分:3)
平等和不平等的条件是两个根本不同的问题。
在相等的情况下,您可以为x
提供值并为y
求解。在您的示例中:
x = linspace(-10,10,1000); %// values of x
y = 1-x; %// your equation, solved for y
plot(x,y, '.', 'markersize', 1) %// plot points ...
plot(x,y, '-', 'linewidth', 1) %// ... or plot lines joining the points
对于不等式,您会生成一个x
,y
点的网格(例如,使用ndgrid
)并仅保留满足您条件的网格。在您的示例中:
[x, y] = ndgrid(linspace(-10,10)); %// values of x, y
ind = -x.*log(x)-y.*log(y)>10; %// logical index for values that fulfill the condition
plot(x(ind), y(ind), '.'); %// plot only the values given by ind
对于 3D ,这个想法是一样的,但您使用plot3
进行绘图。在这种情况下,可能更难从图中看到该组的形状。在您的示例中:
[x y z] = ndgrid(linspace(-10,10,100));
ind = x + y.*z.^2 < 2;
plot3(x(ind), y(ind), z(ind), '.', 'markersize', 1);