Compand сигнал

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

Функция compand поддерживает два вида компандеров: µ-law и компандеры A-закона. Его страница с описанием перечисляет оба закона о компрессоре.

Quantize и Compand экспоненциальный сигнал

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

Установите μ-law параметр Mu.

Mu = 255;

Создайте экспоненциальный сигнал и найдите его максимальное значение.

sig = exp(-4:0.1:4);
V = max(sig);

Квантуйте сигнал с помощью интервалов равной длины. Установите аргументы partition и codebook, принимающие квантование на шесть битов.

partition = 0:2^6-1;
codebook = 0:2^6;
[~,~,distor] = quantiz(sig,partition,codebook);

Сожмите сигнал с помощью функции compand. Примените квантование и расширьте квантованный сигнал. Вычислите среднеквадратическое искажение.

compsig = compand(sig,Mu,V,'mu/compressor');
[~,quants] = quantiz(compsig,partition,codebook);
newsig = compand(quants,Mu,max(quants),'mu/expander');
distor2 = sum((newsig-sig).^2)/length(sig);

Сравните среднеквадратические искажения. Вывод показывает, что искажение меньше, когда компандирование используется. Это вызвано тем, что интервалы равной длины хорошо подходят для логарифма sig, но не хорошо подходят для самого sig.

[distor, distor2]
ans = 1×2

    0.5348    0.0397

Постройте сигнал и его companded версию.

plot([sig' compsig'])
legend('Original','Companded','location','nw')

Для просмотра документации необходимо авторизоваться на сайте