При передаче сигналов с расширенным динамическим диапазоном квантование с помощью интервалов равной длины может привести к потере точности и сигнализировать об искажении. Компандирование является операцией, которая применяет логарифмический расчет, чтобы сжать сигнал перед квантованием на стороне передачи и применяет обратную операцию, чтобы расширить сигнал восстановить его к полному масштабу на получить стороне. Компандирование избегает искажения сигнала без потребности задать много уровней квантования. Сравните искажение при использовании 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-закона. Примените квантование и расширьте квантованный сигнал. Вычислите среднеквадратическое искажение сигнала companded.
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);
Сравните среднеквадратическое искажение для квантования по сравнению с объединенным компандированием и квантования. Искажение для companded и квантованного сигнала является порядком величины ниже, чем искажение квантованного сигнала. Интервалы равной длины хорошо подходят для логарифма экспоненциального сигнала, но не хорошо подходят для самого экспоненциального сигнала.
[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])