how to plot two graphs combined

I need to plot P=0.5+thetax on 0<x<0.33 and then P=theta(x-1) on 0.33<x<1. Do i use a for loop to do this? And if so how? Here is my code so far
x=linspace(0,1,50);
g=10;
A=0.33
M=0.125
s=(A-0.5)*M.*g-(A^2)/4;
theta=s./(2*M.*(A-0.5)^2+2*M+(A^2-A+1/3)/2);
P=(1/2)+theta*(x-1);
plot(x,P)
axis([0,1,-2,2])

 Accepted Answer

Ben11
Ben11 on 20 Aug 2014
Edited: Ben11 on 20 Aug 2014
Maybe something like this:
x=linspace(0,1,50)
g=10;
A=0.33
M=0.125
s=(A-0.5)*M.*g-(A^2)/4;
theta=s./(2*M.*(A-0.5)^2+2*M+(A^2-A+1/3)/2);
P=(1/2)+theta*(x-1);
xS = x< 0.33 % define x < 0.33
xL = x>0.33 % define x > 0.33
figure
plot(x(xS),0.5+theta*x(xS))
hold on
plot(x(xL),theta*(x(xL)-1))
hold off
axis([0,1,-2,2])

4 Comments

Thanks! Is there any way to get a vertical line joining the two?
Yes there is! I modified the code a bit so it's easier to play around with it:
x=linspace(0,1,50);
g=10;
A=0.33;
M=0.125;
s=(A-0.5)*M.*g-(A^2)/4;
theta=s./(2*M.*(A-0.5)^2+2*M+(A^2-A+1/3)/2);
P=(1/2)+theta*(x-1);
xS = x(x < 0.33);
xL = x(x > 0.33);
StartLine = 0.5+theta*(xS(end)); % Retrieve x values for starting/ending points of the line
EndLine = theta*(xL(1)-1);
figure
plot(xS,0.5+theta*xS)
hold on
plot(xL,theta*(xL-1))
line([xS(end) xL(1)],[StartLine EndLine],'Color','r','LineWidth',2)
hold off
axis([0,1,-2,2])
The line is thicker than the plots and red as well; you can customize this as you wish :)
Great! Thank you
My pleasure!

Sign in to comment.

More Answers (0)

Categories

Find more on 2-D and 3-D Plots in Help Center and File Exchange

Asked:

on 20 Aug 2014

Commented:

on 21 Aug 2014

Community Treasure Hunt

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

Start Hunting!