Defining piecewise function in matlab

1. Oct 27, 2010

tmpr

How would you write piecewise functions in matlab that can take vector inputs?

Here's a function that I'm trying to write.
Code (Text):

function y=g(x)
if x==0
y=1;
else
y=sin(x)./x;
end

If I call g([0,pi/2]), I want it to return [0,2/pi], but what I get instead is [NaN,2/pi]. I'm guessing when I write x==0, matlab is comparing the entire input to 0.

2. Nov 3, 2010

matematikawan

Try this to eliminate the problem at x=0.

g = @(x) 1.*(x==0) + (x~=0).*sin(x)./(x+(x==0));
t=[0 pi/2];
g(t)