Декодирование 2n-уровневых квантованных целочисленных входов на выходы с плавающей запятой
y = udecode(u,n)
y = udecode(u,n,v)
y = udecode(u,n,v,'SaturateMode')
y = udecode(u,n) инвертирует работу uencode и восстанавливает квантованные значения с плавающей запятой из кодированного многомерного массива целых чисел u. Входной аргумент n должно быть целым числом от 2 до 32. Целое число n указывает, что для входов существует 2n уровней квантования, так что записи в u должно быть либо:
Целые числа со знаком в диапазоне [-2n/2, (2n/2) - 1]
Целые числа без знака в диапазоне [0, 2n - 1]
Входами могут быть вещественные или комплексные значения любого целочисленного типа данных (uint8, uint16, uint32, int8, int16, int32). Переполнения (записи в u вне указанных выше диапазонов) насыщаются до конечных точек интервала диапазона. Продукция y имеет те же размеры, что и u. Его записи имеют значения в диапазоне [-1,1].
y = udecode(u,n,v) расшифровывает u таким, чтобы выход y имеет значения в диапазоне [-v,v], где значение по умолчанию для v равно 1.
y = udecode(u,n,v, расшифровывает 'SaturateMode')u и обрабатывает переполнения ввода (записи в u вне [-v,v]) в соответствии с 'saturatemode', которая может быть установлена в одно из следующих значений:
'saturate' - Насыщение переливов. Это метод по умолчанию для обработки переполнений.
Записи в подписанных входных данных u значения которых выходят за пределы диапазона [-2n/2, (2n/2) - 1] присваиваются значению, определяемому ближайшей конечной точкой этого интервала.
Записи на неподписанных входах u значения которых выходят за пределы диапазона [0, 2n-1], присваиваются значению, определяемому ближайшей конечной точкой этого интервала.
'wrap' - Обернуть все переполнения в соответствии со следующим:
Записи в подписанных входных данных u значения которых выходят за пределы диапазона [-2n/2, (2n/2) - 1] переносятся обратно в этот диапазон с использованием арифметики по модулю 2n (вычисляется с помощью u = mod(u+2^n/2,2^n)-(2^n/2)).
Записи на неподписанных входах u значения которых выходят за пределы диапазона [0, 2n-1 ] переносятся обратно в требуемый диапазон перед декодированием с использованием арифметики по модулю 2n (вычисляется с использованием u = mod(u,2^n)).
Алгоритм соответствует определению для равномерного декодирования, указанному в рекомендации ITU-T G.701. Целочисленные входные значения однозначно отображаются (декодируются) от одного из 2n равномерно разнесенных целых значений до квантованных значений с плавающей запятой в диапазоне [-v,v]. Наименьшее допустимое целочисленное входное значение сопоставлено с -v и наибольшее допустимое целочисленное входное значение сопоставляется с v. Значения за пределами допустимого диапазона ввода являются либо насыщенными, либо обернутыми в соответствии со спецификацией.
Действительная и мнимая составляющие комплексных входов декодируются независимо.
[1] Международный союз электросвязи. Общие аспекты цифровых систем передачи: словарь цифровой передачи и мультиплексирования и термины импульсно-кодовой модуляции (ИКМ). Рекомендация ITU-T G.701. Март 1993 года.