用匿名函数中的数字替换 Inf

Replace Inf by a number in an anonymous function

这个post 解释了如何使用逻辑索引摆脱 Infs。问题是我没有数组; Infs 由匿名函数生成。我曾尝试使用嵌入式条件摆脱它们,但用 NaN 替换 Inf 无法正常工作。下面是我的例子:

fun = @(x) 1./x.*(x~=0)+10.*(x==0)

当x=0时应该得到10,但是在这种情况下输出是NaN,因为Inf.*0=NaN。我将不胜感激任何建议。

一个简单的解决方法是将条件移动到分母中:

fun = @(x) 1./( x.*(x~=0) + (x==0)/10 );

我刚刚找到了另一个使用复数的解决方案

a = 1e-10*1j;    % very small imaginary number
fun = @(x) real(1./(x+a).*(real(x+a)~=0)+10.*(real(x+a)==0));