- •Лабораторная работа №1.
- •5. Воспроизвести с помощью звуковой платы сигнал X(t) с различными частотами дискретизации
- •4. Выполнить оптимальное квантование сигналов x1(k) иx2(k), используя от 1 до 4 бит на отсчет. Для сигналаx1(k) использовать как вычисленные в п. 6 пороги и уровни, так и указанные в приложении
- •5. Для каждого из проквантованных сигналов (всего их должно быть три: x1(k) в
5. Воспроизвести с помощью звуковой платы сигнал X(t) с различными частотами дискретизации
Для этого стоит запустить файл task1_3.mон проигрывает сигналы, начиная с высоких частот и кончая частотой 2, его примерный вывод:
sounding frequency 20 (min is 10)
sounding frequency 18 (min is 10)
sounding frequency 16 (min is 10)
sounding frequency 14 (min is 10)
sounding frequency 12 (min is 10)
sounding frequency 10 (min is 10)
sounding frequency 8 (min is 10)
sounding frequency 6 (min is 10)
sounding frequency 4 (min is 10)
sounding frequency 2 (min is 10)
На высоких частотах звук низкий, по мере приближения к минимальной частоте он звучит всё выше, а когда частота проходит минимальную отметку, то он и вовсе меняется, т.е звучит совершенно по другому.
6. Загрузить тестовое изображение. Уменьшить частоту дискретизации в 2, 3, 4 раза с помощью прореживания матрицы исходного изображения. Сравнить полученные результаты с результатом использования функцииimresize
Для этого надо запустить файл task1_4.m, его вывод:
Уменьшаем в 2 раза:
Уменьшаем в 3 раза:
Уменьшаем в 4 раза:
Здесь сверху – масштабирование с использованием функции MATLABimresize, а снизу – масштабирование простым выкалыванием точек.
Разница ощутима, изображение вверху более сглажено, это потому что MATLABиспользует интерполяцию при изменений размеров картинки, если же делать “в лоб”, то результат получится не очень впечатляющим.
2. Исследование эффектов квантования
В этом пункте будут рассмотрены основные алгоритмы квантования, будет продемонстрирован принцип их работы, а также проведён сравнительный анализ методов.
Итак, по пунктам:
1. Синтезировать случайный дискретный сигнал x(k) с равномерным
распределением. Построить его график.
Для построения сигнала с равномерным распределением нужно воспользоваться функцией gen_rand_sig. Мы не будет приводить здесь результат её работы, это будет сделано в следующем пункте.
2. Провести равномерное квантование сигнала x(k) , используя от 1 до 8 бит на отсчет. Построить ступенчатые (stairsилиstem) графики сигнала после квантования
Для этого запустим task2_1.m, пример его вывода:
Здесь генерируется один случайный сигнал (с равномерным распределением) и квантуется с использованием от 1 до 8 бит на отсчёт. К примеру, мы можем видеть, что при 1 бите у нас только 2 возможных значение функции, при 2-х битах – 4е, и т. д. Само квантование выполняется функцией uquant.
3. Экспериментально определить ошибку квантования (2). Сравнить полученные результаты с теоретической оценкой (5). + 4. Вычислить SNR(3). Исследовать зависимостьSNRот числа бит, выделяемого для хранения одного отсчета сигнала
Для этого запустим task2_2.m. Результат его работы:
interval is 0:1
4 experiments in each, min step is 0.000100, max step is 0.100000
bits = 1, average error is 0.062500, theoretical is 0.750000
average snr = 8.980020
bits = 2, average error is 0.015625, theoretical is 0.187500
average snr = 15.000620
bits = 3, average error is 0.003906, theoretical is 0.046875
average snr = 21.021219
bits = 4, average error is 0.000977, theoretical is 0.011719
average snr = 27.041819
bits = 5, average error is 0.000244, theoretical is 0.002930
average snr = 33.062419
bits = 6, average error is 0.000061, theoretical is 0.000732
average snr = 39.083019
bits = 7, average error is 0.000015, theoretical is 0.000183
average snr = 45.103619
bits = 8, average error is 0.000004, theoretical is 0.000046
average snr = 51.124219
bits = 9, average error is 0.000001, theoretical is 0.000011
average snr = 57.144819
bits = 10, average error is 0.000000, theoretical is 0.000003
average snr = 63.165419
bits = 11, average error is 0.000000, theoretical is 0.000001
average snr = 69.186019
bits = 12, average error is 0.000000, theoretical is 0.000000
average snr = 75.206619
Здесь мы проводим по 4 эксперимента для каждого нового значения bitsи вычисляем средние оценки. Как видим, наша практическая ошибка имеет тот же порядок что и теоретическая. Также мы видим, чтоSNRрастёт со временем, график зависимостиSNRот к-ва используемых бит выглядит так:
Как мы видим, зависимость линейная. Теперь воспользуемся curvefittingи найдём уравнение этой прямой:
Получили прямую с углом наклона 6. Это, разумеется, приводит нас к пониманию того, какова величина вклада каждого бита в цифровое представление аналогового сигнала: он примерно соответствует 6 дБ отношения сигнал/шум.
Далее выполняем “Задание на «5»”:
1. Синтезировать два случайных дискретных сигнала: x1(k) с нормальным иx2(k) с каким-либо другим стандартным (экспоненциальным и т.д.) распределением, используя, например, функциюrandomизStatisticsToolbox. Построить их графики.
Для синтеза таких сигналов воспользуемся функциями gen_nrand_sigиgen_exprand_sig. Мы не будет приводить графики здесь, это будет сделано в следующих пунктах.
2. С помощью встроенной функции lloyds(требуетсяCommunicationsToolbox) найти пороги и уровни квантователя Ллойда-Макса для синтезированных в п. 5 сигналов + 3. Для нормального распределения провести сравнение порогов и уровней, приближенно вычисленных с помощью функции lloyds, с их точными значениями (см. приложение). Проанализировать результаты.
Для этого запустим файл task3_1.m. Он много чего выводит, но первая часть вывода – то что нужно:
lloyds and precalculated differences:
with 1 bits
levels: 0.0575
values: -0.7245 0.8394
level error: 0.057473
value error: 0.073421
with 2 bits
levels: -0.8982 0.2187 1.4107
values: -1.4922 -0.3042 0.7415 2.0798
level error: 0.429067
value error: 0.569418
with 3 bits
levels: -1.5119 -0.8669 -0.2297 0.3588 0.8788 1.4986 2.2535
values: -1.8271 -1.1967 -0.5372 0.0778 0.6399 1.1178 1.8794 2.6276
level error: 0.505619
value error: 0.535548
with 4 bits
levels: -1.8861 -1.5209 -1.1591 -0.8426 -0.5403 -0.2197 0.0963 0.4174 0.7386 1.0535 1.3719 1.6977 2.0466 2.3966 2.8050
values: -2.0631 -1.7092 -1.3327 -0.9855 -0.6997 -0.3810 -0.0585 0.2510 0.5837 0.8934 1.2137 1.5302 1.8651 2.2281 2.5651 3.0448
level error: 0.609513
value error: 0.669546
Как мы видим, пороги(далее levels) и уровни(далееvalues), генерируемые функциейLloydsпочти одинаково отличаются от соответствующих заранее вычисленных значений. По мере роста к-ва используемых бит ошибка растёт в обоих случаях.