Plot for QSS1 Bouncing Ball Example
Plots the trajectories for the second integrator and the event detection atomics.
Call: plot_results_qss1_ball(root_model,tstart,tend)
File: DEVSPATH/02-examples/discrete/bouncing_ball_qss/plot_results_qss1_ball.m
Contents
function plot_results_qss1_ball(root_model,tstart,tend)
% get the system parameters for figure titles
dq = root_model.components.integrator2.sysparams.dq;
epsilon = root_model.components.integrator2.sysparams.epsilon;
Plot via Manually Tracked States
figure('name','Plot bouncing ball via manually tracked states','NumberTitle','off') hLine = plot([tstart tend],[0 0],'y','LineWidth',2); set(get(get(hLine,'Annotation'),'LegendInformation'),... 'IconDisplayStyle','off'); % exclude line from legend hold on grid on stairs(root_model.components.integrator2.s.qtraj(:,1),root_model.components.integrator2.s.qtraj(:,2)) plot(root_model.components.integrator2.s.traj(:,1),root_model.components.integrator2.s.traj(:,2),'rx') plot(root_model.components.ev_det.s.eventtraj(:,2),root_model.components.ev_det.s.eventtraj(:,1),'gx','LineWidth',2) set(gca,'YLim',[-5,25]); title(['Bouncing Ball QSS1 \newline dq = ',num2str(dq),', hysteresis = ',num2str(epsilon)],'FontSize',16); xlabel('time t','FontSize',16); ylabel('high x or q','FontSize',16); legend('q-trajectory','X-trajectory','event detection'); hold off
Plot with the Observe Functionality
prerequisite: set observe_flag to 1 before simulation
figure('name','Plot bouncing ball via observed states','NumberTitle','off'); hLine2 = plot([tstart tend],[0 0],'y','LineWidth',2); set(get(get(hLine2,'Annotation'),'LegendInformation'),... 'IconDisplayStyle','off'); % exclude line from legend hold on grid on integrator2_t_values = [root_model.components.integrator2.observed{:,1}]; integrator2_states = [root_model.components.integrator2.observed{:,2}]; integrator2_X = [integrator2_states.X]; integrator2_q = [integrator2_states.q]; stairs(integrator2_t_values,integrator2_q); plot(integrator2_t_values,integrator2_X,'rx'); event_t_values = [root_model.components.ev_det.observed{:,1}]; event_states = [root_model.components.ev_det.observed{:,2}]; event_se = [event_states.se]; plot(event_t_values,event_se,'gx','LineWidth',2); set(gca,'YLim',[-5,25]); title(['Bouncing Ball QSS1 \newline dq = ',num2str(dq),', hysteresis = ',num2str(epsilon)],'FontSize',16); xlabel('time t','FontSize',16); ylabel('high x or q','FontSize',16); legend('s.q','s.X','s.se'); hold off
DEVS Tbx Home Examples Modelbase << Back