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

Learn moreOpportunities for recent engineering grads.

Apply Today**New to MATLAB?**

Asked by Christian Walther Andersen
on 7 Oct 2012

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.*

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

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); plot(x,g(x));

and then the same for func2. That worked for me

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.

## 0 Comments