Закодируйте каждое входное значение путем соединения его с индексным значением области квантования
Квантизаторы
dspquant2
Скалярные блок-диаграммы Энкодера Квантизатора каждое входное значение в область квантования путем сравнения входного значения с граничными точками квантизатора заданы в параметре Boundary points. Блок выводит основанный на нуле индекс связанной области.
Можно выбрать, как вы хотите ввести Boundary points с помощью Source of quantizer parameters. Когда вы выберете Specify via dialog
, введите граничные точки в диалоговое окно параметров блоков. Когда вы выбираете Input port
, порт B появляется на блоке. Блок использует вход для порта B как параметр Boundary points.
Используйте параметр Boundary points, чтобы задать граничные точки для вашего квантизатора. Эти значения используются, чтобы разбить набор входных чисел в области. Каждая область задана индексом.
Позвольте N
быть количеством областей квантования. Когда книга шифров задана как [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 граничные точки, or[p1 p2 p3 ... p(N-1)]
; блок устанавливает p0
, равный-inf
и pN
, равному inf
.
Блок использует параметр Partitioning, чтобы интерпретировать граничные точки, которые вы вводите. Например, чтобы создать ограниченный квантизатор, из списка Partitioning, выбирают Bounded
и вводят следующие граничные точки:
[0 0.5 3.7 5.8 6.0 11]
Блок присваивает любые входные значения между 0 и 0.5 к индексу 0, входным значениям между 0,5 и 3.7 к индексу 1, и так далее. Блок присваивает любые значения, которые являются меньше чем 0 к индексу 0, самому низкому индексному значению. Блок присваивает любые значения, которые больше, чем 11 к индексу 4, самому высокому индексному значению.
Чтобы создать неограниченный квантизатор, из списка Partitioning, выбирают Unbounded
и вводят следующие граничные точки:
[0 0.5 3.7 5.8 6.0 11]
Блок присваивает любые входные значения между 0 и 0.5 к индексу 1, входным значениям между 0,5 и 3.7 к индексу 2, и так далее. Блок присваивает любые входные значения меньше чем 0 индексу 0 и любым значениям, больше, чем 11 к индексу 6.
Параметр Searching method определяет, как соответствующий индекс квантизатора найден. Когда вы выбираете Linear
, блок Scalar Quantizer Encoder сравнивает входное значение с первой областью, заданной первыми двумя граничными точками. Когда входное значение не находится в пределах этой области, блок затем сравнивает входное значение со следующей областью. Этот процесс продолжается, пока входное значение не полно решимости быть в области и сопоставлено с соответствующим индексным значением. Вычислительная стоимость этого процесса имеет порядок P, где P является количеством граничных точек.
Когда вы выбираете Binary
для Searching method, блок сравнивает входное значение со средним значением вектора граничных точек. Когда входное значение больше, чем эта граничная точка, блок отбрасывает граничные точки, которые ниже, чем это среднее значение. Блок затем сравнивает входное значение со средней граничной точкой новой области значений, заданной остающимися граничными точками. Этот процесс продолжается, пока входное значение не сопоставлено с соответствующим индексным значением. Вычислительная стоимость этого процесса имеет порядок log2P, где P является количеством граничных точек. В большинстве случаев опция Binary
быстрее, чем опция Linear
.
Когда входное значение совпадает с граничной точкой, параметр Tie-breaking rule определяет область, которой присвоено значение. Когда это необходимо входное значение, которое будет присвоено ниже индексируемой области, выберите Choose the lower index
. Чтобы присвоить входное значение с более высокой индексируемой областью, выберите Choose the higher index
.
Установите флажок Output codeword, чтобы вывести значения кодовой комбинации, которые соответствуют каждому индексному значению в порте Q (U).
Установите флажок Output the quantization error, чтобы вывести ошибку квантования для каждого входного значения от порта Err на этом блоке. Ошибка квантования является различием между входным значением и квантованным выходным значением.
Когда вы устанавливаете флажок Output codeword или флажок Output quantization error, необходимо также ввести значения книги шифров. Если из списка Source of quantizer parameters вы выбираете Specify via dialog
, используйте параметр Codebook, чтобы ввести вектор квантованных выходных значений, которые соответствуют каждой области. Если из списка Source of quantizer parameters вы выбираете Input port
, используйте входной порт C, чтобы задать ваши значения книги шифров.
Если для параметра Partitioning вы выбираете Bounded
, флажок Output clipping status и параметр Action for out of range input появляются. Когда вы устанавливаете флажок Output clipping status, порт S появляется на блоке. Любое время, которое входное значение вне области значений, заданной параметром Boundary points, блок, выводит 1 в порте S. Когда значение в области значений, блоки выводит 0.
Можно использовать параметр Action for out of range input, чтобы определить поведение блока, когда входное значение вне области значений, заданной параметром Boundary points. Предположим, что граничные точки для ограниченного квантизатора заданы как [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
.
Блок Scalar Quantizer Encoder принимает действительные входные параметры и фиксированной точки с плавающей точкой. Для получения дополнительной информации о типах данных, принятых каждым портом, смотрите Поддержку типов данных или Поддерживаемые Типы данных.
Значения входных данных, граничные точки и значения книги шифров могут быть введены к блоку в портах U, B, и C, соответственно. Типом данных входных параметров может быть double
, single
или Фиксированная точка.
Выходные параметры блока могут быть индексными значениями, квантованными выходными значениями, ошибкой квантования и состоянием усечения. Используйте параметр Index output data type, чтобы задать тип данных индекса вывод от блока в порте I. Можно выбрать int8
, uint8
, int16
, uint16
, int32
или uint32
. Типом данных квантованного вывода и ошибки квантования может быть double
, single
или Фиксированная точка. Значения состояния усечения вывод в порте S являются булевыми значениями.
Входные данные, граничные точки, значения книги шифров, квантовали выходные значения, и ошибка квантования должна иметь совпадающий тип данных каждый раз, когда они присутствуют.
Выберите Specify via dialog
, чтобы ввести граничные точки и значения книги шифров с помощью диалогового окна параметров блоков. Выберите Input port
, чтобы задать параметры с помощью входных портов блока. Введите граничные точки и значения книги шифров с помощью портов B и C, соответственно.
Когда ваш квантизатор будет ограничен, выберите Bounded
. Когда ваш квантизатор будет неограничен, выберите Unbounded
.
Введите вектор значений, которые представляют граничные точки областей квантизатора. Этот параметр видим, когда вы выбираете Specify via dialog
из списка Source of quantizer parameters . Настраиваемый (Simulink).
Когда вы выбираете Linear
, блок находит область, в которой входное значение расположено с помощью линейного поиска. Когда вы выбираете Binary
, блок находит область, в которой входное значение расположено с помощью двоичного поиска.
Установите этот параметр, чтобы определить поведение блока, когда входное значение совпадет с граничной точкой. Когда вы выбираете Choose the lower index
, входное значение присвоено понизить индексированную область. Когда вы выбираете Choose the higher index
, значение присвоено более высокой индексируемой области.
Установите этот флажок, чтобы вывести значения кодовой комбинации, которые соответствуют каждому индексному значению в порте Q (U).
Установите этот флажок, чтобы вывести ошибку квантования для каждого входного значения в порте Err.
Введите вектор квантованных выходных значений, которые соответствуют каждому индексному значению. Если для параметра Partitioning вы выбираете Bounded
, и ваш вектор граничных точек имеет длину N, то необходимо задать книгу шифров длины N-1. Если для параметра Partitioning вы выбираете Unbounded
, и ваш вектор граничных точек имеет длину N, то необходимо задать книгу шифров длины N+1.
Этот параметр видим, когда вы выбираете Specify via dialog
из списка Source of quantizer parameters , и вы устанавливаете флажок Output codeword или Output quantization error . Настраиваемый (Simulink).
Когда вы устанавливаете этот флажок, порт S появляется на блоке. Любое время, которое входное значение вне области значений, заданной параметром Boundary points, блок, выводит 1 в этом порте. Когда значение в области значений, блок выводит 0. Этот параметр видим, когда вы выбираете Bounded
из списка Partitioning.
Используйте этот параметр, чтобы определить поведение блока, когда входное значение будет вне области значений, заданной параметром Boundary points. Предположим, что граничные точки заданы как [p0 p1 p2 p3 ... pN]
, и индексные значения заданы как [i0 i1 i2 ... i(N-1)]
. Когда это необходимо любое входное значение меньше, чем p0
, который будет присвоен индексировать значение i0
и любые входные значения, больше, чем pN
, который будет присвоен индексировать значение i(N-1)
, выберите Clip
. Когда это необходимо, чтобы быть предупрежденными, когда усечение произойдет, выберите Clip and warn
. Когда это необходимо симуляция, чтобы остановиться и блок, чтобы отобразить ошибку, когда индексные значения будут вне области значений, выберите Error
. Этот параметр видим, когда вы выбираете Bounded
из списка Partitioning.
Задайте тип данных индекса вывод от блока в порте I. Можно выбрать int8
, uint8
, int16
, uint16
, int32
, uint32
или Inherit via back propagation
.
Задайте округляющийся режим для операций фиксированной точки как одно из следующего:
Floor
Ceiling
Convergent
Nearest
Round
Simplest
Zero
Для получения дополнительной информации смотрите округление режима.
Когда вы выбираете этот параметр, блок насыщает результат своей операции фиксированной точки. Когда вы очищаете этот параметр, блок переносит результат своей операции фиксированной точки. Для получения дополнительной информации на saturate
и wrap
, смотрите режим переполнения для операций фиксированной точки.
Gersho, А. и Р. Грэй. Векторное квантование и сжатие сигнала. Бостон: Kluwer академические издатели, 1992.
Порт | Поддерживаемые типы данных |
---|---|
U |
|
B |
|
C |
|
I |
|
Q (U) |
|
Допустить ошибку |
|
S |
|
Для получения дополнительной информации о том, какие типы данных поддерживаются для каждого режима квантизатора, смотрите Поддержку типов данных.
Квантизатор | Simulink |
Скалярный декодер квантизатора | DSP System Toolbox |
Скалярный проект квантизатора | DSP System Toolbox |
Универсальный энкодер | DSP System Toolbox |
Универсальный декодер | DSP System Toolbox |