如何正确创建多变量分段函数的函数句柄?

How to correctly create function handle for multi-variable piecewise function?

我想为以下内容使用匿名函数创建一个 function_handle:

f(x,y) = 1, if 2 <= x <= 3 and y = 1,
f(x,y) = 0, otherwise

我以为我可以做到:

f @(x,y) 1.*((x >= 2) && (x <= 3) & (y == 1));

当我尝试通过 f(ones(3,1),ones(3,1)) 计算此函数时,我收到错误消息:

Operands to the || and && operators must be convertible to logical scalar values.

我还注意到,当我只输入标量 xy 时,我的函数似乎工作正常。 我的问题是:如何正确定义我的函数句柄,使其适用于 vectors/arrays?

如果您打算将 xy 用作 相同 的 vectors/matrices,则此处需要一个 &方面。

f = @(x,y) (x>=2) & (x<=3) & (y==1);  %Multiplying by 1 is also not needed here

推荐阅读:What's the difference between & and && in MATLAB?