Matlab, how to know time step size in the plot or how can i get the output of time step size?

3 views (last 30 days)
Since i am using matlab ode23s solver, it contains two matlab files . One contain the differential equations and another contains plotting and to run the m-files. The code are working perfectly. Now i want to know the time step size that is using on the plot. How can i get the output of time step size. I would like to know the time step size that is using on the plot too. please help me.
=>
% 3 Nonlinear differential equations after Asymptotic expansion
% with 1-c in dc/dt differential equation
function xpr= no(t,x)
%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 * 10.^-9;
K_D= k_d * 10.^-9;
K_N= k_n * 10.^-9;
K_P= k_p * 10.^-9;
LAMBDA_B= lambda_b*10.^-9;
%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)
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)= (1-q_0)* K_P * c_0 *(P_C / P_Q);
xpr= [xpr(1);xpr(2);xpr(3)];
% TO RUN the 3 nonlinear differential equations after asymptotic expansion. % with 1-c in dc/dt differential equation
format bank
close all;
clear all;
clc;
%time interval
ti=0;
tf=0.2;
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-4, 'AbsTol',[1e-4 1e-4 1e-4]);
[t,x]= ode23s(@no,tspan,x0,options);
tDiffs = diff(t);
%Plotting the graphs:
figure
subplot(3,1,1), plot(t,x(:,1),'r'),grid on;
title('3 nonlinear differential equations (with 1-c)'),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')

Answers (1)

Geoff Hayes
Geoff Hayes on 16 Jul 2014
Just after your code executes
[t,x]= ode23s(@no,tspan,x0,options);
add
tDiffs = diff(t);
which will return the difference between adjacent elements in t...which should correspond to the time step sizes used in the plots (as t is used in each plot call).
  4 Comments
dave
dave on 17 Jul 2014
yes. the code is in this order
[t,x]= ode23s(@no,tspan,x0,options);
tDiffs = diff(t);
Now how can i see the time step size it is using in the plot?
Geoff Hayes
Geoff Hayes on 17 Jul 2014
Look at tDiffs - it will be the difference between adjacent elements, and this difference should be the time step size. Are each of the values in tDiffs identical?

Sign in to comment.

Categories

Find more on Function Creation in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!