Scalar Quantizer Encoder

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

Библиотека

Quantizers

dspquant2

  • Scalar Quantizer Encoder block

Описание

Блок Скаляр Quantzer Энкодера преобразует каждый вход значение в область квантования путем сравнения значения входа с точками контура квантователя, заданными в параметре 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 граничные точки или [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 Quantzer Encoder сравнивает входное значение с первой областью, заданной первыми двумя граничными точками. Когда значение входа не попадает в эту область, блок затем сравнивает значение входа с следующей областью. Этот процесс продолжается до тех пор, пока не будет определено, что входное значение находится внутри области и связано с соответствующим значением индекса. Вычислительная стоимость этого процесса относится к порядку P, где P - количество граничных точек.

Когда вы выбираете Binary для Searching method блок сравнивает входное значение со средним значением вектора граничных точек. Когда входное значение больше этой граничной точки, блок отбрасывает граничные точки, которые ниже этого среднего значения. Затем блок сравнивает входное значение со средней граничной точкой новой области значений, заданной оставшимися граничными точками. Этот процесс продолжается до тех пор, пока входное значение не будет связано с соответствующим значением индекса. Вычислительная стоимость этого процесса относится к порядку log2 <reservedrangesplaceholder2>, где 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 Quantzer Encoder принимает реальные входы с плавающей и фиксированной точками. Дополнительные сведения о типах данных, принятых каждым портом, см. в разделах Поддержка типов данных или Поддерживаемые типы данных.

Поддержка типа данных

Значения входных данных, граничные точки и значения кодовой книги могут быть введены в блок в портах U, B и C, соответственно. Тип данных входов может быть double, single, или Фиксированная точка.

Выходами блока могут быть значения индекса, квантованные выходные значения, ошибка квантования и статус усечения. Используйте параметр Index output data type, чтобы задать тип данных индекса, выводимого из блока в порту I. Можно выбрать int8, uint8, int16, uint16, int32, или uint32. Тип данных квантованного выхода и ошибка квантования могут быть double, single, или Фиксированная точка. Значения статуса усечения, выводимые в порте S, являются логическими значениями.

Примечание

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

Диалоговое окно

Главная вкладка

Source of quantizer parameters

Выберите Specify via dialog для ввода граничных точек и значений кодовой книги с помощью диалогового окна параметров блоков. Выберите Input port чтобы задать параметры с помощью входных портов блока. Введите граничные точки и значения кодовой книги, используя порты B и C, соответственно.

Partitioning

Когда квантователь ограничен, выберите Bounded. Когда квантователь не ограничен, выберите Unbounded.

Boundary points

Введите вектор значений, которые представляют граничные точки областей квантователя. Этот параметр видим, когда вы выбираете Specify via dialog из списка Source of quantizer parameters . Настраиваемый (Simulink).

Searching method

Когда вы выбираете Linearблок находит область, в которой находится входное значение, используя линейный поиск. Когда вы выбираете Binaryблок находит область, в которой находится входное значение, используя двоичный поиск.

Tie-breaking rule

Установите этот параметр, чтобы определить поведение блока, когда входное значение совпадает с граничной точкой. Когда вы выбираете Choose the lower indexзначение входа присваивается нижней индексированной области. Когда вы выбираете Choose the higher indexзначение присваивается области с более высоким индексом.

Output codeword

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

Output quantization error

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

Codebook

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

Этот параметр видим, когда вы выбираете Specify via dialog из списка Source of quantizer parameters и установите флажок Output codeword или Output quantization error . Настраиваемый (Simulink).

Output clipping status

При установке этого флажка на блоке появляется порт S. В любой момент, когда значение входа находится вне области значений, заданной параметром Boundary points, блок выводит 1 в этом порте. Когда значение находится внутри области значений, блок выводит 0. Этот параметр видим, когда вы выбираете Bounded из списка Partitioning.

Action for out of range input

Используйте этот параметр, чтобы определить поведение блока, когда вход значение находится вне области значений, заданной параметром 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.

Index output data type

Укажите тип данных индекса, выводимого из блока в порту I. Можно выбрать int8, uint8, int16, uint16, int32, uint32, или Inherit via back propagation.

Вкладка «Типы данных»

Rounding mode

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

  • Floor

  • Ceiling

  • Convergent

  • Nearest

  • Round

  • Simplest

  • Zero

Для получения дополнительной информации смотрите режим округления.

Saturate on integer overflow

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

Ссылки

Гершо, А. и Р. Грей. Векторное квантование и сжатие сигналов. Boston: Kluwer Academic Publishers, 1992.

Поддерживаемые типы данных

ПортПоддерживаемые типы данных

U

  • Плавающая точка двойной точности

  • Плавающая точка с одной точностью

  • Фиксированная точка (только со знаком)

  • 8-, 16- и 32-битные целые числа со знаком

B

  • Плавающая точка двойной точности

  • Плавающая точка с одной точностью

  • Фиксированная точка (только со знаком)

  • 8-, 16- и 32-битные целые числа со знаком

C

  • Плавающая точка двойной точности

  • Плавающая точка с одной точностью

  • Фиксированная точка (только со знаком)

  • 8-, 16- и 32-битные целые числа со знаком

Я

  • 8-, 16- и 32-битные целые числа со знаком

  • 8-, 16- и 32-битные беззнаковые целые числа

Qu

  • Плавающая точка двойной точности

  • Плавающая точка с одной точностью

  • Фиксированная точка (только со знаком)

  • 8-, 16- и 32-битные целые числа со знаком

Допустить ошибку

  • Плавающая точка двойной точности

  • Плавающая точка с одной точностью

  • Фиксированная точка (только со знаком)

  • 8-, 16- и 32-битные целые числа со знаком

S

  • Булев

Дополнительные сведения о том, какие типы данных поддерживаются для каждого режима квантования, см. в разделе Поддержка типа данных.

Расширенные возможности

Генерация кода C/C + +
Сгенерируйте код C и C++ с помощью Coder™ Simulink ®

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