DSP Blockset | ![]() ![]() |
Quantize and encode a floating-point input to an integer output.
Library
Description
The Uniform Encoder block performs the following two operations on each floating-point sample in the input vector or matrix:
In the first step, the block quantizes an input value to one of 2B uniformly spaced levels in the range [-V, (1-21-B)V], where B is specified by the Bits parameter and V is specified by the Peak parameter. The quantization process rounds both positive and negative inputs downward to the nearest quantization level, with the exception of those that fall exactly on a quantization boundary. The real and imaginary components of complex inputs are quantized independently.
The number of bits, B, can be any integer value between 2 and 32, inclusive. Inputs greater than (1-21-B)V or less than -V saturate at those respective values. The real and imaginary components of complex inputs saturate independently.
In the second step, the quantized floating-point value is uniquely mapped (encoded) to one of 2B integer values. If the Output type is set to Unsigned integer, the smallest quantized floating-point value, -V, is mapped to the integer 0, and the largest quantized floating-point value, (1-21-B)V, is mapped to the integer 2B-1. Intermediate quantized floating-point values are linearly (uniformly) mapped to the intermediate integers in the range [0, 2B-1]. For efficiency, the block automatically selects an unsigned output data type (uint8
, uint16
, or uint32
) with the minimum number of bits equal to or greater than B.
If the Output type is set to Signed integer, the smallest quantized floating-point value, -V, is mapped to the integer -2B-1, and the largest quantized floating-point value, (1-21-B)V, is mapped to the integer 2B-1-1. Intermediate quantized floating-point values are linearly mapped to the intermediate integers in the range [-2B-1, 2B-1-1]. The block automatically selects a signed output data type (int8
, int16
, or int32
) with the minimum number of bits equal to or greater than B.
Inputs can be real or complex, double or single precision. The output data types that the block uses are shown in the table below. Note that most of the blocks in the DSP Blockset accept only double precision inputs. Use the Simulink Data Type Conversion block to convert integer data types to double precision. See "Working with Data Types" in the Simulink documentation for a complete discussion of data types, as well as a list of Simulink blocks capable of reduced-precision operations.
2 to 8 |
uint8 |
int8 |
9 to 16 |
uint16 |
int16 |
17 to 32 |
uint32 |
int32 |
The Uniform Encoder block operations adhere to the definition for uniform encoding specified in ITU-T Recommendation G.701.
Example
The figure below illustrates uniform encoding with the following parameter settings:
The real and complex components of each input (horizontal axis) are independently quantized to one of 23 distinct levels in the range [-2,1.5]
and then mapped to one of 23 integer values in the range [0,7]
.
-2.0 is mapped to 0 -1.5 is mapped to 1 -1.0 is mapped to 2 -0.5 is mapped to 3 0.0 is mapped to 4 0.5 is mapped to 5 1.0 is mapped to 6 1.5 is mapped to 7
The table below shows the results for a few particular inputs.
The output data type is automatically set to uint8
, the most efficient format for this input range.
Dialog Box
uint8
, uint16
, or uint32
, while signed outputs are int8
, int16
, or int32
.References
General Aspects of Digital Transmission Systems: Vocabulary of Digital Transmission and Multiplexing, and Pulse Code Modulation (PCM) Terms, International Telecommunication Union, ITU-T Recommendation G.701, March, 1993
Supported Data Types
To learn how to convert to the above data types in MATLAB and Simulink, see Supported Data Types and How to Convert to Them.
See Also
Data Type Conversion |
Simulink |
Quantizer |
Simulink |
Uniform Decoder |
DSP Blockset |
udecode |
Signal Processing Toolbox |
uencode |
Signal Processing Toolbox |
Also see Quantizers for a list of all the blocks in the Quantizers library.
![]() | Uniform Decoder | Unwrap | ![]() |