MATLAB Answers

Plotting a composite symbolic function using ezplot

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



No products are associated with this question.

2 Answers

Answer by Star Strider
on 7 Oct 2012

My suggestion:

y = @(x) [2*x(x <= 2)  sin(x( (x >= 2) & (x <= pi) ) )];  
ezplot(y, [0 pi])


Answer by Christian Walther Andersen on 9 Oct 2012

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

and then the same for func2. That worked for me

  1 Comment

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.

Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

MATLAB Academy

New to MATLAB?

Learn MATLAB today!