overplotting 6 graphs by changing into 3 graphs
2 次查看(过去 30 天)
显示 更早的评论
Two M-files one contains differential equations and another one to run and plot the graphs. since i am using ode solver, it has two files to run.
THERE ARE 4 MATLAB CODES WITH 4 SEPARATE MATLAB M-FLIES BUT 2 M-FILES TO PRODUCE 3 PLOTS AND ANOTHER 2 M-FILES TO PRODUCE ANOTHER 3 GRAPHS. BUT I WANT TO OVERPLOTS THESE 6 PLOTS INTO 3 PLOTS ONLY.
HERE ARE THE FIRST two M-files, ONE contains differential equations and another one CONTAINS plotting the graphs. since i am using ode solver, it has two files.
% Creating recent original 3 ode without scaling any parameters and c.
function xprime= ns(t,x)
I=1200; % light intensity
%values of parameters
k_f= 6.7*10.^7;
k_d= 6.03*10.^8;
k_n=2.92*10.^9;
k_p=4.94*10.^9;
alpha =1.14437*10.^-3;
%Unknown parameters
lambda_b= 0.0087;
lambda_r =835;
gamma =2.74;
%Pool Values
P_C= 3 * 10.^(11);
P_Q= 2.87 * 10.^(10);
% initial conditions
c=x(1);
s=x(2);
q=x(3);
%Non-linear differential equations.
% dc/dt= alpha*I + c(- k_f - k_d - k_n * s - k_p*(1-q))
% ds/dt = lambda_b * c* P_C *(1-s)- lambda_r *(1-q)*s
% dq/dt = (1-q)* k_p * c *(P_C / P_Q)- gamma * q
xprime = zeros(3,1); % a column vector
xprime(1)= alpha*I + c*(- k_f - k_d - k_n * s - k_p*(1-q));
xprime(2)= lambda_b *(1-s)*c* P_C - lambda_r *(1-q)*s;
xprime(3)=(1-q)*k_p* c*(P_C / P_Q)- gamma * q;
% TO RUN the recent original odes with t= 0.2 *10^-9
format bank
close all;
clear all;
clc;
epison= 10.^-9;
%time interval
ti=0;
tf=0.2*epison;
tspan=[ti tf];
x0=[0.25 0.02 0.98]; %initial conditions
%time interval of [0 2] with initial condition vector [0.25 0.02 0.98] at time 0.
options= odeset('RelTol',1e-9, 'AbsTol',[1e-9 1e-9 1e-9]);
[t,x]= ode23s(@ns,tspan,x0,options);
dt = t(2:end)-t(1:end-1); % number of time step size it is using
%Plotting the graphs:
plot(t(2:end), t(2:end)-t(1:end-1)); % plotting the time step size.
title('Time steps for 3 recent original odes (c,s,q), time =0.2*10^-9 ');
ylabel('t'), xlabel('t_n');
figure
subplot(3,1,1), plot(t,x(:,1),'r'),grid on;
title('3 recent original odes, time =0.2*10^-9 '),ylabel('c');
subplot(3,1,2), plot(t,x(:,2),'b'),grid on;
ylabel('s');
subplot(3,1,3), plot(t,x(:,3),'g'),grid on;
ylabel('q');xlabel('Time')
Another separate two M-files which contains differential equations and another contains plotting the graphs. since i am using ode solver, it has two files.
% 3 Asymptotic expansion t=0.2*10^-9 which gives tau =0.2
function xpr= no(t,x)
epison= 10.^-9;
%values of parameters
k_f= 6.7*10.^7;
k_d= 6.03*10.^8;
k_n=2.92*10.^9;
k_p=4.94*10.^9;
%Unknown parameters
lambda_b= 0.0087;
% scale parameters
K_F= k_f * epison;
K_D= k_d * epison;
K_N= k_n * epison;
K_P= k_p * epison;
LAMBDA_B= lambda_b* epison;
%Pool Values
P_C= 3 * 10.^(11);
P_Q= 2.87 * 10.^(10);
% initial conditions
c_0=x(1);
s_0=x(2);
q_0=x(3);
%Non-linear differential equations.
% dc_0/dtau= c_0*(- K_F - K_D - K_N * s_0 - K_P*(1-q_0))
% ds_0/dtau = Lambda_B * c* P_C *(1-s_0)
% dq_0/dtau = (1-q_0)* K_P * c_0 *(P_C / P_Q)
% dc_0/dt= c_0*(- K_F - K_D - K_N * s_0 - K_P*(1-q_0))
% ds_0/dt = Lambda_B * c_0* P_C *(1-s_0)
% dq_0/dt = (1-q_0)* K_P * c_0 *(P_C / P_Q)
xpr= zeros(3,1);
xpr(1)=c_0*(- K_F - K_D - K_N * s_0 - K_P*(1-q_0));
xpr(2)= LAMBDA_B * c_0*P_C *(1-s_0);
xpr(3)= (K_P * c_0*P_C*(1-q_0)) / P_Q;
% TO RUN 3 asymptotic expansion for c_0,s_0 and q_0
format bank
close all;
clear all;
clc;
epison= 10.^-9;
%time interval
ti=0;
tf=0.2*epison;
tspan=[ti tf];
x0=[0.25 0.02 0.98]; %initial conditions
%time interval of [0 2] with initial condition vector [0.25 0.02 0.98] at time 0.
options= odeset('RelTol',1e-9, 'AbsTol',[1e-9 1e-9 1e-9]);
[t,x]= ode23s(@no,tspan,x0,options);
dt = t(2:end)-t(1:end-1); % number of time step size it is using
%Plotting the graphs:
plot(t(2:end), t(2:end)-t(1:end-1)); % plotting the time step size.
title('Time steps for 3 asymptotic expansions (c_0,s_0, q_0) at tau=0.2');
ylabel('t'), xlabel('t_n');
figure
subplot(3,1,1), plot(t,x(:,1),'r'),grid on;
title('3 asymptotic expansion when t=0.2*epsion, tau= t/epison, so tau=0.2'),ylabel('c_0');
subplot(3,1,2), plot(t,x(:,2),'b'),grid on;
ylabel('s_0');
subplot(3,1,3), plot(t,x(:,3),'g'),grid on;
ylabel('q_0');xlabel('Time')
There are 6 plots from these two separate m-files which contains 3 each graphs and there are different. Now i want to overplot 3 plots by combining 6 plots together into 3 plots. I mean one overplot containing c and c_0, another for s and s_0 and last one for q and q_0 and 3 in total. Time intervals of these 3 plots can be between 0 to 0.2*10-9. please help me. i will be very much grateful and thankful for your help.
0 个评论
回答(1 个)
Aurele Turnes
2014-8-6
You can plot multiple lines into one subplot by using the hold on command and removing the call to figure. In your first MATLAB file, write:
% figure % remove this line
subplot(3,1,1)
plot(t,x(:,1),'r');
grid on;
hold on; % add this line
title('3 recent original odes, time =0.2*10^-9 ');
ylabel('c');
subplot(3,1,2)
plot(t,x(:,2),'b');
grid on;
hold on; % add this line
ylabel('s');
subplot(3,1,3)
plot(t,x(:,3),'g');
grid on;
hold on; % add this line
ylabel('q');
xlabel('Time');
and in your second MATLAB file:
% figure % remove this line
subplot(3,1,1)
plot(t,x(:,1),'r');
grid on;
hold on; % add this line
title('3 asymptotic expansion when t=0.2*epsion, tau= t/epison, so tau=0.2');
ylabel('c_0');
subplot(3,1,2)
plot(t,x(:,2),'b');
grid on;
hold on; % add this line
ylabel('s_0');
subplot(3,1,3)
plot(t,x(:,3),'g');
grid on;
hold on; % add this line
ylabel('q_0');
xlabel('Time');
By doing this, it should not matter which MATLAB file you execute first. However, note that only the title, x-label and y-label for the second MATLAB file you execute will show. I would suggest using the legend function instead. You may also want to use different colors, markers or linewidth for your second MATLAB file to distinguish the two curves. For instance:
subplot(3,1,1), plot(t,x(:,1),'-*r','Linewidth',2, 'DisplayName', 'c_0');
legend('show')
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Line Plots 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!