Документация Engee

Scalar Quantizer Encoder

Кодирование каждого входного значения путем сопоставления с индексом области квантования.

Тип: Scalar Quantizer Encoder

Путь в библиотеке:

/Signal Operations/Quantizers/Scalar Quantizer Encoder

Описание

Блок Scalar Quantizer Encoder сопоставляет каждое входное значение с областью квантования, сравнивая это значение с граничными точками квантователя, заданными параметром Boundary points. Блок выводит начинающийся с нуля индекс соответствующей области.

Порты

Вход

# U — входные значения данных
вектор | матрица

Details

Входные значения данных, заданные как вектор или матрица.

Входные данные, граничные точки, значения кодовой книги, квантованные выходные значения и ошибка квантования должны иметь одинаковый тип данных, если соответствующие данные присутствуют.

Если входные данные имеют тип с фиксированной точкой, это должны быть знаковые целые числа или знаковые значения с фиксированной точкой, коэффициентом масштабирования в виде степени двойки и нулевым смещением.

Типы данных

Float32, Float64, Int8, Int16, Int32, Int64, Int128, Fixed

Поддержка комплексных чисел

Нет

# B — граничные точки
вектор

Details

Граничные точки, заданные как вектор длины . Граничные точки необходимо расположить в порядке возрастания.

Входные данные, граничные точки, значения кодовой книги, квантованные выходные значения и ошибка квантования должны иметь одинаковый тип данных, если соответствующие данные присутствуют.

Зависимости

Чтобы использовать этот порт, установите для параметра Source of quantizer parameters значение Input port.

Типы данных

Float32, Float64, Int8, Int16, Int32, Int64, Int128, Fixed

Поддержка комплексных чисел

Нет

# C — значения кодовой книги
вектор

Details

Вектор квантованных выходных значений, соответствующих каждому значению индекса. Если для параметра Partitioning установлено значение Bounded, то длина вектора кодовой книги должна быть равна ; а если для параметра Partitioning установлено значение Unbounded, то длина вектора кодовой книги должна быть равна , где — длина вектора граничных точек.

Входные данные, граничные точки, значения кодовой книги, квантованные выходные значения и ошибка квантования должны иметь одинаковый тип данных, если соответствующие данные присутствуют.

Зависимости

Чтобы использовать этот порт, установите для параметра Source of quantizer parameters значение Input port и установите флажок Output codeword или Output quantization error.

Типы данных

Float32, Float64, Int8, Int16, Int32, Int64, Int128, Fixed

Поддержка комплексных чисел

Нет

Выход

# I — значения индексов
вектор | матрица

Details

Значения индексов, возвращаемые в виде вектора или матрицы того же размера, что и входные данные.

Тип данных этого порта зависит от значения параметра Index output data type.

Типы данных

Int8, Int16, Int32, UInt8, UInt16, UInt32

Поддержка комплексных чисел

Нет

# Q(U) — квантованные выходные значения
вектор | матрица

Details

Квантованные выходные значения, возвращаемые в виде вектора или матрицы того же размера, что и входные данные. Это значения кодового слова, соответствующие каждому значению индекса.

Входные данные, граничные точки, значения кодовой книги, квантованные выходные значения и ошибка квантования должны иметь одинаковый тип данных, если соответствующие данные присутствуют.

Зависимости

Чтобы использовать этот порт, установите флажок Output codeword.

Типы данных

Float32, Float64, Int8, Int16, Int32, Int64, Int128, Fixed

Поддержка комплексных чисел

Нет

# Err — ошибка квантования
вектор | матрица

Details

Ошибка квантования, возвращаемая в виде вектора или матрицы того же размера, что и входные данные. Ошибка квантования равна разности между входным и квантованным выходным значениями.

Входные данные, граничные точки, значения кодовой книги, квантованные выходные значения и ошибка квантования должны иметь одинаковый тип данных, если соответствующие данные присутствуют.

Зависимости

Чтобы использовать этот порт, установите флажок Output quantization error.

Типы данных

Float32, Float64, Int8, Int16, Int32, Int64, Int128, Fixed

Поддержка комплексных чисел

Нет

# S — состояние ограничения
вектор | матрица

Details

Значения состояния ограничения, возвращаемые в виде вектора или матрицы логических значений того же размера, что и входные данные. Когда входное значение выходит за пределы диапазона, заданного параметром Boundary points, блок выводит 1 на порт S. Когда значение находится внутри диапазона, блок выводит 0.

Зависимости

Чтобы использовать этот порт, установите флажок Output clipping status.

Типы данных

Bool

Поддержка комплексных чисел

Нет

Параметры

Основные

# Source of quantizer parameters — источник параметров квантователя
Specify via dialog | Input port

Details

Укажите источник параметров квантователя:

  • Specify via dialog — введите граничные точки и значения кодовой книги с помощью параметров в окне настроек блока.

  • Input port — задайте параметры с помощью входных портов блока. Передайте граничные точки и значения кодовой книги через порты B и C соответственно.

Значения

Specify via dialog | Input port

Значение по умолчанию

Specify via dialog

Имя для программного использования

paramSrc

Настраиваемый

Нет

Вычисляемый

Нет

# Partitioning — метод разбиения
Bounded | Unbounded

Details

Укажите один из следующих методов разбиения для интерпретации заданных граничных точек:

  • Bounded — создание ограниченного квантователя.

    Например, если заданы граничные точки [0 0.5 3.7 5.8 6.0 11], блок присваивает входным значениям от 0 до 0.5 индекс 0, входным значениям от 0.5 до 3.7 — индекс 1 и т.д. Значениям меньше 0 блок присваивает наименьший индекс 0, а значениям больше 11 — наибольший индекс 4.

  • Unbounded — создание неограниченного квантователя.

    Например, если заданы граничные точки [0 0.5 3.7 5.8 6.0 11], блок присваивает входным значениям от 0 до 0.5 индекс 1, входным значениям от 0.5 до 3.7 — индекс 2 и т.д. Значениям меньше 0 блок присваивает индекс 0, а значениям больше 11 — индекс 6.

Значения

Bounded | Unbounded

Значение по умолчанию

Bounded

Имя для программного использования

partType

Настраиваемый

Нет

Вычисляемый

Нет

# Boundary points — граничные точки
Массив вещественных чисел

Details

Введите вектор значений, представляющих граничные точки областей квантователя, в порядке возрастания. Эти значения разбивают множество входных чисел на области. Каждая область задается номером индекса.

Пусть — количество областей квантования, кодовая книга задана как [c1 c2 c3 …​ cN], а параметр Boundary points — как [p0 p1 p2 p3 …​ pN]. Для обычного квантователя выполняется неравенство p0 < c1 < p1 < c2 …​ p(N−1) < cN < pN.

Для ограниченного квантователя установите для параметра Partitioning значение Bounded. Необходимо задать N + 1 граничных точек: [p0 p1 p2 p3 …​ pN].

Для неограниченного квантователя установите для параметра Partitioning значение Unbounded. Необходимо задать N − 1 граничных точек: [p1 p2 p3 …​ p(N−1)]. Блок присваивает p0 значение −Inf, а pN — значение Inf.

Зависимости

Чтобы использовать этот параметр, установите для параметра Source of quantizer parameters значение Specify via dialog.

Значение по умолчанию

[1 2 3 4 5 6 7 8 9 10]

Имена для программного использования

BBoundary, UBoundary

Настраиваемый

Нет

Вычисляемый

Да

# Searching method — метод поиска
Linear | Binary

Details

Укажите метод поиска, который блок использует для определения области, содержащей входное значение, то есть индекса квантователя:

  • Linear — блок сравнивает входное значение с первой областью, заданной первыми двумя граничными точками. Если входное значение не попадает в эту область, блок сравнивает его со следующей областью. Процесс продолжается, пока блок не определит область, содержащую входное значение, и не сопоставит значению соответствующий индекс. Вычислительная сложность этого процесса имеет порядок , где — количество граничных точек.

  • Binary — блок сравнивает входное значение со средним значением вектора граничных точек. Если входное значение больше этой граничной точки, блок отбрасывает граничные точки, расположенные ниже среднего значения. Затем блок сравнивает входное значение со средней граничной точкой нового диапазона, определяемого оставшимися граничными точками. Процесс продолжается, пока блок не сопоставит входному значению соответствующий индекс. Вычислительная сложность этого процесса имеет порядок , где — количество граничных точек.

В большинстве случаев значение Binary обеспечивает более быстрый поиск, чем значение Linear.

Значения

Linear | Binary

Значение по умолчанию

Linear

Имя для программного использования

SearchMethod

Настраиваемый

Нет

Вычисляемый

Нет

# Tie-breaking rule — действие при совпадении входного значения с граничной точкой
Choose the lower index | Choose the higher index

Details

Укажите действие, выполняемое при совпадении входного значения с граничной точкой. Этот параметр определяет область, которой будет соответствовать значение:

  • Choose the lower index — блок относит входное значение к области с меньшим индексом.

  • Choose the higher index — блок относит входное значение к области с большим индексом.

Значения

Choose the lower index | Choose the higher index

Значение по умолчанию

Choose the lower index

Имя для программного использования

tieBreakRule

Настраиваемый

Нет

Вычисляемый

Нет

# Output codeword — вывод кодового слова
Логический тип

Details

Установите этот флажок, чтобы выводить на порт Q(U) значения кодового слова, соответствующие каждому значению индекса.

Значение по умолчанию

false (выключено)

Имя для программного использования

outQU

Настраиваемый

Нет

Вычисляемый

Нет

# Output quantization error — вывод ошибки квантования
Логический тип

Details

Установите этот флажок, чтобы выводить на порт Err ошибку квантования для каждого входного значения. Ошибка квантования равна разности между входным и квантованным выходным значениями.

Значение по умолчанию

false (выключено)

Имя для программного использования

outQError

Настраиваемый

Нет

Вычисляемый

Нет

# Codebook — квантованные выходные значения
Скаляр / массив вещественных чисел

Details

Введите вектор квантованных выходных значений, соответствующих каждому значению индекса.

Если для параметра Partitioning установлено значение Bounded, а длина вектора граничных точек равна , необходимо задать кодовую книгу длиной . Если для параметра Partitioning установлено значение Unbounded, а длина вектора граничных точек равна , необходимо задать кодовую книгу длиной .

Зависимости

Чтобы использовать этот параметр, установите для параметра Source of quantizer parameters значение Specify via dialog и установите флажок Output codeword или Output quantization error.

Значение по умолчанию

[1.5 2.5 3.5 4.5 5.5 6.5 7.5 8.5 9.5]

Имя для программного использования

codebook

Настраиваемый

Нет

Вычисляемый

Да

# Output clipping status — вывод состояния ограничения
Логический тип

Details

Установите этот флажок, чтобы выводить состояние ограничения на порт S. Когда входное значение выходит за пределы диапазона, заданного параметром Boundary points, блок выводит 1 на этот порт. Когда значение находится внутри диапазона, блок выводит 0.

Зависимости

Чтобы использовать этот параметр, установите для параметра Partitioning значение Bounded.

Значение по умолчанию

false (выключено)

Имя для программного использования

outStatus

Настраиваемый

Нет

Вычисляемый

Нет

# Action for out of range input — действие для входного значения вне диапазона
Clip | Clip and warn | Error

Details

Укажите одно из следующих действий, которое блок должен выполнить, когда входное значение выходит за пределы диапазона, заданного параметром Boundary points:

  • Clip;

  • Clip and warn;

  • Error.

Пусть граничные точки ограниченного квантователя заданы как [p0 p1 p2 p3 …​ pN], а возможные значения индексов — как [i0 i1 i2 …​ i(N−1)], где i0 = 0 и i0 < i1 < i2 < …​ < i(N−1). Чтобы присвоить любому входному значению меньше p0 индекс i0, а любому входному значению больше pN — индекс i(N−1), выберите значение Clip. Чтобы также получать предупреждение при ограничении, выберите значение Clip and warn. Чтобы при выходе входного значения за пределы диапазона останавливать симуляцию и выводить сообщение об ошибке, выберите значение Error.

Зависимости

Чтобы использовать этот параметр, установите для параметра Partitioning значение Bounded.

Значения

Clip | Clip and warn | Error

Значение по умолчанию

Clip

Имя для программного использования

invalidin

Настраиваемый

Нет

Вычисляемый

Нет

# Index output data type — тип данных выходного индекса
Int8 | UInt8 | Int16 | UInt16 | Int32 | UInt32

Details

Укажите тип данных индекса, выводимого блоком на порт I:

  • Int8;

  • UInt8;

  • Int16;

  • UInt16;

  • Int32;

  • UInt32.

Значения

Int8 | UInt8 | Int16 | UInt16 | Int32 | UInt32

Значение по умолчанию

Int32

Имя для программного использования

idtype

Настраиваемый

Нет

Вычисляемый

Да

Data Types

Fixed-point operational parameters

# Rounding mode — режим округления
Ceiling | Convergent | Floor | Nearest | Round | Zero

Details

Укажите режим округления для операций с фиксированной точкой:

  • Floor;

  • Ceiling;

  • Convergent;

  • Nearest;

  • Round;

  • Zero.

Подробнее о режимах округления см. в статье Арифметика с фиксированной точкой (Fixed-Point) в Engee.

Значения

Ceiling | Convergent | Floor | Nearest | Round | Zero

Значение по умолчанию

Floor

Имя для программного использования

roundingMode

Настраиваемый

Нет

Вычисляемый

Нет

# Saturate on integer overflow — насыщение при переполнении целого числа
Логический тип

Details

Когда этот флажок установлен, блок применяет насыщение к результату операции с фиксированной точкой. Когда флажок снят, блок возвращает результат операции с фиксированной точкой.

Подробнее о режимах переполнения см. в статье Арифметика с фиксированной точкой (Fixed-Point) в Engee.

Значение по умолчанию

false (выключено)

Имя для программного использования

overflowMode

Настраиваемый

Нет

Вычисляемый

Нет

Литература

  1. Gersho, A. and R. Gray. Vector Quantization and Signal Compression. Boston: Kluwer Academic Publishers, 1992.