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

2 次查看(过去 30 天)
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')

回答(1 个)

Geoff Hayes
Geoff Hayes 2014-7-16
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 个评论
dave
dave 2014-7-17
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 2014-7-17
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?

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Function Creation 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by