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

Алгоритмы

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

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

Ссылки

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

См. также

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