MATLAB: Function outputs NaN for a cell which is assigned a separate value

functionMATLAB

I created the following function:
function [x] = f(y)
x = (y==0).*1+(y~=0).*(1./y);
With the following input, it returns this:
f([-3:3])
ans =
-0.3333 -0.5000 -1.0000 NaN 1.0000 0.5000 0.3333
The value should be 1 when y == 0 but it shows NaN instead (assumably by evaluating 1./y when y == 0)

Best Answer

  • since you want 1 when y is zero, you need something like
    y(y==0) = 1;
    y(y~=0) = 1./y;
    x = y;