Запустите Скалярный Design Tool Квантизатора (SQDTool), чтобы спроектировать скалярный квантизатор с помощью алгоритма Ллойда
Квантизаторы
dspquant2
Дважды кликните на блоке Scalar Quantizer Design, чтобы запустить SQDTool, графический интерфейс пользователя, который позволяет вам разработке и реализации скалярный квантизатор. На основе ваших входных значений SQDTool итеративно вычисляет значения книги шифров, которые минимизируют среднеквадратическую ошибку, пока критерию остановки для процесса проектирования не удовлетворяют. Блок использует получившиеся значения книги шифров квантизатора и граничные точки, чтобы реализовать ваш скалярный энкодер квантизатора и/или декодер.
Для параметра Training Set введите набор наблюдений или выборок, сигнала, который вы хотите квантовать. Эти данные могут быть любой переменной, заданной в рабочей области MATLAB® включая переменную, созданную с помощью функции MATLAB, такой как значение по умолчанию randn(10000,1)
.
У вас есть два варианта для параметра Source of initial codebook . Выберите Auto-generate
чтобы иметь блок выбирают значения начального вектора книги шифров. В этом случае минимальное значение набора обучающих данных становится первой кодовой комбинацией, и максимальное значение набора обучающих данных становится последней кодовой комбинацией. Затем остающиеся начальные кодовые комбинации равномерно распределены между этими двумя значениями, чтобы сформировать вектор книги шифров из длины N, где N является параметром Number of levels. Когда вы выбираете User defined
, введите начальные значения книги шифров в поле Initial codebook. Затем установите параметр Source of initial boundary points. Можно выбрать Mid-points
определять местоположение граничных точек в средней точке между кодовыми комбинациями. Чтобы вычислить средние точки, блок внутренне располагает начальные значения книги шифров в порядке возрастания. Можно также выбрать User defined
и введите свои собственные граничные точки в поле Initial boundary points (unbounded). Только одна граничная точка может быть расположена между двумя кодовыми комбинациями. Когда вы выбираете User defined
для параметра Source of initial boundary points значения, которые вы вводите в поля Initial codebook и Initial boundary points (unbounded), должны быть расположены в порядке возрастания.
Примечание
Этот блок принимает, что вы проектируете неограниченный квантизатор. Поэтому первыми и последними граничными точками всегда является -inf
и inf
независимо от любых других значений граничной точки вы можете войти.
После того, как вы задали параметры квантования, блок выполняет итеративный процесс, чтобы спроектировать оптимальный скалярный квантизатор. Каждый шаг процесса проектирования включает использование алгоритма Ллойда, чтобы вычислить значения книги шифров и граничные точки квантизатора. Затем блок вычисляет ошибку квантования в квадрате и проверяет, удовлетворили ли критерию остановки.
Этими двумя возможными вариантами для параметра Stopping criteria является Relative threshold
и Maximum iteration
. Когда это необходимо, процесс проектирования, чтобы остановиться, когда дробное понижение ошибки квантования в квадрате будет ниже определенного значения, выберите Relative threshold
. Затем для Relative threshold введите максимальное приемлемое дробное отбрасывание. Когда это необходимо, процесс проектирования, чтобы остановиться после определенного числа итераций, выберите Maximum iteration
. Затем введите максимальный номер итераций, которые вы хотите, чтобы блок выполнил в поле Maximum iteration. Для Stopping criteria можно также выбрать Whichever comes first
и введите Relative threshold and Maximum iteration value. Блок прекращает выполнять итерации, как только одному из этих условий удовлетворяют.
С каждой итерацией блок квантует значения набора обучающих данных на основе недавно расчетных значений книги шифров и граничных точек. Когда учебная точка находится на граничной точке, алгоритм использует параметр Tie-breaking rules, чтобы определить, с какой областью значение сопоставлено. Когда это необходимо, учебная точка, которая будет присвоена ниже индексируемой области, выберите Lower indexed codeword
. Чтобы присвоить учебную точку с более высокой индексируемой областью, выберите Higher indexed codeword
.
Параметр Searching methods определяет, как блок сравнивает учебные точки с граничными точками. Выберите Linear search
и SQDTool сравнивает каждую учебную точку с каждой областью квантования последовательно. Этот процесс продолжается, пока все учебные точки не сопоставлены с соответствующими областями.
Выберите Binary search
поскольку параметр Searching methods и блок сравнивают учебную точку со средним значением вектора граничных точек. Когда учебная точка больше, чем эта граничная точка, блок отбрасывает точки нижней границы. Блок затем сравнивает учебную точку со средней граничной точкой новой области значений, заданной остающимися граничными точками. Этот процесс продолжается, пока учебная точка не сопоставлена с соответствующей областью.
Нажмите Design and Plot, чтобы спроектировать квантизатор со значениями параметров, заданными на левой стороне графический интерфейса пользователя. Кривая производительности и символ лестницы квантизатора обновлены и отображены на рисунках по правой стороне графический интерфейса пользователя.
Примечание
Необходимо нажать Design and Plot, чтобы применить любые изменения, которые вы вносите в значения параметров в диалоговом окне SQDTool.
SQDTool может экспортировать значения параметров, которые соответствуют фигурам, отображенным в графический интерфейсе пользователя. Нажмите кнопку Export Outputs или нажмите Ctrl+E, чтобы экспортировать Final Codebook, Final Boundary Points и значения Error к рабочей области, текстовому файлу или MAT-файлу. Значения Error представляют среднеквадратическую ошибку для каждой итерации.
В разделе Model графический интерфейса пользователя задайте место назначения блока, который будет содержать параметры вашего квантизатора. Для Destination выберите Current model
чтобы создать блок вашими параметрами в модели, вы последний раз выбрали. Введите gcs
в командном окне MATLAB, чтобы отобразить имя вашей текущей модели. Выберите New model
создать блок в новом файле модели.
Из списка Block type выберите Encoder
спроектировать блок Scalar Quantizer Encoder. Выберите Decoder
спроектировать блок Scalar Quantizer Decoder. Выберите Both
спроектировать блок Scalar Quantizer Encoder и блок Scalar Quantizer Decoder.
В поле Encoder block name введите имя для блока Scalar Quantizer Encoder. В поле Decoder block name введите имя для блока Scalar Quantizer Decoder. Когда вы имеете блок Scalar Quantizer Encoder и/или Decoder в своей целевой модели с тем же именем, устанавливаете флажок Overwrite target block(s), чтобы заменить параметры блока на текущие параметры. Когда вы не устанавливаете этот флажок, новый блок Scalar Quantizer Encoder и/или Decoder создается в вашей целевой модели.
Нажмите Generate Model. SQDTool использует параметры, которые соответствуют текущим графикам установить параметры Скалярных блоков Энкодера и/или Декодера Квантизатора.
Введите выборки сигнала, который требуется квантовать. Этим набором данных может быть функция MATLAB или переменная, заданная в рабочем пространстве MATLAB. Типичной длиной этого вектора данных является 1e6
.
Выберите Auto-generate
чтобы иметь блок выбирают начальные значения книги шифров. Выберите User defined
ввести ваши собственные начальные значения книги шифров.
Введите длину вектора книги шифров. Для квантизатора B-бита длиной должен быть N = 2b.
Введите свои начальные значения книги шифров. Из списка Source of initial codebook выберите User defined
для того, чтобы активировать этот параметр.
Выберите Mid-points
определять местоположение граничных точек в средней точке между значениями книги шифров. Выберите User defined
ввести ваши собственные граничные точки. Из списка Source of initial codebook выберите User defined
для того, чтобы активировать этот параметр.
Введите свои начальные граничные точки. Этот блок принимает, что вы проектируете неограниченный квантизатор. Поэтому первой и последней граничной точкой является -inf
и inf
, независимо от любых других значений граничной точки вы можете войти. Из списка Source of initial boundary points выберите User defined
для того, чтобы активировать этот параметр.
Выберите Relative threshold
ввести максимальное приемлемое дробное понижение ошибки квантования в квадрате. Выберите Maximum iteration
задавать количество итераций, в которых можно остановиться. Выберите Whichever comes first
и блок останавливает процесс итерации, как только относительный порог или максимальное значение итерации достигнуты.
Введите значение, которое является максимальным приемлемым дробным понижением ошибки квантования в квадрате.
Введите максимальный номер итераций, которые вы хотите, чтобы блок выполнил. Из списка Stopping criteria выберите Maximum iteration
для того, чтобы активировать этот параметр.
Выберите Linear search
использовать линейный метод поиска при сравнении обучения указывает на граничные точки. Выберите Binary search
использовать метод двоичного поиска при сравнении обучения указывает на граничные точки.
Когда учебная точка найдется на граничной точке, выберите Lower indexed codeword
присваивать учебную точку ниже индексируемой области квантования. Выберите Higher indexed codeword
присваивать учебную точку более высокой индексируемой области.
Нажмите эту кнопку, чтобы отобразить кривую производительности и символ лестницы квантизатора на рисунках по правой стороне графический интерфейса пользователя. Эти графики основаны на текущих установках параметров.
Необходимо нажать Design and Plot, чтобы применить любые изменения, которые вы вносите в значения параметров в СКДТОЛЕ ГИ.
Нажмите эту кнопку или нажмите Ctrl+E, чтобы экспортировать Final Codebook, Final Boundary Points и значения Error к рабочей области, текстовому файлу или MAT-файлу.
Выберите Current model
чтобы создать блок Scalar Quantizer в модели, вы последний раз выбрали. Введите gcs
в командном окне MATLAB, чтобы отобразить имя вашей текущей модели. Выберите New model
создать блок в новом файле модели.
Выберите Encoder
спроектировать блок Scalar Quantizer Encoder. Выберите Decoder
спроектировать блок Scalar Quantizer Decoder. Выберите Both
спроектировать блок Scalar Quantizer Encoder и блок Scalar Quantizer Decoder.
Введите имя для блока Scalar Quantizer Encoder.
Введите имя для блока Scalar Quantizer Decoder.
Когда вы не устанавливаете этот флажок, и блок Scalar Quantizer Encoder и/или Decoder с тем же именем блока существует в целевой модели, новый блок Scalar Quantizer Encoder и/или Decoder создается в целевой модели. Когда вы устанавливаете этот флажок, и блок Scalar Quantizer Encoder и/или Decoder с тем же именем блока существует в целевой модели, параметры этих блоков перезаписываются новыми параметрами.
Нажмите эту кнопку, и SQDTool использует параметры, которые соответствуют текущим графикам установить параметры Скалярных блоков Энкодера и/или Декодера Квантизатора.
Gersho, А. и Р. Грэй. Векторное квантование и сжатие сигнала. Бостон: Kluwer академические издатели, 1992.
Плавающая точка двойной точности
Quantizer (Simulink) | Simulink |
Скалярный декодер квантизатора | DSP System Toolbox |
Скалярный энкодер квантизатора | DSP System Toolbox |
Универсальный энкодер | DSP System Toolbox |
Универсальный декодер | DSP System Toolbox |