Для заданного входа найдите индекс ближайшего кодового слова на основе евклидовой или взвешенной евклидовой меры расстояния
Quantizers
dspquant2
Блок Vector Quantzer Encoder сравнивает каждый входной вектор-столбец с векторами кодового слова в матрице кодовой книги. Каждый столбец этой матрицы кодовой книги является кодовым словом. Блок находит вектор кодового слова, ближайший к входу вектора-столбца и возвращает его нулевой индекс. Этот блок поддерживает реальные сигналы с плавающей точкой и с фиксированной точкой на всех входных портах.
Блок находит ближайшее кодовое слово путем вычисления искажения. Блок использует два метода вычисления искажений: Евклидову квадратичную невязку (невзвешенную) и взвешенную Евклидову квадратичную невязку. Рассмотрим кодовую книгу, . Эта кодовая книга имеет N кодовых слов; каждое кодовое слово имеет k элементов. i-е кодовое слово определяется как вектор-столбец ,. Многоканальный вход имеет M столбцов и определяется как , где p-й входной вектор-столбец . Квадратичная невязка (невзвешенная) вычисляется с помощью уравнения
Взвешенная квадратичная невязка вычисляется с помощью уравнения
где весовой коэффициент определяется как . Индекс кодового слова, которое связано с минимальным искажением, присваивается входу вектора-столбца.
Можно выбрать способ ввода значений кодовой книги с помощью параметра 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-й входной вектор-столбец ,, как определено ранее. Когда вы хотите пренебречь эффектом первого элемента этого вектора, введите [0 1 1 ... 1]
как параметр Weighting factor. Этот весовой коэффициент используется для вычисления взвешенной квадратичной невязки с помощью уравнения
Из-за весового коэффициента, используемого в этом примере, взвешенная квадратичная невязка не зависит от первого элемента матрицы входа. Поэтому первый элемент входа больше не вектор-столбец влияний выбора значения индекса, выводимого блоком 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 для сигналов с фиксированной точкой.
Можно задать выход продукта, аккумулятор и типы данных выходов индексации в диалоговом окне блока, как обсуждается ниже.
Выберите Specify via dialog
для ввода значений кодовой книги в диалоговое окно параметров блоков. Выберите Input port
для определения значений кодовой книги с помощью входного порта блока C.
Войдите k «через» N матрицу значений, где 1 ≤ <reservedrangesplaceholder3>
и 1 ≤ <reservedrangesplaceholder2>, с которым сравнены Ваш вектор - столбец входа или матрица. Этот параметр видим, если из списка Source of codebook вы выбираете Specify via dialog
.
Выберите Squared error
когда необходимо, чтобы блок вычислял искажение путем оценки евклидова расстояния между входом вектора-столбца и каждым кодовым словом в кодовой книге. Выберите Weighted squared error
когда необходимо, чтобы блок вычислял искажение путем вычисления взвешенного евклидова расстояния с помощью весового коэффициента, чтобы подчеркнуть или деэмфазировать определенные входные значения.
Выберите Specify via dialog
для ввода значения весового коэффициента в диалоговом окне. Выберите Input port
и задайте весовой коэффициент используя порт W на блоке. Этот параметр видим, если для параметра Distortion measure вы выбираете Weighted squared error
.
Введите вектор значений. Этот вектор должен иметь длину, равную количеству строк входа, U. Этот параметр видим, если для параметра Source of weighting factor вы выбираете Specify via dialog
.
Установите этот параметр, чтобы определить поведение блока, когда вход вектора-столбца равноудалён от двух кодовых слов. Когда вы хотите, чтобы вход вектора-столбца была представляем кодовым словом с более низким индексом, выберите Choose the lower index
. Чтобы представлять входу, вектору-столбцу кодовым словом с более высоким индексом, выберите Choose the higher index
.
Установите этот флажок, чтобы вывести векторы кодового слова, ближайшие к входу векторов-столбцов.
Установите этот флажок, чтобы вывести значение ошибки квантования, которое возникает, когда блок представляет входу, вектору-столбцу ближайшим кодовым словом.
Выберите int8
, uint8
, int16
, uint16
, int32
, или uint32
в качестве типа данных индекса, выводимого в порт I. Чтобы наследовать тип выходных данных индекса, выберите Inherit via back propagation
.
Задайте режим округления для операций с фиксированной точкой как один из следующих:
Floor
Ceiling
Convergent
Nearest
Round
Simplest
Zero
Для получения дополнительной информации смотрите режим округления.
Когда вы выбираете этот параметр, блок насыщает результат своей операции с фиксированной точкой. Когда вы очищаете этот параметр, блок переносит результат своей операции с фиксированной точкой. Для получения дополнительной информации о saturate
и wrap
, см. Режим переполнения для операций с фиксированной точкой.
Как показано выше, выход умножителя помещается в тип выходных данных продукта и масштабирование. Используйте этот параметр, чтобы указать, как вы хотите обозначить это выходное слово продукта и длины дроби.
Когда вы выбираете Same as input
эти характеристики совпадают с характеристиками входов блока.
Когда вы выбираете Binary point scaling
, можно ввести размер слова и длину дроби выходного продукта, в битах.
Как показано выше, входы в аккумулятор приводятся к типу данных аккумулятора. Выход сумматора остается в типе данных аккумулятора, когда к нему добавляется каждый элемент входа. Используйте этот параметр, чтобы задать, как вы хотите обозначить слово аккумулятора и длины дроби.
Когда вы выбираете Same as product output
, эти характеристики совпадают с характеристиками выходных данных продукта.
Когда вы выбираете Same as input
эти характеристики совпадают с характеристиками входов блока.
Когда вы выбираете Binary point scaling
, можно ввести размер слова и длину дроби аккумулятора, в битах.
Гершо, А. и Р. Грей. Векторное квантование и сжатие сигналов. Boston: Kluwer Academic Publishers, 1992.
Порт | Поддерживаемые типы данных |
---|---|
U |
|
C |
|
W |
|
Я |
|
Qu |
|
D |
|
Quantizer (Simulink) | Simulink |
Скалярный декодер квантователя | DSP System Toolbox |
Равномерный энкодер | DSP System Toolbox |
Равномерный декодер | DSP System Toolbox |
Векторный декодер квантователя | DSP System Toolbox |