При передаче сигналов с высокой динамической областью значений квантование с использованием интервалов равной длины может привести к потере точности и искажению сигнала. Компаньон является операцией, которая применяет логарифмический расчет для сжатия сигнала перед квантованием на стороне передачи и применяет обратную операцию для расширения сигнала, чтобы восстановить его до полной шкалы на стороне приема. Связывание избегает искажения сигнала без необходимости задавать много уровней квантования. Сравните искажения при использовании 6-битного квантования по экспоненциальному сигналу с компандированием и без него. Постройте график исходного экспоненциального сигнала, квантованного сигнала и расширенного сигнала.
Создайте экспоненциальный сигнал и вычислите его максимальное значение.
sig = exp(-4:0.1:4); V = max(sig);
Квантуйте сигнал с помощью интервалов равной длины. Установите значения разделов и кодовых книг, принимая 6-битное квантование. Вычислите среднее квадратное искажение.
partition = 0:2^6 - 1; codebook = 0:2^6; [~,qsig,distortion] = quantiz(sig,partition,codebook);
Сжатие сигнала при помощи compand
функция, сконфигурированная для применения метода mu-закон. Примените квантование и разверните квантованный сигнал. Вычислите среднее квадратное искажение компилируемого сигнала.
mu = 255; % mu-law parameter csig_compressed = compand(sig,mu,V,'mu/compressor'); [~,quants] = quantiz(csig_compressed,partition,codebook); csig_expanded = compand(quants,mu,max(quants),'mu/expander'); distortion2 = sum((csig_expanded - sig).^2)/length(sig);
Сравните среднее квадратное искажение для квантования с комбинированным компилированием и квантованием. Искажение для компилируемого и квантованного сигнала на порядок величине ниже, чем искажение квантованного сигнала. Интервалы равной длины хорошо подходят для логарифма экспоненциального сигнала, но не хорошо подходят для самого экспоненциального сигнала.
[distortion, distortion2]
ans = 1×2
0.5348 0.0397
Постройте график исходного экспоненциального сигнала, квантованного сигнала и расширенного сигнала. Масштабирование оси, чтобы выделить ошибку квантованного сигнала на более низких уровнях сигнала.
plot([sig' qsig' csig_expanded']); title('Comparison Between Original, Quantized, and Expanded Signals'); xlabel('Interval'); ylabel('Apmlitude'); legend('Original','Quantized','Expanded','location','nw'); axis([0 70 0 20])