Matlab, how to know time step size in the plot or how can i get the ou

In summary: You can access it by typing 't' in the command window. In summary, the conversation is about using the MATLAB ode23s solver to solve three nonlinear differential equations. The code is working correctly and the user wants to know the time step size being used in the plot. The time step sizes should be stored in the 't' vector output from ode23s.
  • #1
wel
Gold Member
36
0
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

Code:
 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


Code:
     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); 
    
      %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')
 
Physics news on Phys.org
  • #2
I believe your time step sizes should be stored in the 't' vector output from ode23
 

FAQ: Matlab, how to know time step size in the plot or how can i get the ou

1. How do I find the time step size in a Matlab plot?

To find the time step size in a Matlab plot, you can use the diff function on the time vector. This will give you the difference between each time point, which is your time step size. Alternatively, you can also check the XData property of the plot to see the time values associated with each data point.

2. Can I change the time step size in a Matlab plot?

Yes, you can change the time step size in a Matlab plot by adjusting the time vector used to create the plot. You can also use the set function to change the XData property of the plot to a new time vector with a different time step size.

3. How can I get the output data from my Matlab plot?

To get the output data from a Matlab plot, you can use the get function to retrieve the YData property of the plot. This will give you an array of the data points plotted on the y-axis. You can also use the copyobj function to copy the plot and its data to a new figure or workspace.

4. Is there a way to adjust the time step size automatically in Matlab?

Yes, there are several ways to automatically adjust the time step size in Matlab. One way is to use the ode23, ode45, or ode113 functions to solve differential equations with variable time steps. Another way is to use the solve function with the MaxStep option to specify the maximum time step size for solving equations.

5. Can I display the time step size on my Matlab plot?

Yes, you can display the time step size on your Matlab plot by using the text function to add a text annotation to the plot. You can specify the position and text to be displayed, which can include the time step size. Alternatively, you can also use the title function to add a title to your plot that includes the time step size information.

Back
Top