What data type is valid for piecewise functions?

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])

7 commentaires

piecewise is part of Symbolic Toolbox -- looks like you don't have it; the message is saying it can't find the function piecewise; in this case the input argument type part of the message is a distraction.
What does
which -all piecewise
return?
Chase Reiter
Chase Reiter le 6 Août 2020
Where should I implement "which -all piecewise" ?
Chase Reiter
Chase Reiter le 6 Août 2020
It appears as though I have already installed Symbolic Toolbox
Why not just:
x = -10:1/100:10;
y = abs(x);
plot(x,y,'r')
axis([-10 10 -10 10])
Chase Reiter
Chase Reiter le 6 Août 2020
Alan Stevens,
This script is just a tester for a bigger project I am working on. The focus of this project depends upon me using a piecewise function so I have to use the piecewise command. In the end, I won't end up using this code anyway, it's just a tester.
dpb
dpb le 6 Août 2020
Type it in at the command line to see what MATLAB returns for the piecewise function resolution.
Chase Reiter
Chase Reiter le 6 Août 2020
When I typed which -all piecewise into the command line, I got:
C:\Program Files\MATLAB\R2019a\toolbox\symbolic\symbolic\@sym\piecewise.m % sym method

Connectez-vous pour commenter.

 Réponse acceptée

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])

Plus de réponses (1)

dpb
dpb le 6 Août 2020
syms x
y = piecewise(x<0, -x, x>0, x);
fplot(y,'r')
axis([-10 10 -10 10])

Catégories

En savoir plus sur Graphics dans Centre d'aide et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by