我正在尝试绘制受三个约束约束的函数(请参见代码)
现在我尝试了以下
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子句,因此会引发错误。您知道如何实现此功能吗?
答案 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;
输出: