当子函数的域不同时,Julia中的分段函数

时间:2018-08-09 03:29:40

标签: julia

假设我有一个分段函数foo(x),如果x <= 0则等于x,如果x> 0则等于log(x)。该函数接受向量作为参数。所以我尝试了以下方法:

function foo(x)
    (x .<= 0) .* x + (x .> 0) .* log(x)
end

显然,当x <0时,这将不起作用,因为它会尝试评估所有内容(即使将其与0相乘。还有更好的方法吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

我认为这是您可以尝试的方法:

foo(x) = x > 0 ? log(x) : x

假定x是标量。

然后如果v是矢量,则只需像foo.(v)这样广播它即可。