如何正确创建多变量分段函数的函数句柄?
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.
我还注意到,当我只输入标量 x
和 y
时,我的函数似乎工作正常。
我的问题是:如何正确定义我的函数句柄,使其适用于 vectors/arrays?
如果您打算将 x
和 y
用作 相同 的 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?
我想为以下内容使用匿名函数创建一个 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.
我还注意到,当我只输入标量 x
和 y
时,我的函数似乎工作正常。
我的问题是:如何正确定义我的函数句柄,使其适用于 vectors/arrays?
如果您打算将 x
和 y
用作 相同 的 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?