Uniform decoder
Decode 2^n-level quantized integer inputs to floating-point outputs.
udecode(u, n, v = 1, saturate = TRUE)
u |
Input, a multidimensional array of integer numbers (can be complex). |
n |
Number of levels used in 2^{n}-level quantization. |
v |
Limit on the range of |
saturate |
Logical indicating to saturate (TRUE, default) or to wrap (FALSE) overflows. See Details. |
y <- udecode(u, n)
inverts the operation of uencode
and
reconstructs quantized floating-point values from an encoded multidimensional
array of integers u
. The input argument n
must be an integer
between 2 and 32. The integer n
specifies that there are 2^{n}
quantization levels for the inputs, so that entries in u
must be
either:
Signed integers in the range -2^{n}/2 to (2^{n}/2) - 1
Unsigned integers in the range 0 to 2^{n} - 1
Inputs can be real or complex values of any integer data type. Overflows
(entries in u outside of the ranges specified above) are saturated to the
endpoints of the range interval. The output has the same dimensions as the
input u
. Its entries have values in the range -1 to 1.
y <- udecode(u, n, v)
decodes u
such that the output has values
in the range -v
to v
, where the default value for v
is
1.
y <- udecode(u, n, v, saturate)
decodes u
and treats input
overflows (entries in u
outside of the range -v
to v
according to saturate
, which can be set to one of the following:
TRUE (default). Saturate overflows.
Entries in signed inputs u
whose values are outside of the
range -2^{n}/2 to (2^{n}/2) – 1 are assigned the value
determined by the closest endpoint of this interval.
Entries in unsigned inputs u
whose values are outside of
the range 0 to 2^{n}-1 are assigned the value determined by the
closest endpoint of this interval.
FALSE Wrap all overflows according to the following:
Entries in signed inputs u
whose values are outside of the
range -2^{n}/2 to (2^{n}/2) – 1 are wrapped back into that
range using modulo 2^{n} arithmetic (calculated using u =
mod(u+2^{n}/2, 2^{n})-(2^{n}/2)).
Entries in unsigned inputs u
whose values are outside of
the range 0 to 2^{n}-1 are wrapped back into the required range
before decoding using modulo 2^{n} arithmetic (calculated using
u = mod(u,2^{n})).
Multidimensional array of the same size as u
containing
floating point numbers.
The real and imaginary components of complex inputs are decoded independently.
Georgios Ouzounis, ouzounis_georgios@hotmail.com.
Conversion to R by Geert van Boxtel, G.J.M.vanBoxtel@gmail.com.
u <- c(-1, 1, 2, -5) ysat <- udecode(u, 3) # Notice the last entry in u saturates to 1, the default peak input # magnitude. Change the peak input magnitude to 6. ysatv <- udecode(u, 3, 6) # The last input entry still saturates. Wrap the overflows. ywrap = udecode(u, 3, 6, FALSE) # Add more quantization levels. yprec <- udecode(u, 5)
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.