MATLAB.Exponenta
MATLAB и Simulink на русском
Технологии разработки и отладки
		сложных технических систем
Обработка сигналов и изображений\Communications Toolbox

Список функций CommunicationsToolbox: Кодирование источника

  В оглавление \ К следующему разделу \ К предыдущему разделу

DPCMOPT
Оптимизация параметров
дифференциальной импульсно-кодовой модуляции (ДИКМ)

Синтаксис:

predictor = dpcmopt(trainingset,ord);
[predictor,codebook,partition] = dpcmopt(trainingset,ord,length);
[predictor,codebook,partition] = dpcmopt(trainingset,ord,initcodebook);

Описание:

  • predictor = dpcmopt(trainingset,ord)

Возвращает вектор, содержащий отсчеты импульсной характеристики предсказывающего фильтра порядка ord, оптимального для обработки сигнала, содержащегося в векторе trainingset. Выходной результат predictor представляет собой вектор-строку длиной ord+1, первый элемент которого равен нулю.

Замечание. Функция dpcmopt подбирает оптимальные параметры, анализируя сигнал, содержащийся в векторе trainingset. Для получения наилучших результатов сигнал trainingset должен быть аналогичен тем данным, которые затем будут подвергаться ДИКМ с применением полученных оптимизированных параметров.

  • [predictor,codebook,partition] = dpcmopt(trainingset,ord,length)

То же, что предыдущий вариант синтаксиса, но дополнительно функция возвращает оптимизированные значения квантованных величин (codebook) и границ зон квантования (partition). Входной параметр length представляет собой целое число, задающее число зон квантования, то есть длину вектора codebook. Длина вектора partition равна length–1.

Более подробная информация о формате параметров partition и codebook имеется на странице с описанием функции quantiz.

  • [predictor,codebook,partition] = dpcmopt(trainingset,ord,initcodebook)

То же, что предыдущий вариант синтаксиса, но вместо числового параметра, задающего число зон квантования, указывается вектор initcodebook — начальное приближение для набора квантованных величин. Длина вектора initcodebook должна быть не меньше двух. Выходной параметр codebook представляет собой вектор той же длины, что и входной вектор initcodebook. Длина выходного вектора partition на единицу меньше, чем длина вектора codebook.

Примеры.

Приведенные ниже код MATLAB демонстрирует использование функций dpcmopt, dpcmenco и dpcmdeco. В качестве обрабатываемого сигнала используется запись произнесенного слова “MATLAB”, содержащаяся во входящем в поставку MATLAB файле mtlb.mat. Оптимизация параметров ДИКМ производится для предсказывающего фильтра второго параметра и 32 уровней квантования ошибки предсказания.

% загружаем обрабатываемый сигнал
load mtlb
% производим оптимизацию параметров ДИКМ
[predictor, codebook, partition] = dpcmopt(mtlb, 2, 32);
% кодируем сигнал, используЯ оптимизированные параметры
[index, quants] = dpcmenco(mtlb, codebook, partition, predictor);
% обратное декодирование
[sig, quanterror] = dpcmdeco(index, codebook, predictor);
% ошибка квантованиЯ
e_sig = mtlb(:)-sig(:);
% средний квадрат ошибки
dist1 = sum(e_sig.^2)/length(e_sig);
fprintf('Средний квадрат ошибки %.2e\n', dist1)

В результате расчета будет выдан следующий результат:

Средний квадрат ошибки 6.49e-004

Теперь выполним обычное (не дифференциальное) квантование того же сигнала с помощью функции quantiz, использовав тоже 32 уровня и оптимизировав параметры квантования с помощью функции lloyds.

% оптимизируем параметры квантования
[partition2, codebook2] = lloyds(mtlb, 32);
% производим квантование и получаем средний квадрат ошибки
[index2, quant2, dist2] = quantiz(mtlb, partition2, codebook2);
fprintf('Средний квадрат ошибки %.2e\n', dist2)

В результате расчета будет выдан следующий результат:

Средний квадрат ошибки 1.56e-003

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

Сопутствующие функции: dpcmenco, dpcmdeco, quantiz, lloyds

  В оглавление \ К следующему разделу \ К предыдущему разделу


Поиск по сайту:

Система Orphus

Яндекс.Метрика