В определенных приложениях, таких как речевая обработка, распространено использовать расчет логарифма, названный компрессором, перед квантованием. Обратная работа компрессора называется расширителем. Комбинация компрессора и расширителя называется компандером.
compand
функционируйте поддерживает два вида компандеров: µ-law и компандеры A-закона. Его страница с описанием перечисляет оба закона о компрессоре.
Установите параметр mu-закона.
mu = 255;
Создайте экспоненциальный сигнал и вычислите его максимальное значение.
sig = exp(-4:0.1:4); V = max(sig);
Квантуйте сигнал при помощи интервалов равной длины. Установите раздел и значения книги шифров, приняв 6-битное квантование. Вычислите среднеквадратическое искажение.
partition = 0:2^6 - 1; codebook = 0:2^6; [~,~,distortion] = quantiz(sig,partition,codebook);
Сожмите сигнал при помощи compand
функция. Примените квантование и расширьте квантованный сигнал. Вычислите среднеквадратическое искажение сигнала companded.
compsig = compand(sig,mu,V,'mu/compressor'); [~,quants] = quantiz(compsig,partition,codebook); newsig = compand(quants,mu,max(quants),'mu/expander'); distortion2 = sum((newsig - sig).^2)/length(sig);
Сравните среднеквадратические искажения. Искажение меньше, когда вы выполняете компандирование. Это различие - то, потому что интервалы равной длины хорошо подходят для логарифма экспоненциального сигнала, но не хорошо подходят для самого экспоненциального сигнала.
[distortion, distortion2]
ans = 1×2
0.5348 0.0397
Постройте исходный экспоненциальный сигнал и сигнал companded.
plot([sig' compsig']); title('Comparison between Original signal and Companded Signal'); xlabel('Interval'); ylabel('Apmlitude'); legend('Original','Companded','location','nw');