Repeat execution of a subsystem while a logical expression is true
Ports & Subsystems
The While Iterator block, when placed in a Subsystem
block, repeatedly executes the contents of the subsystem during the current time step
while the value of the input condition is true or 1
. Use this block
to implement the block diagram equivalent of a while
loop in a
programming language.
The While Iterator Subsystem block is preconfigured with a While Iterator block. Placing a While Iterator block in a Subsystem block makes it an atomic subsystem.
cond
— Logical condition signalSignal with the result from evaluating a logical condition. Because
the subsystem is not externally triggered during a time step, evaluating
a condition as true (1
) or false
(0
) must reside within the subsystem.
The data type and values of the signal can be:
Logical (Boolean) — true (1
) or
false (0
) .
Numerical — true (any positive or negative number)
or false (0
).
Data Types: single
| double
| int8
| int16
| int32
| uint8
| uint16
| uint32
| Boolean
| fixed point
IC
— Initial logical conditionSignal with the initial logical condition. At the beginning of each time step:
If IC
is false (0
),
the subsystem does not execute during the time step.
If IC
is true (value not equal to
0
), the subsystem starts executing
and continues to repeat execution as long as the
cond
signal is true.
Data Types: single
| double
| int8
| int16
| int32
| uint8
| uint16
| uint32
| Boolean
| fixed point
Iteration number
— Signal with the number of iterationsSignal with the number of While Iterator Subsystem block executions during each time step.
Data Types: double
| int8
| int16
| int32
Maximum number of iterations
— Specify maximum number of iterations-1
(default) | integerSpecify maximum number of iterations allowed during a time step.
-1
Any number of iterations as long as the
cond
signal is true (value not equal to
0
) . If you specify -1
and the cond
signal never becomes false
(0
), the simulation runs in an infinite
loop. In this case, the only way to stop the simulation is to
terminate MATLAB®.
Maximum number of iterations during a time step.
Block Parameter:
MaxIters |
Type: character vector |
Values: '5'
| '-1' |
'<integer>' |
Default:
'5' |
While loop type
— Select type of blockwhile
(default) | do-while
Select type of block.
while
The While Iterator block has two inputs, a
cond
(logical condition) input and an
IC
(initial logical condition) input. The
source of the IC
signal must be external to
the While Iterator Subsystem block.
At the beginning of each time step:
If the IC
input is true (value
not equal to 0
), the blocks in
the subsystem repeat execution while the
cond
input is true. This
process continues during a time step as long as the
cond
input is true and the
number of iterations is less than or equal to the
Maximum number of
iterations.
If the IC
input is false, the
While Iterator block does not
execute the contents of the subsystem.
do-while
The While Iterator block has one input, the
cond
(while condition) input.
At each time step, the blocks in the subsystem repeat
execution while the cond
input is true (value
not equal to 0
). This process continues as
long as the cond
input is true and the number
of iterations is less than or equal to the Maximum
number of iterations.
Block Parameter:
WhileBlockType |
Type: character vector |
Values:
'while' |
'do-while' |
Default:
'while' |
States when starting
— Select block states between time stepsheld
(default) | reset
Select how to handle block states between time steps.
held
Hold block states between time steps. Block state values persist across time steps.
reset
Reset block states to their initial values at the beginning of each time step and before the first iteration loop.
Block Parameter:
ResetStates |
Type: character vector |
Values:
'held' | 'reset' |
Default:
'held' |
Show iteration number port
— Control display of output portControl display of output port for signal with number of block executions.
The value of the signal from this port starts at
and is incremented by
1
1
for each succeeding iteration.
Remove output port.
Display output port for signal with iteration number.
Selecting this parameter enables the Output data type parameter.
Block Parameter:
ShowIterationPort |
Type: character vector |
Values:
'off' | 'on' |
Default:
'off' |
Output data type
— Select output data type for current iteration number int32
(default) | uint32
| int16
| uint16
| int8
| uint8
| double
Select output data type for iteration number signal. The value of this signal is the number of iterations during a time step and the total number of iterations at the end of a time step.
int32
Signed 32-bit integer.
uint32
Unsigned 32-bit integer.
int16
Signed 16-bit integer.
uint16
unsigned 16-bit integer.
int8
Signed 8-bit integer.
uint8
Unsigned 8-bit integer.
double
Double-precision floating point.
Select the Show iteration number port check box to enable this parameter.
Block Parameter:
OutputDataType |
Type: character vector |
Value:
'int32' |
'unt32' |'int16' |
'uint16' |'int8' |
'uint8' |'double' |
Default:
'int32' |