exponenta event banner

udecode

Декодирование 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)).

Примеры

свернуть все

Создайте вектор из 8-битных целых чисел со знаком. Декодирование с тремя битами.

u = int8([-1 1 2 -5]);
ysat = udecode(u,3)
ysat = 1×4

   -0.2500    0.2500    0.5000   -1.0000

Обратите внимание на последнюю запись в u насыщается до 1, пиковой входной величины по умолчанию. Измените входную величину пика на 6.

ysatv = udecode(u,3,6)
ysatv = 1×4

   -1.5000    1.5000    3.0000   -6.0000

Последняя входная запись по-прежнему насыщается. Оберните переполнения.

ywrap = udecode(u,3,6,'wrap')
ywrap = 1×4

   -1.5000    1.5000    3.0000    4.5000

Добавьте дополнительные уровни квантования.

yprec = udecode(u,5)
yprec = 1×4

   -0.0625    0.0625    0.1250   -0.3125

Алгоритмы

Алгоритм соответствует определению для равномерного декодирования, указанному в рекомендации ITU-T G.701. Целочисленные входные значения однозначно отображаются (декодируются) от одного из 2n равномерно разнесенных целых значений до квантованных значений с плавающей запятой в диапазоне [-v,v]. Наименьшее допустимое целочисленное входное значение сопоставлено с -v и наибольшее допустимое целочисленное входное значение сопоставляется с v. Значения за пределами допустимого диапазона ввода являются либо насыщенными, либо обернутыми в соответствии со спецификацией.

Действительная и мнимая составляющие комплексных входов декодируются независимо.

Ссылки

[1] Международный союз электросвязи. Общие аспекты цифровых систем передачи: словарь цифровой передачи и мультиплексирования и термины импульсно-кодовой модуляции (ИКМ). Рекомендация ITU-T G.701. Март 1993 года.

См. также

Представлен до R2006a