uencode

Квантуйте и закодируйте входные параметры с плавающей точкой к целочисленным выходным параметрам

Синтаксис

y = uencode(u,n)
y = uencode(u,n,v)
y = uencode(u,n,v,'SignFlag')

Описание

y = uencode(u,n) квантует записи в многомерном массиве чисел с плавающей запятой u и кодирует их как целые числа с помощью квантования 2n-уровня. n должно быть целое число между 2 и 32 (включительно). Входные параметры могут быть действительными или комплексными, дважды или с одинарной точностью. Выход y и вход u массивы, одного размера. Элементы выхода y являются беззнаковым целым с величинами в области значений [0, 2n-1]. Элементы входа u за пределами области значений [-1,1] обработаны как переполнение и насыщаются.

  • Для записей во входе u это меньше-1, значение выхода uencode 0.

  • Для записей во входе u это больше 1, значение выхода uencode 2n-1.

y = uencode(u,n,v) позволяет вход u иметь записи со значениями с плавающей точкой в области значений [-v,v] прежде, чем насыщать их (значение по умолчанию для v  1). Элементы входа u за пределами области значений [-v,v] обработаны как переполнение и насыщаются:

  • Для входных записей меньше, чем-v, значение выхода uencode  0.

  • Для входных записей, больше, чем v, значение выхода uencode 2n – 1.

y = uencode(u,n,v,'SignFlag') записи карт в многомерном массиве чисел с плавающей запятой u чьи записи имеют значения в области значений [-v,v] к целочисленному выходу y. Входные записи вне этой области значений насыщаются. Целочисленный тип выхода зависит от количества уровней квантования 2n и значение 'SignFlag', который может быть одним из следующего:

  • 'signed': Выходные параметры являются целыми числами со знаком с величинами в области значений [-2n/2(2n/2) – 1].

  • 'unsigned' (значение по умолчанию): Выходные параметры являются беззнаковым целым с величинами в области значений [0, 2n – 1].

Типы выходных данных оптимизированы для количества битов как показано в приведенной ниже таблице.

n

Целое число без знака

Целое число со знаком

2 - 8

uint8

int8

9 - 16

uint16

int16

17 - 32

uint32

int32

Примеры

свернуть все

Сопоставьте скаляры с плавающей точкой в [-1, 1] к uint8 целые числа (без знака). Произведите график лестницы. Горизонтальная ось лежит в диапазоне от-1 до 1 и вертикальная ось от 0 до 7 (т.е. 23-1).

u = -1:0.01:1;
y = uencode(u,3);
plot(u,y,'.')

Посмотрите на эффекты насыщения когда вы underspecify пиковое значение для входа.

u = -2:0.5:2;
y = uencode(u,5,1)
y = 1x9 uint8 row vector

    0    0    0    8   16   24   31   31   31

Укажите, что вы хотите подписанный выход.

u = -2:0.5:2;
y = uencode(u,5,2,'signed')
y = 1x9 int8 row vector

   -16   -12    -8    -4     0     4     8    12    15

Алгоритмы

uencode сопоставляет входное значение с плавающей точкой с целочисленным значением, определенным требованием для 2n уровни квантования. Это кодирование придерживается определения для линейного кодирования, заданного в Рекомендации G.701 ITU-T. Входной диапазон [-v,v] разделен на 2n равномерно распределенные интервалы. Введите записи в области значений [-v,v] сначала квантованы согласно этому подразделению входного диапазона, и затем сопоставлены с одним из 2n целые числа. Область значений выхода зависит от того, указываете ли вы, что хотите целые числа со знаком.

Ссылки

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

Смотрите также

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