Main Content

View Generated Content for Stateflow Truth Tables

You generate content for a truth table when you simulate your model. Content regenerates whenever a truth table changes. To view the generated content of a truth table, click the View Generated Content button . Stateflow® charts that use C as the action language generate content as a graphical function. Stateflow charts that use MATLAB® as the action language generate content as MATLAB code.

How Stateflow Software Generates Graphical Functions for Truth Tables

This section describes how Stateflow software translates the logic of a C truth table into a graphical function.

In the following example, a C truth table has three conditions, four decisions and actions, and initial and final actions.

Stateflow software generates a graphical function for the preceding truth table. The top half of the flow chart looks like this:

The top half of the flow chart executes as follows:

  • Performs initial actions

  • Evaluates the conditions and stores the results in temporary data variables

    The temporary data for storing conditions is based on the labels that you enter for the conditions. If you do not specify the labels, temporary data variables appear.

The bottom half of the flow chart looks like this:

In the bottom half of the flow chart, the stored values for conditions determine which decision is true and what action to perform. Each decision appears as a fork from a connective junction with one of two possible paths:

  • A transition segment with a decision followed by a segment with the consequent action

    The action appears as a condition action that leads to the FINAL action and termination of the flow chart.

  • A transition segment that flows to the next fork for an evaluation of the next decision

    This transition segment has no condition or action.

This implementation continues from the first decision through the remaining decisions in left-to-right column order. When a decision match occurs, the action for that decision executes as a condition action of its transition segment. After the action executes, the flow chart performs the final action for the truth table and terminates. Therefore, only one action results from a call to a truth table graphical function. This behavior also means that no data dependencies are possible between different decisions.

How Stateflow Software Generates MATLAB Code for Truth Tables

Stateflow software generates the content of MATLAB truth tables as MATLAB code that represents each action as a nested function inside the main truth table function.

Nested functions offer these advantages:

  • Nested functions are independent of one another. Variables are local to each function and not subject to naming conflicts.

  • Nested functions can access all data from the main truth table function.

The generated content appears in the function editor, which provides tools for simulation and debugging.

Here is the generated content for the MATLAB truth table described in Program Actions of a Truth Table:

  • Main truth table function

    function r = ttable(x,y,z)
    
    % Initialize condition vars to logical scalar
    XEQ1 = false;
    YEQ1 = false;
    ZEQ1 = false;
    
    % Condition #1, "XEQ1"
    % x is equal to 1
    XEQ1 = logical(x == 1);
    
    % Condition #2, "YEQ1"
    % y is equal to 1
    YEQ1 = logical(y == 1);
    
    % Condition #3, "ZEQ1"
    % z is equal to 1
    ZEQ1 = logical(z == 1);
    
    if (XEQ1 && ~YEQ1 && ~ZEQ1) % D1
        A1();
    elseif (~XEQ1 && YEQ1 && ~ZEQ1) % D2
        A2();
    elseif (~XEQ1 && ~YEQ1 && ZEQ1) % D3
        A3();
    else % Default
        A4();
    end
  • Action A1

    function A1()
    % Action #1, "A1"
    % Maintain a counter and a circular vector of length 6.
    % Every time this action is called,
    % output t takes the next value of the vector.
    
    persistent values counter;
    cycle = 6;
    
    if isempty(counter)
      % Initialize counter to be zero
      counter = 0;
    else
      % Otherwise, increment counter
      counter = counter + 1;
    end
    
    if isempty(values)
      % Values is a vector of 1 to cycle
      values = zeros(1, cycle);
      for i = 1:cycle
        values(i) = i;
      end
    
      % For debugging purposes, call the MATLAB
      %  function "plot" to show values
      plot(values);
    end
    
    % Output r takes the next value in values vector
    r = values( mod(counter, cycle) + 1);
  • Actions A2, A3, and A4

    function A2()
    % Action #2, "A2"
    % set r to 2
    
    r=2;
    
    %==================================
    function A3()
    % Action #3, "A3"
    % set r to 3
    
    r=3;
    
    %==================================
    function A4()
    % Action #4, "A4"
    % set r to 4
    
    r=4;

Related Topics