Matlab,隐式,如何使用不等式在图形上显示指定区域
Matlab, fimplicit, how to show a specified region on graph using an inequality
我正在使用 fimplicit 命令生成图表,但我的条件是 x+y<=1,我只想显示图表的那个区域。
示例:f = @(x,y) x.^2 + y.^2 - 3; fimplicit(f,[-3 3 -2 2])
如果fimplicit中没有这样的选项,我也欢迎在绘制fimplicit后修改图形的建议。 PS。当然,我的功能不是上面那个,复杂的多,所以我觉得在这个post这里用一个简单的例子会有用。顺便说一下,简单地将 -3 和 -2 更改为 0 以及 3 和 2 更改为 1 对我的原始函数不起作用。或者,对我的情况有用的方法是将图形绘制为白色,用于我不可见的部分,例如 x+y>=1,但我不知道该怎么做。
如果您使用普通函数句柄而不是匿名函数句柄,您将可以更好地控制该函数的输出值。在单独的 .m
文件中创建此函数:
function val = fun(x, y)
val = x.^2 + y.^2 - 3;
val(x+y>1) = NaN;
end
然后这样称呼它:
fimplicit(@fun, [-3 3 -2 2])
我终于解决了我的问题,使用 patch
命令。
我只是为不想显示的区域画了一个多边形,然后select填充颜色为白色。下面,我为x+y大于1的值画了一个三角形,并用白色填充。
v = [0 1; 1 0; 1 1];
f = [1 2 3];
patch('Faces',f,'Vertices',v,'FaceColor','white')
我正在使用 fimplicit 命令生成图表,但我的条件是 x+y<=1,我只想显示图表的那个区域。
示例:f = @(x,y) x.^2 + y.^2 - 3; fimplicit(f,[-3 3 -2 2])
如果fimplicit中没有这样的选项,我也欢迎在绘制fimplicit后修改图形的建议。 PS。当然,我的功能不是上面那个,复杂的多,所以我觉得在这个post这里用一个简单的例子会有用。顺便说一下,简单地将 -3 和 -2 更改为 0 以及 3 和 2 更改为 1 对我的原始函数不起作用。或者,对我的情况有用的方法是将图形绘制为白色,用于我不可见的部分,例如 x+y>=1,但我不知道该怎么做。
如果您使用普通函数句柄而不是匿名函数句柄,您将可以更好地控制该函数的输出值。在单独的 .m
文件中创建此函数:
function val = fun(x, y)
val = x.^2 + y.^2 - 3;
val(x+y>1) = NaN;
end
然后这样称呼它:
fimplicit(@fun, [-3 3 -2 2])
我终于解决了我的问题,使用 patch
命令。
我只是为不想显示的区域画了一个多边形,然后select填充颜色为白色。下面,我为x+y大于1的值画了一个三角形,并用白色填充。
v = [0 1; 1 0; 1 1];
f = [1 2 3];
patch('Faces',f,'Vertices',v,'FaceColor','white')