МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ
ТЕРНОПІЛЬСЬКИЙ НАЦІОНАЛЬНИЙ ЕКОНОМІЧНИЙ УНІВЕРСИТЕТ
ФАКУЛЬТЕТ КОМП’ЮТЕРНИХ ІНФОРМАЦІЙНИХ ТЕХНОЛОГІЙ
МЕТОДИЧНІ ВКАЗІВКИ
до виконання лабораторних робіт з дисципліни
"ЦИФРОВА ОБРОБКА СИГНАЛІВ І ЗОБРАЖЕНЬ"
Частина 2
для студентів спеціальностей:
Спеціалізовані комп’ютерні системи
Комп’ютерні системи та мережі
Тернопіль
ТНЕУ
2011
МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ
ТЕРНОПІЛЬСЬКИЙ НАЦІОНАЛЬНИЙ ЕКОНОМІЧНИЙ УНІВЕРСИТЕТ
ФАКУЛЬТЕТ КОМП’ЮТЕРНИХ ІНФОРМАЦІЙНИХ ТЕХНОЛОГІЙ
МЕТОДИЧНІ ВКАЗІВКИ
до виконання лабораторних робіт з дисципліни
"ЦИФРОВА ОБРОБКА СИГНАЛІВ І ЗОБРАЖЕНЬ"
Частина 2
для студентів спеціальностей:
Спеціалізовані комп’ютерні системи
Комп’ютерні системи та мережі
Тернопіль
ТНЕУ
2011
«Цифрова обробка сигналів і зображень»: методичні вказівки до виконання лабораторних робіт для студентів спеціальностей «Спеціалізовані комп’ютерні системи» та «Комп’ютерні системи та мережі» денної та заочної форм навчання освітньо-кваліфікаційного рівня «бакалавр».
Укладачі: к.т.н., доцент Притуляк Я.Г.
к.т.н. Возна Н.Я.
викл. Волинський О.І.
викл. Албанський І.Б.
Рецензент: к.т.н., доцент Сегін А.І.
Відповідальний за випуск: д.т.н., професор Николайчук Я.М.
Методичні вказівки розглянуті та схвалені на засіданні кафедри спеціалізованих комп’ютерних систем (протокол № від )
ЗМІСТ
ВСТУП
4
ЛАБОРАТОРНА РОБОТА №1
5
ЛАБОРАТОРНА РОБОТА №2
15
ЛАБОРАТОРНА РОБОТА №3
22
ЛАБОРАТОРНА РОБОТА №4
36
ЛАБОРАТОРНА РОБОТА №5
46
РЕКОМЕНДОВАНА ЛІТЕРАТУРА
55
ВСТУП
Цифрова обробка сигналів і зображень (ЦОСЗ) – це область науки і техніки, в якій вивчаються загальні для різних дисциплін алгоритми і засоби обробки сигналів на основі чисельних методів з використанням цифрової обчислювальної техніки. ЦОСЗ має справу з представленням і перетворенням сигналів і інформації, яку вони несуть.
У другій частині методичних вказівок досліджуються методи цифрової обробки аналогових і дискретних сигналів та зображень за допомогою функцій MATLAB. При цьому формули модифікуються, де інтеграли перетворюються в суму. Оскільки дискретний сигнал представляє собою послідовність чисел, тому в MATLAB він використовується у вигляді вектора.
ЛАБОРАТОРНА РОБОТА №1.
Тема. «Генерація сигналів. Згортка. Структура Signal Processing Toolbox».
Мета роботи. Отримати основні навики роботи в середовищі Matlab. Вивчити можливості пакета Signal Processing Toolbox по генерації сигналів. Вивчити властивості згортки.
ТЕОРЕТИЧНА ЧАСТИНА
Загальна характеристика пакета Signal Processing
Signal Processing Toolbox - потужний пакет з аналізу, моделювання і проектування пристроїв обробки різних сигналів, забезпеченню їх фільтрації і безлічі перетворень.
Пакет Signal Processing забезпечує надзвичайно великі можливості по створенню програм обробки сигналів для сучасних наукових та технічних пропозицій. У пакеті використовується різноманітна техніка фільтрації і новітні алгоритми спектрального аналізу. Пакет містить модулі для розробки нових алгоритмів обробки сигналів, розробки лінійних систем і аналізу часових рядів. Пакет буде корисний, зокрема, в таких областях, як обробка аудіо- та відео інформації, телекомунікації, геофізика, завдання управління в реальному режимі часу, економіка, фінанси і медицина.
Призначення пакету:
моделювання сигналів і лінійних систем;
проектування, аналіз і реалізація цифрових і аналогових фільтрів;
швидке перетворення Фур'є, дискретне косинусне та інші перетворення;
оцінка спектрів і статистична обробка сигналів;
параметрична обробка часових рядів;
генерація сигналів різної форми;
віконне відображення.
Пакет Signal Processing - ідеальна оболонка для аналізу і обробки сигналів. У ньому використовуються перевірені практикою алгоритми, обрані за критеріями максимальної ефективності та надійності. Пакет містить широкий спектр алгоритмів для подання сигналів і лінійних моделей. Цей набір дозволяє користувачеві досить гнучко підходити до створення сценарію обробки сигналів. Пакет включає алгоритми для перетворення моделі з одного подання до іншого.
Пакет Signal Processing включає повний набір методів для створення цифрових фільтрів з різноманітними характеристиками. Він дозволяє швидко розробляти фільтри високих і низьких частот, смугові пропускаючі і затримуючі фільтри, багатосмугові фільтри, в тому числі фільтри Чебишева, Баттерворта, еліптичні та інші фільтри.
Графічний інтерфейс дозволяє проектувати фільтри, задаючи вимоги до них в режимі переносу об'єктів мишкою. У пакет включені наступні нові методи проектування фільтрів:
Узагальнений метод Чебишева для створення фільтрів з нелінійною фазовою характеристикою, комплексними коефіцієнтами або довільним відгуком. Алгоритм розроблений Макленаном і Караме в 1995 році;
Метод найменших квадратів з обмеженнями дозволяє користувачеві явно контролювати максимальну похибку (згладжування);
Метод розрахунку мінімального порядку фільтра з вікном Кайзера;
Узагальнений метод Баттерворта для проектування низькочастотних фільтрів з максимально однорідними смугами пропускання і загасання.
Заснований на оптимальному алгоритмі швидкого перетворення Фур'є, пакет Signal Processing має неперевершені характеристики для частотного аналізу і спектральних оцінок. Пакет включає функції для обчислення дискретного перетворення Фур'є, дискретного косинусного перетворення, перетворення Гільберта та інших перетворень, часто застосовуваних для аналізу, кодування та фільтрації. У пакеті реалізовані такі методи спектрального аналізу, як метод Вельха, метод максимальної ентропії та інші.
Пакет Signal Processing є основою для вирішення багатьох інших завдань. Наприклад, комбінуючи його з пакетом Image Processing, можна обробляти і аналізувати двомірні сигнали і зображення. У парі з пакетом System Identification, пакет Signal Processing дозволяє виконувати параметричне моделювання систем у часовій області. У поєднанні з пакетами Neural Network і Fuzzy Logic може бути створено безліч засобів для обробки даних або виділення класифікаційних характеристик. Засіб генерації сигналів дозволяє створювати імпульсні сигнали різної форми.
Генерація сигналів в пакеті Signal Processing
Сигналом будемо називати дані, упорядковані відносно деякого аргументу (наприклад, часу, частоти, просторової координати). Якщо в якості аргументу вибрано час, то еквівалентними поняттями будуть часовий процес, часова реалізація.
Для генерації сигналів використовуються функції середовища Matlab, у тому числі функції пакета Signal Processing.
У пакеті Signal Processing реалізовані наступні функції генерації сигналів:
Функція
Дія
chirp
Генерує косинусоїду із змінною частотою
diric
Обчислює функцію Дирихле
gauspuls
Генерує синусоїду, модульовану функцією Гаусса
gausmonopuls
Генерує моноімпульс Гаусса
pulstran
Генерує імпульси
rectpuls
Генерує аперіодичні прямокутні імпульси
sawtooth
Генерує пилоподібні коливання
sinc
Функція sinc
square
Генерує прямокутні імпульси
tripuls
Генерує аперіодичні трикутні імпульси
vco
Кероване джерело напруг
Детальний опис функцій та їх параметрів можна отримати з довідкової системи Matlab або використовуючи команду help <ім’я функції>.
Розглянемо приклади генерації сигналів.
1. Потрібно отримати синусоїдальний сигнал із заданою частотою f = 0,2Гц і різними частотами дискретизації fд = 1Гц, 3Гц, 10Гц. Довжина сигналу 20с.
Оскільки робота середовища Matlab орієнтована на матричне представлення сигналів, то поставимо спочатку три вектора часу t, які будуть відповідати різним частотам зняття даних (частотам дискретизації).
>> fs1=1; fs2=3; fs3=10;
>> T=20; f=0.2;
>> t1=0:1/fs1:T;
>> t2=0:1/fs2:T;
>> t3=0:1/fs3:T;
%fs – sampling frequency – частота дискретизації
% T – довжина сигналу ; f- частота сигналу
Для генерації синусоїдального сигналу (обчислення функції sin в заданих вектором ti точках використовується функція Matlab - sin. Уточнимо, необхідні для цієї функції, аргументи:
>> help sin
SIN Sine.
SIN(X) is the sine of the elements of X
Overloaded methods
help sym/sin.m
Далі задамо вектор сигналів:
>> y1=sin(f*t1);
>> y2=sin(f*t2);
>> y3=sin(f*t3);
Для візуалізації сигналів скористаємося функцією plot:
>> plot(t1,y1,'-ro',t2,y2,'-g>',t3,y3,'-b')
>> grid on
>> xlabel('Time');
>> ylabel('Amplitude');
>> title('SIGNAL');
% Відображення сітки
% Підпис осі X
% Підпис осі Y
% Заголовок рисунку
Результат роботи показаний на рис.1.
Рис.1
Всі вищевикладені операції можуть бути оформлені у вигляді m-файлу в редакторі m-файлів (рис 2).
Рис.2
2. Потрібно отримати функцію MATLAB, що генерує сигнал тривалістю 10 с, знятий з кроком 1 / f і представляє собою
параметр f є аргумент функції.
Функція оголошується зарезервованим словом function, після якого слідує вираз [вихідне_значення_функції] = ім’я функції [(аргументи_функції)]
Один з можливих варіантів вирішення цієї задачі наведено нижче:
function A = example1_2(f)
t=0:1/f:10;
t1=0:1/f:3;
A(1:length(t1))=sin(7*pi*t1);
t2=(3+1/f):1/f:6;
A(length(t1)+1:length(t1)+length(t2))=2+sin(7*pi*t2);
t3=(6+1/f):1/f:10;
A((length(t1)+length(t2)+1):(length(t1)+length(t2)+length(t3)))=sin(2*pi*t3);
plot(t,A);
grid on;
Ця функція може бути викликана з інших функцій або запущена з Command Window:
>> example1_2(128);
Результат виконання функції:
Рис. 3
Згортка
Згортка відіграє дуже важливу роль в теорії ЦОЗ.
Дискретною згорткою двох сигналів g і h називають одновимірний масив
Нижче наведена ілюстрація процесу обчислення згортки.
Рис.4
У середовищі MATLAB згортка реалізується наступною функцією
conv (А, B).
У результаті виходить вектор довжиною LENGTH (A) + LENGTH (B) -1.
ХІД РОБОТИ
1. Виконати генерацію сигналів згідно індивідуального завдання.
2. Написати програму, яка обчислює згортку двох сигналів, оформити її у вигляді функції Z = myCONV (A, B). Порівняти результати роботи програми з функцією conv (A, B).
3. Для сигналів знайти згортки (використовуючи свою програму) відповідно до завдання. Пояснити отримані результати аналітично.
A={…0,1,1,1,1,1,0,…}
B={…,0,1,2,3,0,…}
C={…,0,2,1,0.5,0,…}
D={…,0,1,2,3,4,5,0,…}
E={…,0,5,4,5,3,1,0,…}
F=sin(2*pi*t)+0.1*randn(1,length(t)); t=0:1/125:10;
G={…,0,2,1,2,0,…}
A*A
B*C; C*B
(D*E)*B; D*(E*B)
D*(E+B); D*E+D*B
F*A
F*G
ВИМОГИ ДО ОФОРМЛЕННЯ ЗВІТУ
Результати виконаної лабораторної роботи оформляються у вигляді звіту на листах стандартного паперу формату А4, який має містити:
титульний лист;
мету роботи;
завдання для конкретного варіанта;
текст програми;
копію екрана з результатами виконання (на основних кроках);
короткі висновки щодо виконаної роботи.
КОНТРОЛЬНІ ЗАПИТАННЯ.
Які властивості згортки використовувалися в лабораторній роботі?
Роль згортки в ЦОС.
У чому відмінність дискретної згортки від безперервної?
Як представити дискретний сигнал з використанням згортки і дельта-функції?
ВАРІАНТИ ЗАВДАНЬ
Генеоація сигналів виконується для кожного варіанту згідно порядкового номера в журналі п.
Опис сигналу
Параметри
A
B
C
D
Крок
Гармонічний сигнал с частотою A з нормально розподіленим шумом (randn)
10 Гц
1/128
20 Гц
1/128
30 Гц
1/128
Гармонічний сигнал, частота якого міняється по закону At^3+Bt^2+Ct+D
10
5
3
1
1/1024
1
3
5
10
1/1024
10
100
50
2
1/1024
Синусоїда із змінною частотою від A до B по законах С і D
5
100
лінійний
квадр.
1/1024
10
120
лінійний
Exp
1/1024
1
10
exp
квадр.
1/1024
Синусоїда з частотою, що змінюється стрибкоподібно: перша частота А, далі B, C і D
10
20
30
40
1/1024
10
20
10
20
1/1024
100
10
50
5
1/1024
ЛАБОРАТОРНА РОБОТА №2
Тема. «Дослідження функції інтерполяції».
Мета роботи. Дослідити функцію інтерполяції, за допомогою програмного забезпечення MatLab.
ТЕОРЕТИЧНА ЧАСТИНА
Інтерполяція в математиці і статистиці - обчислення проміжних значень величини по деяких відомих її значеннях. Наприклад, пошук значень функції f(x) в точках х, які знаходяться між точками (вузлами І) x0 < x1 < ... < xn, по відомих значеннях yi = f(xi) (де i = 0, 1 ..., n). У випадку, якщо х знаходиться в межах між x0 і xn, аналогічне завдання називається завданням екстраполяції. При простій лінійній інтерполяції значення f(x) в точці х, що задовольняє нерівності x0 < x < x1, приймають значення:
. (1)
Лінійна функція y співпадає з f (x) в точках х = x0 і х = x1. Завдання інтерполяції, із строго математичної точки зору, є невизначеною: якщо про функцію f(x) нічого не відомо, окрім її значень в точках x0, x1..., хn . Тоді її значення в точці х, відмінною від всіх цих крапок, залишається абсолютно довільним. Завдання інтерполяції набуває певного сенсу, якщо функція f(x) і її похідні підпорядковані деяким нерівностям. Якщо, наприклад, задані значення f(x0) і f(x1) і відомо, що при x0 < x < x1 виконується нерівність |f ”(x) | ( M ” то похибка формули (1) може бути оцінена за допомогою нерівності
.
Постановка завдання інтерполяції
Просте завдання інтерполяції полягає в наступному. На відрізку [а, b] задані n + 1 точки xi = х0, х1 . . ., хn, які називаються вузлами інтерполяції, і значення деякої функції f(x) в цих крапках
f(x0)=y0, f(x1)=y1 ..,f(xn)=yn.
(2)
Потрібно побудувати функцію f(х) (інтерполяційна функція), що належить відомому класу і що приймає у вузлах інтерполяції ті ж значення, що і f(x), тобто таку, що
f (x0)=y0, f (x1)=y1 ....,f (xn)=yn.
(3)
Геометрично це означає, що потрібно знайти криву f(х) деякого певного типу, що проходить через задану систему точок M(xi, yi) (i = 0, 1 ..., n) (рис.1).
Рис.1. Крива інтерполяційної функція f(х).
У такій загальній постановці завдання може мати нескінченну безліч рішень або зовсім не мати рішень.
Проте це завдання стає однозначним, якщо замість довільної функції f(х) шукати поліном j(х) (інтерполяційний поліном) ступеня не вище n, що задовольняє умовам (3), тобто такий, що
j(x0)=y0, j(x1)=y1…,j(xn)=yn.
(4)
Отримано інтерполяційну формулу,
(5)
яку зазвичай використовують для наближеного обчислення значень даної функції φ(х) для значень аргументу х, відмінних від вузлів інтерполяції. Така операція називається інтерполяцією функцій.
Загальні теоретичні відомості про MATLAB
Після запуску MATLAB на екрані з’явиться вікно, показане на рис.2. MATLAB - інтерактивна діалогова система. Тому більша частина її головного вікна призначена для вводу-виводу результатів. Ця область називається командним вікном.
Рис.2. Головне меню MATLAB.
Спробуємо обчислити значення будь-якого виразу, ввівши його в даному вікні і натиснувши клавішу Enter:
» sqrt(cos(pi/12r2 + 1)
ans =1.393
Отже, MATLAB може працювати як дуже великий і могутній калькулятор, вираховуючи значення математичних виразів. При цьому арифметичні операції записуються традиційно, для піднесення до ступеня використовується знак Порядком обчислень можна керувати за допомогою круглих дужок, і в круглих же дужках записуються аргументи функцій, що викликаються (у даному прикладі використовуються функції косинуса cos і квадратного кореня sqrt).
Нижче показане, як виглядають команди, що вводяться, і результати, що виводяться, у вікні MATLAB. При представленні результатів в книзі порожні рядки видалені для економії місця. Оскільки ми не назвали результат обчислень ніякою змінною, MATLAB автоматично створив для нього змінну з іменем ans і показав значення. Проте, головна цінність MATLAB полягає в можливості одночасно оперувати кількома значеннями. Введемо наступну команду:
» х = 1:0.5:5 х = Columns I through 7
1.0000 1.5000 2.0000 2.5000 3.0000 3.5000 4.0000 Columns 8 through 9 4.5000 5.0000
Дослідження функції інтерполяції у MATLAB.
Інтерполяція в MATLAB виконується за допомогою функції interp. Синтаксис її виклику наступний:
у = interp(x. r)
Тут х — вхідний сигнал, r — цілочисельний коефіцієнт підвищення частоти дискретизації. Вихідний параметр у — інтерпольований сигнал.
Для інтерполяції використовується нерекурсивний фільтр з лінійною ФЧХ, що перекриває ціле число міжвідлікових інтервалів. За замовчуванням порядок фільтру рівний 8*r, тобто фільтр в кожен момент використовує 8 відліків вхідного сигналу. Частота зрізу фільтру за замовчуванням рівна половині початкової частоти Найквіста. Використовуючи третій і четвертий вхідний параметри, можна керувати довжиною фільтру і його частотою зрізу:
у = interp(x. r. 1. alpha).
Тут 1 — половина кількості відліків, використовуваних для інтерполяції (довжина фільтру рівна 2*r*1+1), alpha — нормована частота зрізу фільтру (значення 1 відповідає частоті Найквіста). За замовчуванням 1=4 і alpha=0,5.
При вказівці двох вихідних параметрів в другому з них функція повернення;: коефіцієнти фільтру, використаного для інтерполяції:
[у. b] = interp(.)
Розглянемо приклад інтерполяції, сформувавши для цього 13 відліків, приймають значення ±1, і доповнивши їх з кожного боку п'ятьма нулями:
» x = [0 0 0 0 0 1 1 1 1 1 -1 -1 1 1 -1 1 -1 1 0 0 0 0 0];
підвищуємо частоту дискретизації в 5 раз
» y = interp(x,5);
графік інтерпольованого сигналу –суцільна лінія
» plot((0:length(y)-1), y);
графік початкового сигналу - кружки
» hold on
» plot((0:length(x)-1)*5, x, 'o');
» hold off
Рис.3. Початковий (кружечки) і інтерпольований (суцільна лінія) сигнали
при п'ятикратному підвищенні частоти дискретизації
Зверніть увагу на великі викиди, сформовані між відліками з однаковими значеннями в процесі інтерполяції. Ці викиди обумовлені саме обмеженням смуги частот вихідного сигналу.
ХІД РОБОТИ
Ознайомитись з теоретичними відомостями лабораторної роботи.
Запустити програму в командному вікні програми MATLAB використавши свій варіант завдання.
Скопіювати у звіт лабораторної роботи лістинг програми.
Скопіювати у звіт лабораторної роботи скріншот вихідного сигнала .
Скопіювати у звіт лабораторної роботи скріншот графік передискретизованого сигнала.
Написати висновки до лабораторної роботи.
Оформити звіт згідно вимог.
ВИМОГИ ДО ОФОРМЛЕННЯ ЗВІТУ
Результати виконаної лабораторної роботи оформляються у вигляді звіту на листах стандартного паперу формату А4, який має містити:
титульний лист;
мету роботи;
завдання для конкретного варіанта;
текст програми;
копію екрана з результатами виконання (на основних кроках);
короткі висновки щодо виконаної роботи.
КОНТРОЛЬНІ ЗАПИТАННЯ.
Що означає функція інтерполяції?
Що означає функція екстраполяції?
Коли застосовуються відповідні функції?
Умови зменшення помилки від застосованих функцій?
ВАРІАНТИ ЗАВДАНЬ
1
х=[0 000011111-1-111-11-1100000]
2
х=[0 0000111111-1-11-111100000]
3
х=[0 000011-1-11-1-111-11-1100000]
4
х=[0 000011111-1-11111-1100000]
5
х=[0 000011111-1-111-111-100000]
6
х=[0 0000111111-11111-1100000]
7
х=[0 000011111-1111-11-1100000]
8
х=[0 0000111-11-1-111-11-1100000]
9
х=[0 0000111-11-1111-11-1100000]
10
х=[0 000011-1-11-11-11-11-1100000]
11
х=[0 000011-1111-1-11-111100000]
12
х=[0 0000111-1-1-1111-11-1100000]
ЛАБОРАТОРНА РОБОТА №3
Тема. «Дослідження функції передискретизації за допомогою програмного середовища MatLab».
Мета роботи. Вивчити основні функції MatLab для виконання передискретизації, засвоїти навики працювання на MatLab.
ТЕОРЕТИЧНА ЧАСТИНА
Для виконання передискретизації в MatLab використовується функція resample. Синтаксис її виклику наступний:
у = resample(x. р. q)
Тут х — вхідний сигнал, р і q — чисельник і знаменник дробового коефіцієнта зміни частоти дискретизації. Вихідний параметр у — передискретизований сигнал. Як фільтр використовується нерекурсивний ФНЧ, розрахований за допомогою функції firls з використанням вікна Кайзера.
Ядром функції resample є функція upfirdn (upsampling, FIR filtering and downsampling), яка і виконує приведену вище послідовність дій. Ця функція реалізована в машинних кодах (у вигляді DLL-файлу) для досягнення максимальної продуктивності. Функцію upfirdn можна використовувати в тих випадках, коли при передискретизации необхідно задати конкретний ФНЧ. Синтаксис виклику функції upfirdn наступний:
у = upfirdn(x. h. р. q)
Тут х — вхідний сигнал, p/q — коефіцієнт зміни частоти дискретизації, h — імпульсна характеристика нерекурсивного ФНЧ. Вихідний параметр у — передискретизованний сигнал.
Для здійснення блокової обробки сигналу є варіант синтаксису з доступом до внутрішнього стану фільтру:
[у. z2] = upfirdn(x. h. р. q. z1)
Тут zl — початковий стан фільтру, z2 - його кінцевий стан. Довжина вектора zl повинна бути на одиницю менше довжини імпульсної характеристики фільтру h.
Якщо один з параметрів х і h є матрицею, ця матриця розглядається як багатоканальний сигнал або фільтр (кожен стовпець матриці відповідає одному каналу). Якщо обидва параметри х і h є матрицями з однакові числом стовпців, при обробці кожного сигналу використовується свій фільтр. Вихідний сигнал у у всіх цих випадках є матрицею з тим же числом стовпців.
Як приклад збільшимо в 5/4 рази частоту кусково-лінійного сигналу що є набором відліків із значеннями
(4, 5, 6, 7, 8, 9, 10, 6, 5,4, 3, 2}.
Результат показаний на рис.1.
» x = [4:10 6:-1:2];
» y= resample(x, 9, 7);
графік початкового сигналу - стеблинки
» stem(0:length(x)-1, x);
графік передискретизированного сигналу - хрестики
» hold on
» plot((0:length(y)-1)*4/5, y, 'x');
» hold off
Рис 1Початковій (стеблинки) і передискретизований
(хрестики) сигнали при підвищенні частоти дискретизації в 5/4 рази
На рис.1 видно, що нові відліки дійсно інтерполюють початковий сигнал, проте спостерігається і ефект Гиббса хоча в даному випадку він виражений слабо, оскільки частота дискретизації змінюється.
ХІД РОБОТИ
Ознайомитись з теоретичними відомостями лабораторної роботи.
Запустити програму в командному вікні програми MATLAB використавши свій варіант завдання.
Скопіювати у звіт лабораторної роботи лістинг програми.
Скопіювати у звіт лабораторної роботи скріншот вихідного сигналу .
Скопіювати у звіт лабораторної роботи скріншот графіку передискретизованого сигналу.
5.Написати висновки до лабораторної роботи.
6.Оформити звіт згідно вимог.
ВИМОГИ ДО ОФОРМЛЕННЯ ЗВІТУ
Результати виконаної лабораторної роботи оформляються у вигляді звіту на листах стандартного паперу формату А4, який має містити:
титульний лист;
мету роботи;
завдання для конкретного варіанта;
текст програми;
копію екрана з результатами виконання (на основних кроках);
короткі висновки щодо виконаної роботи.
Звіти, складені без дотримання цих вимог, прийматися не будуть.
КОНТРОЛЬНІ ЗАПИТАННЯ.
1. Яка функція використовується для виконання пере дискретизації в MATLAB.
2. Напишіть синтаксис виклику функції передискретизації.
3. Для чого в MATLAB використовується функція resample.
4. Яка функція в MATLAB є ядром функції передискретизації.
5. Напишіть синтаксис виклику функції upfidn.
6. Що означає функція передискретизації?
7. Коли застосовується функція передискретизації?
ВАРІАНТИ ЗАВДАНЬ
1
y= resample(x, 3, 2);
2
y= resample(x, 9, 7);
3
y= resample(x, 6, 4);
4
y= resample(x, 6, 5);
5
y= resample(x, 9, 8);
6
y= resample(x, 8, 6);
7
y= resample(x, 8, 7);
8
y= resample(x, 13, 9);
9
y= resample(x, 7, 5);
10
y= resample(x, 9, 7);
11
y= resample(x, 10, 6);
12
y= resample(x, 11, 8);
ЛАБОРАТОРНА РОБОТА №4
Тема. «Дослідження Гаусового радіоімпульса».
Мета роботи. Ознайомитись з функціями дослідження Гаусового радіоімпульсу gauspuls.
ТЕОРЕТИЧНА ЧАСТИНА
Для формування одиночного радіоімпульсу з Гаусовою огинаючою і одиничною амплітудою служить функція gauspuls:
у = gauspulsCt. fc. bw, bwr)
Тут t — вектор значень часу, fc — несуча частота в герцах, bw — відносна ширина спектру (ширина спектру, що ділиться на несучу частоту), bwr рівень (у децибелах), по якому проводиться вимірювання ширини спектру.
Результат, що повертається, у — вектор розрахованих значень сигналу, що визначаються за наступною формулою:
у = ехр(-аt2) cos(2пfct). (1)
коефіцієнт а керує тривалістю імпульсу і, відповідно, шириною його спектру. Сигнал (1) має спектральну функцію, рівну :
Якщо fс >>a, то можна знехтувати накладенням «хвостів» зрушених копій спектра. Тоді параметр а пов'язаний з відносною шириною спектру і рівнем в децибелах, по якому вона визначається, таким чином:
Параметри bwr, bw і fc можна упустити. При цьому використовуються їх значення по замовчуванню: bwr=-6 дБ, bw=0,5 і fс=1000 Гц.
При виклику функції gauspuls можна використовувати від одного до трьох вихідних параметрів:
[у. yq. ye] = gauspuls (...)
У другому вихідному параметрі yq функція повертає доповнення квадратури (quadrature) для розрахованого радіоімпульсу у. Вектор yq відрізняється від вектора у фазовим зрушенням несучого коливання на 90°.
У третьому вихідному параметрі уе функція повертає огинаючу (envelope) сформованого радіоімпульсу. Вектор уе є перший множник формули (1) (відсутнє множення на косинус).
В якості прикладу сформуємо Гаусів радіоімпульс з несучою частотою 4 кГц і відносною шириною спектру 10%, зміряною по рівню -20 дБ, а потім побудуємо графік його спектру, щоб переконатися в правильності розрахунків. Частоту дискретизації приймемо рівною 16 кГц.
Лістинг програми.
» Fs = 16еЗ;
частота дискретизації
» t = -10e-3:1/Fs:10e-3;
дискретний час
» Fc = 4еЗ;
несуча частота
» bw = 0.1;
відносна ширина спектру
» bwr = -20;
рівень вимірювання ширини спектру
» s = gauspuls (t. Fc. bw. bwr):
» Nfft = 2^nextpow2(length(s)):
» sp = fft(s. Nfft):
спектр
» sp_dB = 20*loglO(abs(sp)):
амплітудний спектр в дБ
» f = (0:Nfft-1)/Nfft*Fs;
вектор частот спектру
» plot(t. s)
графік сигналу
» figure
графік амплітудного спектру
» plot(f(1:Nfft/2).
»sp_dB(1:Nfft/2))
максимальний рівень спектру в децибелах
» sp_max_db = 20*log10(max(abs(sp)));
edges = Fc * [1-bw/2 1+bw/2]:
граничні частоти
відображаємо задані при розрахунку межі спектру
» hold on
» plot(edges. sp_max_db([l l])+bwr. 'о')
» hold off
Рисунок 1. Гаусів радіоімпульс, сформований функцією gauspuls (зверху), і його амплітудний спектр (знизу)
З графіка спектру (див. рис.1 знизу) видно, що задані при виклику функції gauspuls параметри спектру витримані точно.
Нарешті, у функції gauspuls є ще один варіант використання — вона дозволяє розрахувати час, за який що огинає Гаусів імпульс впаде до заданого рівня щодо максимуму. При цьому замість вектора значень часу в якості першого вхідного параметру використовується рядок 'cutoff':
tc = gauspuls('cutoff'. fc. bw. bwr. tpe)
Вхідні параметри fc, bw і bwr мають той же сенс, що і раніше, а tpe — що рівень огинає (у децибелах щодо максимуму), момент досягнення якого потрібно визначити.
Повертаючий результат tc — момент досягнення що огинає рівня tpe (тому напівширина імпульсу, зміряна по рівню tpe).
В якості прикладу розрахуємо час, за який що огинає сформований у попередньому прикладі імпульс зменшується на 6 дБ (приблизно у два рази):
» gauspuls(‘cutoff'. Fc. bw. bwr. -6)
ans =
= 0.0020
Отриманий результат відповідає графіку сигналу, приведеному на рис.1, зверху.
ХІД РОБОТИ
Ознайомитись з теоретичними відомостями лабораторної роботи.
Запустити програму №1 в командному вікні програми MATLAB використавши свій варіант завдання.
Скопіювати у звіт лабораторної роботи скріншоти виконання програми.
Написати висновки до лабораторної роботи.
Оформити звіт згідно вимог.
ВИМОГИ ДО ОФОРМЛЕННЯ ЗВІТУ
Результати виконаної лабораторної роботи оформляються у вигляді звіту на листах стандартного паперу формату А4, який має містити:
титульний лист;
мету роботи;
завдання для конкретного варіанта;
текст програми;
копію екрана з результатами виконання (на основних кроках);
короткі висновки щодо виконаної роботи.
КОНТРОЛЬНІ ЗАПИТАННЯ.
Показати імпульс з Гаусовим розподілом.
Як в літературі ще називається імпульс з розподілом Гауса?
Які властивості Гаусового імпульса щодо фазових спотворень?
Чи можна отримати високу вибірність Гаусового фільтра порівняно з іншими