Разработайте векторный квантизатор с помощью Векторного Design Tool Квантизатора (VQDTool)
Квантизаторы
dspquant2
Дважды кликните на блоке Vector Quantizer Design, чтобы запустить VQDTool, графический интерфейс пользователя, который позволяет вам разработке и реализации векторный квантизатор. Можно также запустить VQDTool путем ввода vqdtool
в командной строке MATLAB®. На основе ваших спецификаций VQDTool итеративно вычисляет значения книги шифров, которые минимизируют среднеквадратическую ошибку между набором обучающих данных и книгой шифров, пока критерий остановки для процесса проектирования не удовлетворен. Блок использует получившиеся значения книги шифров, чтобы реализовать ваш векторный квантизатор.
Для параметра Training Set введите k-by-M матрица значений, которые вы хотите использовать, чтобы обучить книгу шифров квантизатора. Переменная k, где , длина каждого учебного вектора. Это также представляет размерность вашего квантизатора. Переменная M, где , количество учебных векторов. Эти данные могут быть созданы с помощью функции MATLAB, такой как значение по умолчанию randn(10,1000)
, или это может быть любая переменная, заданная в рабочем пространстве MATLAB.
У вас есть два варианта для параметра Source of initial codebook. Выберите Auto-generate
, чтобы иметь блок, выбирают значения первоначальной книги шифров. В этом случае блок выбирает N случайные учебные векторы как первоначальная книга шифров, где N является параметром Number of levels и . Когда вы выберете User defined
, введите начальные значения книги шифров в поле Initial codebook. Начальная матрица книги шифров должна иметь одинаковое число строк как набор обучающих данных. Каждый столбец книги шифров является кодовой комбинацией, и ваша книга шифров должна иметь по крайней мере две кодовых комбинации.
Для данного набора обучающих данных и первоначальной книги шифров, блок выполняет итеративный процесс, с помощью Обобщенного Ллойда Алгоритма (GLA), чтобы разработать итоговую книгу шифров. Для каждой итерации GLA блок сначала сопоставляет каждый учебный вектор со своей самой близкой кодовой комбинацией путем вычисления искажения. Можно задать один из двух возможных методов для вычисления искажения с помощью параметра Distortion measure.
Когда вы выбираете Squared error
для параметра Distortion measure, блок находит самую близкую кодовую комбинацию путем вычисления (невзвешенной) квадратичной невязки. Рассмотрите книгу шифров . Эта книга шифров имеет кодовые комбинации N; каждая кодовая комбинация имеет элементы k. i-th кодовая комбинация задан как . Набор обучающих данных имеет столбцы M и задан как , где p-th учебный вектор . (Невзвешенная) квадратичная невязка вычисляется с помощью уравнения
Когда вы выберете Weighted squared error
для параметра Distortion measure, введите вектор или матрицу для параметра Weighting factor. Когда фактором взвешивания является вектор, его длина должна быть равна количеству строк в наборе обучающих данных. Этот фактор взвешивания используется для каждого учебного вектора. Когда фактором взвешивания является матрица, он должен быть одного размера как матрица набора обучающих данных. Блок находит самую близкую кодовую комбинацию путем вычисления взвешенной квадратичной невязки. Если фактор взвешивания для p-th столбец учебного вектора, , задан как , затем взвешенная квадратичная невязка задана уравнением
Если блок сопоставил все учебные векторы с их самыми близкими векторами кодовой комбинации, блок вычисляет среднеквадратическую ошибку для книги шифров и проверок, чтобы видеть, был ли критерий остановки для процесса удовлетворен.
Этими двумя возможными вариантами для параметра Stopping criteria является Relative threshold
и Maximum iteration
. Когда это необходимо процесс проектирования, чтобы остановиться, когда дробное понижение квадратичной невязки будет ниже определенного значения, выберите Relative threshold
. Затем введите максимальное приемлемое дробное понижение поля Relative threshold. Часть заглядывает квадратичной невязке, задан как
Когда это необходимо процесс проектирования, чтобы остановиться после определенного числа итераций, выберите 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, новый вектор кодовой комбинации найден можно следующим образом. Предположим, что существует три учебных вектора, сопоставленные с одним вектором кодовой комбинации. Учебные векторы
Новый вектор кодовой комбинации вычисляется как
где знаменатель является количеством учебных векторов, сопоставленных с этой кодовой комбинацией. Если для параметра Codebook update method вы выбираете Centroid
, и вы задаете факторы взвешивания , , и , новый вектор кодовой комбинации вычисляется как
Нажмите Design and Plot, чтобы разработать квантизатор со значениями параметров, заданными на левой стороне графический интерфейса пользователя. Кривая производительности и энтропия квантизатора обновлены и отображены в фигурах по правой стороне графический интерфейса пользователя.
Необходимо нажать Design and Plot, чтобы применить любые изменения, которые вы вносите в значения параметров в диалоговом окне VQDTool.
Следующее является примером того, как блок вычисляет энтропию квантизатора в каждой итерации. Предположим, что у вас есть книга шифров с четырьмя кодовыми комбинациями и набор обучающих данных с 200 учебными векторами. Также предположите, что, в i-th итерация, 40 учебных векторов сопоставлены с первой кодовой комбинацией, 60 учебных векторов сопоставлены со второй кодовой комбинацией, 20 учебных векторов сопоставлены с третьей кодовой комбинацией, и 80 учебных векторов сопоставлены с четвертой кодовой комбинацией. Вероятность, что учебный вектор сопоставлен с первой кодовой комбинацией, . Вероятности, что учебные векторы сопоставлены со вторыми, третьими, и четвертыми кодовыми комбинациями, , , и , соответственно. Графический интерфейс пользователя использует эти вероятности, чтобы вычислить энтропию согласно уравнению
где N является количеством кодовых комбинаций. На основе этих вероятностей графический интерфейс пользователя вычисляет энтропию квантизатора в i-th итерация как
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 использует параметры, которые соответствуют текущим графикам установить параметры Векторных блоков Энкодера и/или Декодера Квантизатора.
Введите выборки сигнала, который требуется квантовать. Этим набором данных может быть функция MATLAB или переменная, заданная в рабочем пространстве MATLAB. Типичной длиной этого вектора данных является 1e5
.
Выберите Auto-generate
, чтобы иметь блок, выбирают начальные значения книги шифров. Выберите User defined
, чтобы ввести ваши собственные начальные значения книги шифров.
Введите номер векторов кодовой комбинации, N, в вашей матрице книги шифров, где N ≥ 2.
Введите свои начальные значения книги шифров. Из списка Source of initial codebook выберите User defined
в порядке активировать этот параметр. Книга шифров должна иметь одинаковое число строк как набор обучающих данных. Необходимо обеспечить по крайней мере два вектора кодовой комбинации.
Когда вы выбираете Squared error
, блок находит самую близкую кодовую комбинацию путем вычисления (невзвешенной) квадратичной невязки. Когда вы выбираете Weighted squared error
, блок находит самую близкую кодовую комбинацию путем вычисления взвешенной квадратичной невязки.
Введите вектор или матрицу. Блок использует эти значения, чтобы вычислить взвешенную квадратичную невязку. Когда фактором взвешивания является вектор, его длина должна быть равна количеству строк в наборе обучающих данных. Этот фактор взвешивания используется для каждого учебного вектора. Когда фактором взвешивания является матрица, он должен быть одного размера как матрица набора обучающих данных. Отдельные факторы взвешивания не могут быть отрицательными. Вектор фактора взвешивания или матрица не могут содержать все нули.
Выберите Relative threshold
, чтобы ввести максимальное приемлемое дробное понижение ошибки квантования в квадрате. Выберите Maximum iteration
, чтобы задать количество итераций, в которых можно остановиться. Выберите Whichever comes first
, и блок останавливает процесс итерации, как только относительный порог или максимальное значение итерации достигнуты.
Этот параметр доступен, когда вы выбираете Relative threshold
или Whichever comes first
для параметра Stopping criteria. Введите значение, которое является максимальным приемлемым дробным понижением ошибки квантования в квадрате.
Этот параметр доступен, когда вы выбираете Maximum iteration
или Whichever comes first
для параметра Stopping criteria. Введите максимальный номер итераций, которые вы хотите, чтобы блок выполнил.
Когда учебный вектор будет иметь то же искажение для двух различных векторов кодовой комбинации, выберите Lower indexed codeword
, чтобы сопоставить учебный вектор с ниже индексируемой кодовой комбинацией. Выберите Higher indexed codeword
, чтобы сопоставить учебный вектор с ниже индексируемой кодовой комбинацией.
Когда вы выбираете Mean
, новый вектор кодовой комбинации вычисляется путем взятия среднего значения всех учебных векторных значений, которые были сопоставлены с исходным вектором кодовой комбинации. Когда вы выбираете Centroid
, блок вычисляет новый вектор кодовой комбинации путем взятия взвешенного среднего всех учебных векторных значений, которые были сопоставлены с исходным вектором кодовой комбинации Обратите внимание на то, что, если для параметра Distortion measure вы выбираете Squared error
, параметр Codebook update method устанавливается на Mean
.
Выберите Current model
, чтобы создать блок Vector Quantizer в модели, которую вы последний раз выбрали. Введите gcs
в Окне Команды MATLAB, чтобы отобразить имя вашей текущей модели. Выберите New model
, чтобы создать блок в новом образцовом файле.
Выберите Encoder
, чтобы разработать блок Vector Quantizer Encoder. Выберите Decoder
, чтобы разработать блок Vector Quantizer Decoder. Выберите Both
, чтобы разработать блок Vector Quantizer Encoder и блок Vector Quantizer Decoder.
Введите имя для блока Vector Quantizer Encoder.
Введите имя для блока Vector Quantizer Decoder.
Когда вы не устанавливаете этот флажок, и блок Vector Quantizer Encoder и/или Decoder с тем же именем блока существует в целевой модели, новый блок Vector Quantizer Encoder и/или Decoder создается в целевой модели. Когда вы устанавливаете этот флажок, и блок Vector Quantizer Encoder и/или Decoder с тем же именем блока существует в целевой модели, параметры этих блоков перезаписываются новыми параметрами.
Нажмите эту кнопку, и VQDTool использует параметры, которые соответствуют текущим графикам установить параметры Векторных блоков Энкодера и/или Декодера Квантизатора.
Нажмите эту кнопку, чтобы разработать квантизатор с помощью параметров на левой стороне графический интерфейса пользователя и обновить кривую производительности и энтропийные графики на правой стороне графический интерфейса пользователя.
Необходимо нажать Design and Plot, чтобы применить любые изменения, которые вы вносите в значения параметров во ВКДТОЛЕ ГИ.
Нажмите эту кнопку или нажмите Ctrl+E, чтобы экспортировать Final Codebook, Mean Squared Error и значения Entropy к рабочей области, текстовому файлу или MAT-файлу.
Плавающая точка двойной точности
[1] Gersho, А. и Р. Грэй. Векторное квантование и сжатие сигнала. Бостон: Kluwer академические издатели, 1992.