How to plot exact user defined function?

6 ビュー (過去 30 日間)
Agniswar
Agniswar 2014 年 3 月 25 日
編集済み: Serge Boisse 2018 年 10 月 27 日
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?

採用された回答

Walter Roberson
Walter Roberson 2014 年 3 月 25 日
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 件のコメント
Agniswar
Agniswar 2014 年 3 月 25 日
Then what can I do to plot a composite function?

サインインしてコメントする。

その他の回答 (1 件)

Serge Boisse
Serge Boisse 2018 年 10 月 27 日
編集済み: Serge Boisse 2018 年 10 月 27 日
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.

カテゴリ

Help Center および File ExchangeLine Plots についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by