How to plot exact user defined function?

I have defined a function like this
function z=agni(x)
if x > 0
z=x;
else
z = x.^2;
end
But in the time of plotting plot(x,agni(x)) with x =[-2:.01:2] generate only the curve of x^2. WHY?

 Réponse acceptée

Walter Roberson
Walter Roberson le 25 Mar 2014
if x > 0
means
if all(x > 0)
so if you pass in a vector of x then if any x in the vector is <= 0 then the "if" will not be true.
You should research logical indexing.

1 commentaire

Agniswar
Agniswar le 25 Mar 2014
Then what can I do to plot a composite function?

Connectez-vous pour commenter.

Plus de réponses (1)

Serge Boisse
Serge Boisse le 27 Oct 2018
Modifié(e) : Serge Boisse le 27 Oct 2018
Hello, You should understand that your function accepts a vector of values, not a scalar. then it must return a vector of the same length (that will be plotted) So you may rewrite your function as follows :
function z=agni(x)
z = x; % this is a vector !
ind = (x<0); % logical array : 1 if corresponding element of x is <0
z(ind) = z(ind).^2;
end
Hope this helps. If you prefer to code functions "the classical way", have a look at symbolic functions.

Catégories

En savoir plus sur Geographic Plots 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