Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
33
Добавлен:
05.03.2016
Размер:
604.16 Кб
Скачать

2. Моделювання квантування

2.1. Моделювання квантування в Matlab

M-функція квантування вMatlabмаєнаступний вигляд:

[ind, xQ, D] = quantiz(x, partition, codebook),

де x – вектор відліків сигналу; partition – вектор границь інтервалів ; codebook – вектор значень кодової книги; ind – вектор-стовбець індексів (номерів) інтервалів; xQ – вектор-рядок квантованих значень сигналу; D – середній квадрат похибки квантування:

.

Приклад застосування m-функції:

% квантування гармонічного (50 Гц) сигналу одиничної амплітуди

% частота дискретизації 1000 Гц

i=1:20;

x=cos(2*pi*50*i/1000);

partition=[-.75 -.25 .25 .75];

codebook=[-.825 -.5 0 .5 .825];

[ind, xQ, D] = quantiz(x, partition, codebook);

plot(i,x), hold on, stem(i,xQ)

legend('Вихідний сигнал','Результат квантуван.')

for n=1:4

prt(n,i)=partition(n); plot(i,prt,'k')

end

for m=1:5

cdbk(m,i)=codebook(m); plot(i,cdbk,'r-.')

end

figure

stem(i,ind), title('Індекси')

ind, xQ, D

Вихідний іквантований сигнализображеніна рис.6, графік значеньіндексівзображенона рис.7.

Рис.6

Рис.7

2.2. Моделювання квантування в Simulink

Блок Sampled quantizer encode (рис.8) знаходиться (дляMatlabвер.6.1)урозділіCommunicationsBlockset\SourceCoding.

Рис.8.

Даний блок має один вхід і три виходи. На вхід подається квантований сигнал. На виходах, зверху вниз: вектор ind, вектор xQ, вектор квадратівпохибкиквантування(а не середній квадрат похибки, як у випадку m-функції quantiz !).

Приклад застосування блока Sampled quantizer encode:

Збираєм схему, показану на рис.9.

Рис.9. КвантуваннясигналублокомSampled quantizer encode

НалаштовуємблокFrom Workspace:

Рис.10. Вікно-маска дляналаштуванняблокаFrom Workspace

Налаштовуєм блок Sampled quantizer encode:

Рис.11. ВІкно-маска дляналаштуванняблокаSampled quantizer encode

Зауважимо, що довжину вхідного вектора вибираємо не 20, а 19 –ценеобхідно,щоб схемапрацювала нормально(тут розуміємо, що у кожному варіанті лабораторної роботи довжина вхідного вектора буде іншою!).

Блоки To Workspaceналаштовуєм наступним чином:

Рис.12. Вікно-маска дляналаштуванняблокаTo Workspace

Зверніть увагу: формат результату – масив (array), а не структура (structure).Данівформатімасивузручніше аналізувати, оскількинепотрібно затрачати час на їх отримання із структуризадопомогоюспеціальнихдосить громіздких команд.

Далів командномувікніMatlabбудуємо графік фрагментумасиваy:

stem(y)

Рис.13.

Порівнюючирис.13зрис.7,бачимо, щона рис.13 зображеномасивіндексів,алебез першогоелементу. Такимчином, «загубився» один (перший)елемент.Це зрозуміло, оскільки розмір вхідної вибірки ми задавали19.

Аналогічнобудуємографік вихідного сигналуy1іздругоговиходу(рис.14).

Рис.14.

Порівнюючирис.14зрис.6бачимо,що на рис.14 зображеноквантований сигнал,алетакож без першоговідліку.

Таким чином, реалізація квантування за допомогою m-функції quantiz та за допомогою блока Sampled quantizer encode приводить до дещо відмінним результатам.

Наконец, строим график массива y2(рис.15).

Рис.15

Співставивширис.15зрис.6,можна зробити висновок,що на рис.15 зображеноквадратпохибки(масив), а не середній квадратпохибки(число).

Таким чином, реалізація квантуваннязадопомогоюm-функціїquantizта за допомогою блокаSampled quantizer encodeприводитьдодещо відміннимрезультатам.

Соседние файлы в папке лабораторні