如何绘制有约束的表面图

时间:2018-12-02 16:06:18

标签: matlab plot constraints

我正在尝试绘制受三个约束约束的函数(请参见代码)

现在我尝试了以下

function value = example(x1, x2)

if x1 < 0 || x2 < 0 || x1+2*x2 > 6
    value = NaN;
else 
    value = abs(x1 - x2) + exp(-x1 - x2); 
end

[X, Y] = meshgrid(-10:10, -10:10);
Z = example(X,Y);
surf(X, Y, Z)

现在,由于无法对输入X和Y评估if子句,因此会引发错误。您知道如何实现此功能吗?

1 个答案:

答案 0 :(得分:1)

如@Cris所述,请使用logical indexing

基本思想是(x1 < 0 | x2 < 0 | x1+2*x2 > 6)将为您提供零和一的矩阵(与value相同)。一个的位置对应于真实条件。试试这个:

function value = example(x1, x2)
value = abs(x1 - x2) + exp(-x1 - x2); 
value(x1 < 0 | x2 < 0 | x1+2*x2 > 6) = NaN;

输出:

enter image description here