Repeat - Resample input at higher rate by repeating values - Simulink (original) (raw)
Resample input at higher rate by repeating values
Libraries:
DSP System Toolbox / Signal Operations
Communications Toolbox / Sequence Operations
DSP System Toolbox HDL Support / Signal Operations
Description
The Repeat block upsamples each channel of the_M_i-by-N input to a rate_L_ times higher than the input sample rate. To do so, the block repeats each consecutive input sample L times at the output. Specify the integer L in the Repetition count, L parameter or through the input port L.
You can use the Repeat block in triggered subsystems when you set theRate options parameter to Enforce single-rate processing
.
Examples
Ports
Input
Specify the input signal as a real or a complex-valued scalar, vector, or a matrix.
When you set Input processing toColumns as channels (frame based)
andRate options to Enforce single-rate processing
, the input can be a variable-size signal. When the input is a variable-size signal, the frame size (number of rows) and the number of channels (columns) of the signal can change during simulation.
This port is unnamed until you set Repetition count source to Input port
. (since R2023a)
Data Types: single
| double
| int8
| int16
| int32
| uint8
| uint16
| uint32
| Boolean
| fixed point
Complex Number Support: Yes
Since R2023a
Specify the repetition count L as a positive integer less than or equal to the value you specify in theMaximum repetition count, Lmax parameter_Lmax_.
Dependency
To enable this port, set the Repetition count source parameter to Input port
.
Data Types: single
| double
| int8
| int16
| int32
| uint8
| uint16
| uint32
Output
The Repeat block outputs a signal that has the same data type and complexity as the input signal in. The size of the output depends on the value of the repetition count and the option you select in the Rate options parameter.
If you set Repetition count, L to L andRate options to:
Enforce single-rate processing
–– The block maintains the input sample rate by increasing the output frame size by a factor of_L_.Allow multirate processing
–– The block resamples the signal such that the output sample rate is L times faster than the input sample rate. The output signal has the same frame size as the input signal.
When you input the repetition count through the input port L, the Rate options parameter is automatically set toEnforce single-rate processing
. In this case, the block maintains the input sample rate at the output by increasing the output frame size by a factor of_L_. (since R2023a)
The output is a variable-size signal when one or both of these conditions are met:
- Input is a variable-size signal.
- Repetition count is input through the portL.
Data Types: single
| double
| int8
| int16
| int32
| uint8
| uint16
| uint32
| Boolean
| fixed point
Complex Number Support: Yes
Parameters
Since R2023a
Specify the repetition count through one of these options:
Dialog parameter
–– The block enables the Repetition count, L parameter in the block dialog box.Input port
–– The block enables the input port L through which you specify the repetition count.
Specify the repetition count L as a positive integer. This value is the number of times that the block repeats the input value. This is the factor by which the block increases the output frame size or sample rate.
Dependency
To enable this parameter, setRepetition count source to Dialog parameter
. (since R2023a)
Since R2023a
Specify the maximum repetition Lmax as a positive integer greater than or equal to 1
. The repetition count you specify through the input port L must be less than or equal to Lmax.
Dependency
To enable this parameter, set Repetition count source to Input port
.
Specify how the block should process the input by setting this parameter to one of these options:
Columns as channels (frame based)
— When you select this option, the block treats each column of the input as a separate channel. In this mode, the block can perform single-rate or multirate processing.Elements as channels (sample based)
— When you select this option, the block treats each element of the input as a separate channel. In this mode, the block always performs multirate processing.
Dependency
To enable this parameter, setRepetition count source to Dialog parameter
. (since R2023a)
When you setRepetition count source to Input port
, the Input processing parameter is automatically set to Columns as channels (frame based)
. (since R2023a)
Specify the method by which the block upsamples the input by selecting one of these options:
Enforce single-rate processing
— When you select this option, the block maintains the input sample rate by increasing the output frame size by a factor of_L_. To select this option, you must set theInput processing parameter toColumns as channels (frame based)
.Allow multirate processing
— When you select this option, the block resamples the signal such that the output sample rate is L times faster than the input sample rate.
Dependency
To enable this parameter, setRepetition count source to Dialog parameter
. (since R2023a)
When you setRepetition count source to Input port
, the Rate options parameter is automatically set to Enforce single-rate processing
. (since R2023a)
Specify the value with which the block is initialized for cases of nonzero latency as a scalar or a matrix.
Dependencies
To enable this parameter, set Rate options to Allow multirate processing
.
Block Characteristics
Data Types | Boolean | double | fixed point | integer | single |
---|---|---|---|---|
Direct Feedthrough | no | |||
Multidimensional Signals | no | |||
Variable-Size Signals | yes | |||
Zero-Crossing Detection | no |
More About
When you set the Input processing parameter to Columns as channels (frame based)
, the block upsamples each column of the input over time. In this mode, the block can perform either single-rate or multirate processing. You can use the Rate options parameter to specify how the block upsamples the input.
- When you set the Rate options parameter to
Enforce single-rate processing
, the input and output of the block have the same sample rate. In this mode, the block outputs a signal with a proportionally larger frame_size_ than the input. The block upsamples each channel independently by repeating each row of the input matrix_L_ times at the output. For upsampling by a factor of_L_, the output frame size is L times larger than the input frame size (_M_o =_M_i*L), but the input and output frame rates are equal.
For an example that shows how the Repeat block operates in the single-rate processing mode, see Repeat Signal in Single-Rate Frame-Based Processing Mode. - When you set the Rate options parameter to
Allow multirate processing
, the block treats an _Mi_-by-N matrix input as N independent channels. The block generates the output at the faster (upsampled) rate by using a proportionally shorter frame period at the output port than at the input port. For L repetitions of the input, the output frame period is L times shorter than the input frame period (T fo =T fi/L). In this mode, the output always has the same frame size as the input.
For an example that shows how the Repeat block operates in the multirate frame-based processing mode, see Repeat Signal in Multirate Frame-Based Processing Mode.
When you set the Input processing parameter toElements as channels (sample based)
, the block treats an M_-by-N matrix input as_M*N independent channels, and upsamples each channel over time. The block upsamples each channel over time such that the output sample rate is L times higher than the input sample rate (T so =T si/L). In this mode, the output is always the same size as the input.
The Repeat block has tasking latency for a multirate multitasking operation:
- In the multirate sample-based processing mode, the block repeats the initial condition for each channel for the first L output samples. The first element of the input channel appears as output sample_L_+1. The Initial conditions parameter can be an_M_i-by-N matrix containing one value for each channel, or a scalar value that the block applies to all signal channels.
- In the multirate frame-based processing mode, the block repeats the first row of the initial condition matrix for the first L output samples, the second row of the initial condition matrix for the next_L_ output samples, and so on. The first row of the first input matrix appears in the output as sample_M_i_L_+1. TheInitial conditions parameter can be an_M_i-by-N matrix, or a scalar value that the block repeats across all elements of the_M_i-by-N matrix.
The Repeat block has zero-tasking latency for all single-rate operations. The block is in a single-rate mode if you specify a repetition count of 1
or if you set the Input processing parameter to Columns as channels (frame based)
and the Rate options parameter toEnforce single-rate processing
.
The Repeat block also has zero-tasking latency for multirate operations if you run your model in Simulink single-tasking mode.
Zero-tasking latency means that the block repeats the first input (received at_t_=0
) for the first L output samples, the second input for the next L output samples, and so on.
Extended Capabilities
Generated code relies on the memcpy
ormemset
function (string.h
) under certain conditions.
HDL Coder™ provides additional configuration options that affect HDL implementation and synthesized logic.
Best Practices
The Repeat block uses fewer hardware resources than the Upsample block. If your algorithm does not require zero-padding upsampling, use the Repeat block.
HDL Architecture
This block has one default HDL architecture.
HDL Block Properties
ConstrainedOutputPipeline | Number of registers to place at the outputs by moving existing delays within your design. Distributed pipelining does not redistribute these registers. The default is0. For more details, see ConstrainedOutputPipeline (HDL Coder). |
---|---|
InputPipeline | Number of input pipeline stages to insert in the generated code. Distributed pipelining and constrained output pipelining can move these registers. The default is0. For more details, see InputPipeline (HDL Coder). |
OutputPipeline | Number of output pipeline stages to insert in the generated code. Distributed pipelining and constrained output pipelining can move these registers. The default is0. For more details, see OutputPipeline (HDL Coder). |
Restrictions
Input processing set to Columns as channels (frame based)
is not supported.
Version History
Introduced before R2006a
You can now specify the repetition count through an input port when theRepeat block operates in the single-rate frame-based processing mode. When you specify the repetition count through the input port, you can change the value during simulation.
Starting in R2022b, when you set Input processing toColumns as channels (frame based)
and Rate options to Enforce single-rate processing
, the input can be a variable-size signal. That is, the frame size (number of rows) and the number of channels (columns) of the signal can change during simulation.
When the input is a variable-size signal, the output is also a variable-size signal.