matlab:如果x> 1,可以产生NaN的快速函数

Jas*_*n S 7 matlab function nan

我正在寻找一个单行函数f = @(x) {something},如果x> = 1则产生NaN,如果x <1则产生0或1.

有什么建议?

Jas*_*n S 5

啊哈,我明白了:

f = @(x) 0./(x<1)
Run Code Online (Sandbox Code Playgroud)

对于x <1,产生0,对于x> = 1,产生NaN.


Ste*_*ins 5

这是Jason的解决方案的修改,适用于阵列.请注意,最新版本的MATLAB不会抛出被零除警告.

>> f = @(x) zeros(size(x)) ./ (x < 1)

f = 

    @(x)zeros(size(x))./(x<1)

>> f(0:.3:2)

ans =

     0     0     0     0   NaN   NaN   NaN
Run Code Online (Sandbox Code Playgroud)

更新:一位同事向我指出,Jason的原始答案适用于阵列.

>> f = @(x) 0./(x<1)

f = 

    @(x)0./(x<1)

>> f(0:.3:2)

ans =

     0     0     0     0   NaN   NaN   NaN
Run Code Online (Sandbox Code Playgroud)