Vector Quantizer Encoder

Для заданного входа найдите индекс ближайшего кодового слова на основе евклидовой или взвешенной евклидовой меры расстояния

Библиотека

Quantizers

dspquant2

  • Vector Quantizer Encoder block

Описание

Блок Vector Quantzer Encoder сравнивает каждый входной вектор-столбец с векторами кодового слова в матрице кодовой книги. Каждый столбец этой матрицы кодовой книги является кодовым словом. Блок находит вектор кодового слова, ближайший к входу вектора-столбца и возвращает его нулевой индекс. Этот блок поддерживает реальные сигналы с плавающей точкой и с фиксированной точкой на всех входных портах.

Блок находит ближайшее кодовое слово путем вычисления искажения. Блок использует два метода вычисления искажений: Евклидову квадратичную невязку (невзвешенную) и взвешенную Евклидову квадратичную невязку. Рассмотрим кодовую книгу, CB=[CW1CW2...CWN]. Эта кодовая книга имеет N кодовых слов; каждое кодовое слово имеет k элементов. i-е кодовое слово определяется как вектор-столбец ,CWi=[a1ia2i...aki]. Многоканальный вход имеет M столбцов и определяется как U=[U1U2...UM], где p-й входной вектор-столбец Up=[u1pu2p...ukp]. Квадратичная невязка (невзвешенная) вычисляется с помощью уравнения

D=j=1k(ajiujp)2

Взвешенная квадратичная невязка вычисляется с помощью уравнения

D=j=1kwj(ajiujp)2

где весовой коэффициент определяется как W=[w1w2...wk]. Индекс кодового слова, которое связано с минимальным искажением, присваивается входу вектора-столбца.

Можно выбрать способ ввода значений кодовой книги с помощью параметра Source of codebook . Когда вы выбираете Specify via dialogможно ввести значения кодовой книги в диалоговое окно параметров блоков. Выберите Input port и порт C появляется на блоке. Блок использует вход в порт C в качестве параметра Codebook .

Параметр Codebook является k -by - N матрицей значений, где k ≥ 1 и N ≥ 1. Каждый вход вектора-столбца сравнивается с этой кодовой книгой. Каждый столбец матрицы кодовой книги является кодовым словом, и каждое кодовое слово имеет значение индекса. Первый вектор кодового слова соответствует индексу значению 0, второй вектор кодового слова соответствует индексу значению 1 и так далее. Векторы кодового слова должны иметь одинаковое число строк в качестве входных, U.

Для параметра Distortion measure выберите Squared error когда необходимо, чтобы блок вычислял искажение путем оценки евклидова расстояния между входом вектора-столбца и каждым кодовым словом в кодовой книге. Выберите Weighted squared error когда вы хотите использовать весовой коэффициент, чтобы подчеркнуть или деэмфазировать определенные входные значения.

Для параметра Source of weighting factor выберите Specify via dialog для ввода вектора весового коэффициента в диалоговом окне. Выберите Input port для определения весового коэффициента при помощи порта W.

Используйте параметр Weighting factor, чтобы подчеркнуть или деэмфазировать определенные входные значения при вычислении меры искажения. Например, рассмотрим p-й входной вектор-столбец ,Up, как определено ранее. Когда вы хотите пренебречь эффектом первого элемента этого вектора, введите [0 1 1 ... 1] как параметр Weighting factor. Этот весовой коэффициент используется для вычисления взвешенной квадратичной невязки с помощью уравнения

D=j=1kwj(ajiujp)2

Из-за весового коэффициента, используемого в этом примере, взвешенная квадратичная невязка не зависит от первого элемента матрицы входа. Поэтому первый элемент входа больше не вектор-столбец влияний выбора значения индекса, выводимого блоком Vector Quantzer Энкодера.

Используйте параметр Index output data type, чтобы задать тип данных значений индекса, выводимых в порте I. Тип данных значений индекса может быть int8, uint8, int16, uint16, int32, или uint32.

Когда вектор входа равноудален от двух кодовых слов, блок использует параметр Tie-breaking rule, чтобы определить, какое значение индекса выбирает блок. Когда вы хотите, чтобы входной вектор был представлен кодовым словом с более низким индексом, выберите Choose the lower index. Чтобы представлять входу, вектору-столбцу кодовым словом с более высоким индексом, выберите Choose the higher index.

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

Установите флажок Output quantization error, чтобы вывести в порт D ошибку квантования, которая возникает, когда блок представляет входу вектора-столбца по ближайшему кодовому слову. Когда вход является матрицей, значения ошибки квантования горизонтально конкатенируются.

Блок Vector Quantzer Encoder принимает реальные входы с плавающей и фиксированной точками. Дополнительные сведения о типах данных, принятых каждым портом, см. в разделах Поддержка типов данных или Поддерживаемые типы данных.

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

Значения входных данных, значения кодовой книги и значения весового коэффициента вводятся в блок в портах U, C и W, соответственно. Тип данных значений входных данных, значений кодового словаря и значений весовых коэффициентов может быть double, single, или Фиксированная точка. Входные данные, значения кодовой книги и весовой коэффициент должны быть совпадающими типами данных.

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

Типы данных с фиксированной точкой

Следующая схема показывает типы данных, используемые в блоке Vector Quantzer Encoder для сигналов с фиксированной точкой.

Можно задать выход продукта, аккумулятор и типы данных выходов индексации в диалоговом окне блока, как обсуждается ниже.

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

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

Source of codebook

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

Codebook

Войдите k «через» N матрицу значений, где 1 ≤ <reservedrangesplaceholder3> и 1 ≤ <reservedrangesplaceholder2>, с которым сравнены Ваш вектор - столбец входа или матрица. Этот параметр видим, если из списка Source of codebook вы выбираете Specify via dialog.

Distortion measure

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

Source of weighting factor

Выберите Specify via dialog для ввода значения весового коэффициента в диалоговом окне. Выберите Input port и задайте весовой коэффициент используя порт W на блоке. Этот параметр видим, если для параметра Distortion measure вы выбираете Weighted squared error.

Weighting factor

Введите вектор значений. Этот вектор должен иметь длину, равную количеству строк входа, U. Этот параметр видим, если для параметра Source of weighting factor вы выбираете Specify via dialog.

Tie-breaking rule

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

Output codeword

Установите этот флажок, чтобы вывести векторы кодового слова, ближайшие к входу векторов-столбцов.

Output quantization error

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

Index output data type

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

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

Rounding mode

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

  • Floor

  • Ceiling

  • Convergent

  • Nearest

  • Round

  • Simplest

  • Zero

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

Overflow mode

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

Product output

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

  • Когда вы выбираете Same as inputэти характеристики совпадают с характеристиками входов блока.

  • Когда вы выбираете Binary point scaling, можно ввести размер слова и длину дроби выходного продукта, в битах.

Accumulator

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

  • Когда вы выбираете Same as product output, эти характеристики совпадают с характеристиками выходных данных продукта.

  • Когда вы выбираете Same as inputэти характеристики совпадают с характеристиками входов блока.

  • Когда вы выбираете Binary point scaling, можно ввести размер слова и длину дроби аккумулятора, в битах.

Ссылки

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

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

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

U

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

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

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

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

C

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

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

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

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

W

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

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

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

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

Я

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

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

Qu

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

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

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

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

D

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

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

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

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

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

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