Plotting a composite symbolic function using ezplot

10 views (last 30 days)
I want two plot to functions in the same plot but on two different intervals. E.g.
f(x) = { 2*x , if 0<x<2 } { cos(x), if 2<x<pi }
I want to be able to plot both of these parts of f on their respective interval. I've tried "hold on", but that doesn't work, it only displays the last part of the function given. When I put hold on and tell it to draw both functions on the same interval, it does that. I would like to have it split up though.
Thanks in advance
Christian Walther Andersen

Answers (2)

Star Strider
Star Strider on 7 Oct 2012
My suggestion:
y = @(x) [2*x(x <= 2) sin(x( (x >= 2) & (x <= pi) ) )];
figure(1)
ezplot(y, [0 pi])

Christian Walther Andersen
I guess I could have explained my self better, but in my case, the actual functions and input were function-inputs, so they could differ. I appreciate your answer, though I found a way to wrok around it:
By converting the symbolic expression to a matlab-function (function handle), I just plot normally:
g = matlabFunction(Func1);
x = linspace(0,2,100);
plot(x,g(x));
and then the same for func2. That worked for me
  1 Comment
Star Strider
Star Strider on 9 Oct 2012
Edited: Star Strider on 9 Oct 2012
That was my first approach, but since you specified ezplot, I used it instead.
My approach (creating a vector by concatanating the values returned by the various functions with respect to different ranges of the values of the x vector) would work for function inputs as well (as it did with the sin function), since the logical indexing of the arguments that I used is independent of the function. You could probably use symbolic functions, but since those only became available with 2012a and I do not know what version you have, I opted not to use them.

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!