MATLAB Decision Count
Metric ID
slcomp.MATLABDecisions
Description
Use this metric to count the number of decisions in MATLAB® code associated with a unit or component.
This metric analyzes:
MATLAB functions in Simulink®, including MATLAB Function blocks and Interpreted MATLAB Function blocks
MATLAB functions in Stateflow® objects
Functions and methods in MATLAB files
Supported Artifacts
You can collect this metric for:
To control what the dashboard classifies as a unit or component, see Categorize Models in Hierarchy as Components or Units.
Decision Counts for Common MATLAB Keywords
The following table shows how the metric calculates the decision count for common
MATLAB keywords. The metric uses the cyclomatic complexity value from the checkcode
function. For more information on the cyclomatic complexity value, see Measure Code Complexity Using Cyclomatic Complexity.
Computation Details
The metric:
Calculates the number of decisions in MATLAB code by taking the cyclomatic complexity calculated by the Code Analyzer and subtracting one to exclude the default path. For more information, see
checkcode
and Measure Code Complexity Using Cyclomatic Complexity.Counts decisions from
if
,elseif
,while
,for
,parfor
,try
, andcase
statements.Ignores
else
,otherwise
, andcatch
statements because they form the default path.Does not compile the model. The metric only considers static information.
Only analyzes MATLAB code that does not contain syntax errors.
Collection
To collect data for this metric:
In the Model Maintainability Dashboard, in the Design Cyclomatic Complexity Breakdown section, click the Run metrics for widget icon. The distribution of the decisions appears in the MATLAB row and Distribution column. To view a table that shows the MATLAB decision count for each model component, click one of the bins in the distribution.
Use
getMetrics
with the metric identifierslcomp.MATLABDecisions
.
Results
For this metric, instances of metric.Result
return
Value
as the number of MATLAB decisions in the MATLAB code associated with each layer of a unit or component.
Examples
Suppose you have a unit that contains only a MATLAB Function block with this code:
function y = fcn(u) if u < 0 % one decision y = -1*u; else % default path % zero decisions y = u; end end
For an if-else
statement, the number of decisions is one because
the if
statement represents one decision and the
else
statement represents the default behavior. The execution
path follows the default path if no decisions are made.
If the input to the MATLAB Function block is less than zero, the output of the MATLAB Function block is the input multiplied by negative one.
Otherwise, by default, the output of the MATLAB Function block is equal to the input of the MATLAB Function block.
In this example, the number of MATLAB decisions is one.
Suppose the code includes elseif
statements:
function y = fcn(u) if u < 0 % one decision y = -1*u; elseif u == 1 % one decision y = 1; elseif u == 2 % one decision y = 2; else % default path % zero decisions y = u; end end
elseif
statement in the code. MATLAB code that contains one if
statement, two
elseif
statements, and one else
statement
contains three decisions. The else
statement does not contribute to
the number of decisions because the else
statement is part of the
default path. The default path is not included in the number of decisions because
no decision is made to reach a default state.See Also
metric.Engine
| execute
| getAvailableMetricIds
| getMetrics