%% View Sequential Logic Through State Transition Matrix
% 
% This example shows how to use the State Transition Matrix view for a
% state transition table in Stateflow(R).  Instead of drawing states and
% transitions graphically in a Stateflow chart, use state transition
% tables to express the modal logic in tabular format. State transition
% tables are supported only as blocks in a Simulink(R) model. For more
% information, see <docid:stateflow_ug#btbnar2-2>.

%   Copyright 2011-2019 The MathWorks, Inc.

%%

model = 'sf_debouncer_STT';
open_system(model);

%% Generate State Transition Matrix
%
% A _state transition matrix_ is an alternative, read-only view of a
% <docid:stateflow_ref#btead3a-1>. This view enables you to analyze how the
% state transition table responds to various input conditions.  For
% example, this state transition table models debouncing logic that is
% commonly used to remove jitter in switching logic. The debouncer removes
% rapid changes in the input |u| that last less than 0.1 seconds.
%
% <<../sf_debouncer_table.png>>
%
% To generate the state transition matrix view, on the *Debug* tab, click
% *Transition Matrix*.
%
% <<../sf_debouncer_stm.png>>
%
% Each row of the matrix represents a state in the state transition table.
% These states appear on the left of the matrix in the same order as in the
% state transition table.
%
% The columns of the matrix correspond to conditions or events. Every
% unique condition or event used in the state transition table is
% represented by a separate column. The order of the columns is based on
% the number of states that respond to each condition or event. Conditions
% on the left of the matrix impact more states than conditions on the right
% of the matrix.
%
% The cells in the matrix display how the chart responds to a particular
% condition or event when a state is active. If a condition or event does
% not impact a state, the corresponding cell of the matrix appears empty.
% Empty cells to the left of a nonempty entry appear in light gray. Empty
% cells to the right of the last nonempty entry in a row appear in dark
% gray.
% 
% If you change the state transition table, you must regenerate the state
% transition matrix.

%% Examine State Reactions
% 
% To see the reaction of a state to each event or condition, look at all
% the entries in a state row. To see how each state responds to an event or
% condition, look at all the entries in a column.
%
% Each entry in the matrix lists the action and destination for a
% transition in the state transition table. The execution order of the
% transition appears in the upper-right corner of each entry. The execution
% order is displayed in red if it is out of order relative to the matrix
% columns. Otherwise, the execution order is displayed in blue.

%% Filter by State Name
%
% To see a subset of state rows, you can filter rows based on state names.
% In the upper-left corner of the state transition matrix, in the *Filter
% States* search box, enter a state name or select a name from the
% drop-down list.

%% Trace Matrix Cells to State Transition Table
%
% In the state transition matrix, the state names, conditions,
% actions, and destinations are hyperlinks. To highlight the corresponding
% state, action, condition, or destination in the state transition table,
% click one of these hyperlinks.



