Vector Quantizer Design

Спроектируйте векторный квантизатор с помощью Векторного Design Tool Квантизатора (VQDTool)

Библиотека

Квантизаторы

dspquant2

Описание

Дважды кликните на блоке Vector Quantizer Design, чтобы запустить VQDTool, графический интерфейс пользователя, который позволяет вам разработке и реализации векторный квантизатор. Можно также запустить VQDTool путем ввода vqdtool в командной строке MATLAB®. На основе ваших технических требований VQDTool итеративно вычисляет значения книги шифров, которые минимизируют среднеквадратическую ошибку между набором обучающих данных и книгой шифров, пока критерию остановки для процесса проектирования не удовлетворяют. Блок использует получившиеся значения книги шифров, чтобы реализовать ваш векторный квантизатор.

Для параметра Training Set введите k-by-M матрица значений, которые вы хотите использовать, чтобы обучить книгу шифров квантизатора. Переменная k, где k1, длина каждого учебного вектора. Это также представляет размерность вашего квантизатора. Переменная M, где M2, количество учебных векторов. Эти данные могут быть созданы с помощью функции MATLAB, такой как значение по умолчанию randn(10,1000), или это может быть любая переменная, заданная в рабочем пространстве MATLAB.

У вас есть два варианта для параметра Source of initial codebook. Выберите Auto-generate чтобы иметь блок выбирают значения первоначальной книги шифров. В этом случае блок выбирает N случайные учебные векторы как первоначальная книга шифров, где N является параметром Number of levels и N2. Когда вы выбираете User defined, введите начальные значения книги шифров в поле Initial codebook. Начальная матрица книги шифров должна иметь одинаковое число строк как набор обучающих данных. Каждый столбец книги шифров является кодовой комбинацией, и ваша книга шифров должна иметь по крайней мере две кодовых комбинации.

Для данного набора обучающих данных и первоначальной книги шифров, блок выполняет итеративный процесс, с помощью Обобщенного Ллойда Алгоритма (GLA), чтобы спроектировать итоговую книгу шифров. Для каждой итерации GLA блок сначала сопоставляет каждый учебный вектор со своей самой близкой кодовой комбинацией путем вычисления искажения. Можно задать один из двух возможных методов для вычисления искажения с помощью параметра Distortion measure.

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

D=j=1k(ajiujp)2

Когда вы выбираете Weighted squared error для параметра Distortion measure введите вектор или матрицу для параметра Weighting factor. Когда фактором взвешивания является вектор, его длина должна быть равна количеству строк в наборе обучающих данных. Этот фактор взвешивания используется в каждом учебном векторе. Когда фактором взвешивания является матрица, он должен быть одного размера с матрицей набора обучающих данных. Блок находит самую близкую кодовую комбинацию путем вычисления взвешенной квадратичной невязки. Если фактор взвешивания для p-th столбец учебного вектора, Up, задан как Wp=[w1pw2p...wkp], затем взвешенная квадратичная невязка задана уравнением

D=j=1kwjp(ajiujp)2

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

Этими двумя возможными вариантами для параметра Stopping criteria является Relative threshold и Maximum iteration. Когда это необходимо, процесс проектирования, чтобы остановиться, когда дробное понижение квадратичной невязки будет ниже определенного значения, выберите Relative threshold. Затем введите максимальное приемлемое дробное понижение поля Relative threshold. Часть заглядывает квадратичной невязке, задан как

error at previous iteration  ошибка в текущей итерацииошибка в предыдущей итерации

Когда это необходимо, процесс проектирования, чтобы остановиться после определенного числа итераций, выберите Maximum iteration. Затем введите максимальный номер итераций, которые вы хотите, чтобы блок выполнил в поле Maximum iteration. Для Stopping criteria можно также выбрать Whichever comes first и введите Relative threshold and Maximum iteration values. Блок прекращает выполнять итерации, как только одному из этих условий удовлетворяют.

То, когда учебный вектор имеет то же искажение для двух различных векторов кодовой комбинации, алгоритм использует параметр Tie-breaking rule, чтобы определить, какая кодовая комбинация векторизовали учебный вектор, сопоставлено с. Когда это необходимо, учебный вектор, который будет сопоставлен с ниже индексируемой кодовой комбинацией, выберите Lower indexed codeword. Чтобы сопоставить учебный вектор с более высокой индексируемой кодовой комбинацией, выберите Higher indexed codeword.

С каждой итерацией блок обновляет значения кодовой комбинации для того, чтобы минимизировать искажение. Параметр Codebook update method задает способ, которым блок вычисляет эти новые значения книги шифров.

Примечание

Если для параметра Distortion measure вы выбираете Squared error, параметр Codebook update method устанавливается на Mean.

Если для параметра Distortion measure вы выбираете Weighted squared error и вы выбираете Mean для параметра Codebook update method новый вектор кодовой комбинации найден можно следующим образом. Предположим, что существует три учебных вектора, сопоставленные с одним вектором кодовой комбинации. Учебные векторы

TS1=[12], TS3=[1012], и TS7=[1112].

Новый вектор кодовой комбинации вычисляется как CWnew=[1+10+1132+12+123]

где знаменатель является количеством учебных векторов, сопоставленных с этой кодовой комбинацией. Если для параметра Codebook update method вы выбираете Centroid и вы задаете факторы взвешивания W1=[0.10.2], W3=[10.6], и W7=[0.30.4], новый вектор кодовой комбинации вычисляется как

CWnew=[(0.1)(1)+(1)(10)+(0.3)(11)0.1+1+0.3(0.2)(2)+(0.6)(12)+(0.4)(12)0.2+0.6+0.4]

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

Примечание

Необходимо нажать Design and Plot, чтобы применить любые изменения, которые вы вносите в значения параметров в диалоговом окне VQDTool.

Следующее является примером того, как блок вычисляет энтропию квантизатора в каждой итерации. Предположим, что у вас есть книга шифров с четырьмя кодовыми комбинациями и набор обучающих данных с 200 учебными векторами. Также предположите, что, в i-th итерация, 40 учебных векторов сопоставлены с первой кодовой комбинацией, 60 учебных векторов сопоставлены со второй кодовой комбинацией, 20 учебных векторов сопоставлены с третьей кодовой комбинацией, и 80 учебных векторов сопоставлены с четвертой кодовой комбинацией. Вероятность, что учебный вектор сопоставлен с первой кодовой комбинацией, 40200. Вероятности, что учебные векторы сопоставлены со вторыми, третьими, и четвертыми кодовыми комбинациями, 60200, 20200, и 80200, соответственно. Графический интерфейс пользователя использует эти вероятности, чтобы вычислить энтропию согласно уравнению

H=i=1Npilog2pi

где N является количеством кодовых комбинаций. На основе этих вероятностей графический интерфейс пользователя вычисляет энтропию квантизатора в i-th итерация как

H=(40200log240200+60200log260200+20200log220200+80200log280200)H=1.8464

VQDTool может экспортировать значения параметров, которые соответствуют фигурам, отображенным в графический интерфейсе пользователя. Нажмите кнопку Export Outputs или нажмите Ctrl+E, чтобы экспортировать Final Codebook, Mean Square Error и значения Entropy к рабочей области, текстовому файлу или MAT-файлу.

В разделе Model графический интерфейса пользователя задайте место назначения блока, который будет содержать параметры вашего квантизатора. Для Destination выберите Current model чтобы создать блок вашими параметрами в модели, вы последний раз выбрали. Введите gcs в Окне Команды MATLAB, чтобы отобразить имя вашей текущей модели. Выберите New model создать блок в новом файле модели.

Из списка Block type выберите Encoder спроектировать блок Vector Quantizer Encoder. Выберите Decoder спроектировать блок Vector Quantizer Decoder. Выберите Both спроектировать блок Vector Quantizer Encoder и блок Vector Quantizer Decoder.

В поле Encoder block name введите имя для блока Vector Quantizer Encoder. В поле Decoder block name введите имя для блока Vector Quantizer Decoder. Когда вы имеете блок Vector Quantizer Encoder и/или Decoder в своей целевой модели с тем же именем, устанавливаете флажок Overwrite target block, чтобы заменить параметры блока на текущие параметры. Когда вы не устанавливаете этот флажок, новый блок Vector Quantizer Encoder и/или Decoder создается в вашей целевой модели.

Нажмите Generate Model. VQDTool использует параметры, которые соответствуют текущим графикам установить параметры Векторных блоков Энкодера и/или Декодера Квантизатора.

Параметры

Training Set

Введите выборки сигнала, который требуется квантовать. Этим набором данных может быть функция MATLAB или переменная, заданная в рабочем пространстве MATLAB. Типичной длиной этого вектора данных является 1e5.

Source of initial codebook

Выберите Auto-generate чтобы иметь блок выбирают начальные значения книги шифров. Выберите User defined ввести ваши собственные начальные значения книги шифров.

Number of levels

Введите номер векторов кодовой комбинации, N, в вашей матрице книги шифров, где N ≥ 2.

Initial codebook

Введите свои начальные значения книги шифров. Из списка Source of initial codebook выберите User defined для того, чтобы активировать этот параметр. Книга шифров должна иметь одинаковое число строк как набор обучающих данных. Необходимо обеспечить по крайней мере два вектора кодовой комбинации.

Distortion measure

Когда вы выбираете Squared error, блок находит самую близкую кодовую комбинацию путем вычисления (невзвешенной) квадратичной невязки. Когда вы выбираете Weighted squared error, блок находит самую близкую кодовую комбинацию путем вычисления взвешенной квадратичной невязки.

Weighting factor

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

Stopping criteria

Выберите Relative threshold ввести максимальное приемлемое дробное понижение ошибки квантования в квадрате. Выберите Maximum iteration задавать количество итераций, в которых можно остановиться. Выберите Whichever comes first и блок останавливает процесс итерации, как только относительный порог или максимальное значение итерации достигнуты.

Relative threshold

Этот параметр доступен, когда вы выбираете Relative threshold или Whichever comes first для параметра Stopping criteria. Введите значение, которое является максимальным приемлемым дробным понижением ошибки квантования в квадрате.

Maximum iteration

Этот параметр доступен, когда вы выбираете Maximum iteration или Whichever comes first для параметра Stopping criteria. Введите максимальный номер итераций, которые вы хотите, чтобы блок выполнил.

Tie-breaking rules

Когда учебный вектор будет иметь то же искажение для двух различных векторов кодовой комбинации, выберите Lower indexed codeword сопоставлять учебный вектор с ниже индексируемой кодовой комбинацией. Выберите Higher indexed codeword сопоставлять учебный вектор с ниже индексируемой кодовой комбинацией.

Codebook update method

Когда вы выбираете Mean, новый вектор кодовой комбинации вычисляется путем взятия среднего значения всех учебных векторных значений, которые были сопоставлены с исходным вектором кодовой комбинации. Когда вы выбираете Centroid, блок вычисляет новый вектор кодовой комбинации путем взятия взвешенного среднего всех учебных векторных значений, которые были сопоставлены с исходным вектором кодовой комбинации Обратите внимание на то, что, если для параметра Distortion measure вы выбираете Squared error, параметр Codebook update method устанавливается на Mean.

Destination

Выберите Current model чтобы создать блок Vector Quantizer в модели, вы последний раз выбрали. Введите gcs в Окне Команды MATLAB, чтобы отобразить имя вашей текущей модели. Выберите New model создать блок в новом файле модели.

Block type

Выберите Encoder спроектировать блок Vector Quantizer Encoder. Выберите Decoder спроектировать блок Vector Quantizer Decoder. Выберите Both спроектировать блок Vector Quantizer Encoder и блок Vector Quantizer Decoder.

Encoder block name

Введите имя для блока Vector Quantizer Encoder.

Decoder block name

Введите имя для блока Vector Quantizer Decoder.

Overwrite target block

Когда вы не устанавливаете этот флажок, и блок Vector Quantizer Encoder и/или Decoder с тем же именем блока существует в целевой модели, новый блок Vector Quantizer Encoder и/или Decoder создается в целевой модели. Когда вы устанавливаете этот флажок, и блок Vector Quantizer Encoder и/или Decoder с тем же именем блока существует в целевой модели, параметры этих блоков перезаписываются новыми параметрами.

Generate Model

Нажмите эту кнопку, и VQDTool использует параметры, которые соответствуют текущим графикам установить параметры Векторных блоков Энкодера и/или Декодера Квантизатора.

Design and Plot

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

Необходимо нажать Design and Plot, чтобы применить любые изменения, которые вы вносите в значения параметров во ВКДТОЛЕ ГИ.

Export Outputs

Нажмите эту кнопку или нажмите Ctrl+E, чтобы экспортировать Final Codebook, Mean Squared Error и значения Entropy к рабочей области, текстовому файлу или MAT-файлу.

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

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

Ссылки

[1] Gersho, А. и Р. Грэй. Векторное квантование и сжатие сигнала. Бостон: Kluwer академические издатели, 1992.

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

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

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