Міністерство освіти і науки, молоді та спорту України
Тернопільський національний економічний університет
Факультет комп’ютерних інформаційних технологій
Кафедра спеціалізованих
комп’ютерних системем
ЛАБОРАТОРНА РОБОТА №1
З ДИСЦИПЛІНИ «ЦИФРОВА ОБРОБКА СИГНАЛІВ ТА ЗОБРАЖЕНЬ»
Тема роботи: Генерація сигналів. Згортка. Структура Signal Processing Toolbox.
Мета роботи: Отримати основні навики роботи в середовищі Matlab. Вивчити можливості пакета Signal Processing Toolbox по генерації сигналів. Вивчити властивості згортки.
Завдання
Виконати генерацію сигналів згідно індивідуального завдання.
Опис сигналу
Параметри
A
Крок
Гармонічний сигнал с частотою A з нормально розподіленим шумом (randn)
10 Гц
1/128
Написати програму, яка обчислює згортку двох сигналів, оформити її у вигляді функції Z = myCONV (A, B). Порівняти результати роботи програми з функцією conv (A, B).
Для сигналів знайти згортки (використовуючи свою програму) відповідно до завдання. Пояснити отримані результати аналітично.
А={…,0,1,1,1,1,1,…}, A*A.
Код програми
%main.m
figure('Name', 'Лабораторна №1 Вальків В. Д. КСМ-42', 'NumberTitle', 'Off');
A=10; %частота гармонічного сигналу
fs=128; %частота дискретизації
t=0:1/fs:1;
y = sin(A*t)+randn(1,length(t)); %сигнал з нормально розподіленим шумом
plot(t,y); grid on; xlabel('Час'); ylabel('Амплітуда');
hold on; plot(t,y,'o'); hold off;
/
Рисунок 1 – Гармонічний сигнал з частотою 20 Гц з нормально розподіленим шумом
Код програми
% myCONV.m
function Z = myCONV(A,B)
for i=1:(length(A)+length(B)-1)
jmin=i+1-length(B);
if jmin<1
jmin=1;
end;
jmax=i;
if i>length(A)
jmax=length(A);
end;
Z(i)=0;
for j=jmin:jmax
Z(i)=Z(i)+A(j)*B(i+1-j);
end;
end;
/
Рисунок 2 – Результати виконання двох функцій myCONV і conv
Після виконання двох функцій myCONV і conv, було отримано ідентичні результати. Отже написана функція myCONV працює вірно.
Код програми
%task_3.m
figure('Name', 'Лабораторна №1 Вальків В. Д. КСМ-42', 'NumberTitle', 'Off');
A = [0,1,1,1,1,1,0];
B=[0,0,1,2,3,0,0];
C=[0,2,1,0.5,0];
D=[0,1,2,3,4,5,0];
E=[0,5,4,5,3,1,0];
t=0:1/125:10; F = sin(2*pi*t)+0.1*randn(1,length(t));
G=[0,2,1,2,0];
% Графіки вхідних сигналів
subplot(7,1,1); plot(A); title('Сигнал А');
subplot(7,1,2); plot(B); title('Сигнал B');
subplot(7,1,3); plot(C); title('Сигнал C');
subplot(7,1,4); plot(D); title('Сигнал D');
subplot(7,1,5); plot(E); title('Сигнал E');
subplot(7,1,6); plot(F); title('Сигнал F');
subplot(7,1,7); plot(G); title('Сигнал G');
% Згортки сигналів
figure('Name', '3.1', 'NumberTitle', 'Off');
subplot(3,1,1); plot(myCONV(A,A)); title('Згортка A*A');
subplot(3,1,2); plot(myCONV(B,C)); title('Згортка B*C');
subplot(3,1,3); plot(myCONV(C,B)); title('Згортка C*B');
figure('Name', '3.2', 'NumberTitle', 'Off');
subplot(3,1,1); plot(myCONV(myCONV(D,E), B)); title('Згортка (D*E)*B');
subplot(3,1,2); plot(myCONV(D,myCONV(E,B))); title('Згортка D*(E*B)');
subplot(3,1,3); plot(myCONV(D,E+B)); title('Згортка D*(E+B)');
figure('Name', '3.3', 'NumberTitle', 'Off');
subplot(3,1,1); plot(myCONV(D,E)+myCONV(D,B)); title('Згортка D*E+D*B');
subplot(3,1,2); plot(myCONV(F,A)); title('Згортка F*A');
subplot(3,1,3); plot(myCONV(F,G)); title('Згортка F*G');
/
Рисунок 3 – Вхідні сигнали
/
Рисунок 4 – Результати згорток (1/3)
/
Рисунок 5 – Результати згорток (2/3)
/
Рисунок 6 – Результати згорток (3/3)
Висновки
Під час виконання лабораторної роботи №1 були отримані основні навики роботи в середовищі Matlab, вивчено можливості пакета Signal Processing Toolbox по генерації сигналів. А також було проведено генерацію сигналі, розроблений алгоритм розрахунку дискретної згортки та розраховані згортки певних сигналів.