MATLAB: What data type is valid for piecewise functions

data typematlab functionpiecewise

I am trying to graph a simple piecewise function.
Basically, I am trying to graph:
for x < 0, y = -x,
for x>0, y = x.
My code looked like this:
x = -10:1/100:10;
y = piecewise(x<0, -x, x>0, x);
plot(x,y,'r')
axis([-10 10 -10 10])
But when I attempt to do it using the piecewise command, I get this message:
Undefined function 'piecewise' for input arguments of type 'double'.
So after that I tried using the cast command to change the data type.
Then, my code looked like this:
x = -10:1/100:10;
b = cast(x, 'single')
y = piecewise(b<0, -b, b>0, b);
plot(b,y,'r')
axis([-10 10 -10 10])
and once again, I got
Undefined function 'piecewise' for input arguments of type 'single'.
And I tried this for all data types and it didn't work. What am I missing?
Here is my code:
% This plots the x-axis
x = -100:1/100:100;
y = 0*x;
plot(x,y,'k')
hold on
%This plots the y-axis
x = -100:1/100:100;
y = 9999*x;
plot(x,y,'k')
hold on
%This is the graph
x = -10:1/100:10;
y = piecewise(x<0, -x, x>0, x);
plot(x,y,'r')
axis([-10 10 -10 10])

Best Answer

The reason it wasn't working was because I wasn't making my function symbolic.
Here is the correct code. It works perfectly.
% This plots the x-axis
x = -100:1/100:100;
y = 0*x;
plot(x,y,'k')
hold on
%This plots the y-axis
x = -100:1/100:100;
y = 9999*x;
plot(x,y,'k')
hold on
%This is the graph
syms y(x);
y(x) = piecewise(x<0, -x, x>0, x);
fplot(y)
axis([-10 10 -10 10])