我需要用双变量函数f和两个向量v1和v2调用feval(让我们说v1是x' s和v2是y' s)返回向量z = [f(v1) (1),v2(1))... f(v1(n),v2(n)]。 我怎么能这样做?
以下示例不起作用:
function z = f(x,y)
if x>0.5
z=x+y;
else
z=x+2*y;
end
end
确实
feval(f,[0.4 2 3],[4 5 6])
返回:[8.4 12 15] 而不是[8.4 7 9]。
正确的语法是什么?
答案 0 :(得分:2)
if
条件在元素方面不起作用,正如您所期望的那样。相反,仅当表达式中的所有元素(在您的情况下为if
)评估为x>0.5
时,才会输入true
分支。
要实现您的目标,请将您的功能更改为
function z = f(x,y)
ind = x>.5;
z(ind) = x(ind) + y(ind);
z(~ind) = x(~ind) + 2*y(~ind);
end
请注意logical index ind
取代if
。
对于您的特定功能,代码可以简化为
function z = f(x,y)
z = x + y + (x<=.5).*y;
end