Defining piecewise function in matlab

  1. 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. jcsd
  3. 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)
     
Know someone interested in this topic? Share a link to this question via email, Google+, Twitter, or Facebook

Have something to add?