Lloyds

Оптимизируйте параметры квантования с помощью алгоритма Ллойда

Синтаксис

[partition,codebook] = lloyds(training_set,initcodebook)
[partition,codebook] = lloyds(training_set,len)
[partition,codebook] = lloyds(training_set,...,tol)
[partition,codebook,distor] = lloyds(...)
[partition,codebook,distor,reldistor] = lloyds(...)

Описание

[partition,codebook] = lloyds(training_set,initcodebook) оптимизирует скалярные параметры квантования partition и codebook для данных тренировки в векторном training_set. initcodebook, вектор длины по крайней мере 2, является исходным предположением значений книги шифров. Вывод codebook является вектором той же длины как initcodebook. Вывод partition является вектором, длина которого является той меньше, чем длина codebook.

Смотрите Представляют Разделы, Представляют Книги шифров или страницу с описанием для quantiz в этой главе, для описания форматов partition и codebook.

Примечание

lloyds оптимизирует для данных в training_set. Для лучших результатов training_set должен быть подобен данным, которые вы планируете квантовать.

[partition,codebook] = lloyds(training_set,len) совпадает с первым синтаксисом, за исключением того, что скалярный аргумент len указывает на размер векторного codebook. Этот синтаксис не включает начальное предположение книги шифров.

[partition,codebook] = lloyds(training_set,...,tol) совпадает с этими двумя синтаксисами выше, за исключением того, что tol заменяет 10-7 в условии 1 из описания алгоритма ниже.

[partition,codebook,distor] = lloyds(...) возвращает итоговое среднеквадратическое искажение в переменной distor.

[partition,codebook,distor,reldistor] = lloyds(...) возвращает значение reldistor, который связан с завершением алгоритма. В условии 1 из алгоритма ниже, reldistor является относительным изменением в искажении между последними двумя итерациями. В условии 2, reldistor совпадает с distor.

Примеры

Код ниже оптимизирует параметры квантования для синусоидальной передачи через трехбитный канал. Поскольку типичные данные являются синусоидальными, training_set является выбранной синусоидой. Поскольку канал может передать три бита за один раз, lloyds готовит книгу шифров длины 23.

% Generate a complete period of a sinusoidal signal.
x = sin([0:1000]*pi/500);
[partition,codebook] = lloyds(x,2^3)

Вывод ниже.

partition =

  Columns 1 through 6 

   -0.8540   -0.5973   -0.3017    0.0031    0.3077    0.6023

  Column 7 

    0.8572


codebook =

  Columns 1 through 6 

   -0.9504   -0.7330   -0.4519   -0.1481    0.1558    0.4575

  Columns 7 through 8 

    0.7372    0.9515

Алгоритмы

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

  • Относительное изменение в искажении между итерациями - меньше чем 10-7.

  • Искажение является меньше, чем eps*max(training_set), где eps является MATLAB относительная точность с плавающей точкой.

Ссылки

[1] Ллойд, S.P., “Квантование наименьших квадратов в PCM”, Транзакции IEEE на Теории информации, издании IT-28, март 1982, стр 129–137.

[2] Max, J., “Квантуя для Минимального Искажения”, Транзакции IRE на Теории информации, издании IT-6, март 1960, стр 7–12.

Смотрите также

|

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