Автор: Пользователь скрыл имя, 14 Декабря 2010 в 00:40, лабораторная работа
Цель работы: Изучение понятия и свойств непрерывной и дискретной свертки, приобретение практических навыков вычисления свертки в среде Matlab.
МИНИСТЕРСТВО
ОБРАЗОВАНИЯ И НАУКИ РФ
НОВОСИБИРСКИЙ
ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ
УНИВЕРСИТЕТ
ФАКУЛЬТЕТ
АВТОМАТИКИ И ВЫЧИСЛИТЕЛЬНОЙ
ТЕХНИКИ
Кафедра
Систем Сбора и Обработки Данных
ЛАБОРАТОРНАЯ
РАБОТА № 5
НЕПРЕРЫВНАЯ
И ДИСКРЕТНАЯ СВЕРТКИ
Группа: АТ-83 Преподаватель: доц. Щетинин Ю.И.
Студент: Кнаус
О.А.
Новосибирск
2010
Цель
работы: Изучение понятия и свойств
непрерывной и дискретной свертки, приобретение
практических навыков вычисления свертки
в среде Matlab.
где
- интервал (шаг) дискретизации
Последовательность
комманд для построения
графиков:
% Численное вычисление непрерывной свертки
T=0.1; % шаг дискретизации
a=5;
i=0:50;
x1=exp(-a*i*T); % сигнал x1
x2=rectpuls(i-10,20); % сигнал x2
n1=length(x1);
n2=length(x2);
figure(2),subplot(411)
set(gca, 'FontName','Times New Roman Cyr', 'FontSize', 10)
plot(i*T,x1)
set(gca, 'FontName','Times New Roman Cyr', 'FontSize', 10)
title('Сигнал x1')
subplot(412), plot(i*T,x2)
set(gca, 'FontName','Times New Roman Cyr', 'FontSize', 10)
title('Сигнал x2')
k1=1:n1+n2-1;
% вычисление свертки
for n=1:n1+n2-1,
y(n)=0;
for k=max(1,n+1-n1):min(n,n2),
y(n)=y(n)+sum(x1(n+1-k)*x2(k))
end
y(n)=y(n)*T;
end
% график свертки сигналов
subplot(413), plot(k1*T,y)
set(gca, 'FontName','Times New Roman Cyr', 'FontSize', 10)
title('Свёртка сигналов x1 и x2')
% вычисление свертки с помощью функции conv()
subplot(414), plot(k1*T,T*convn(x1,x2))
set(gca, 'FontName','Times New Roman Cyr', 'FontSize', 10)
title('Свёртка
с помощью функции convn()')
Рис.1. Графики сигналов и их свертки, вычисленной численным методом и при помощи
функции
convn().
Свертка
сигналов, выполненная численным методом
совпадает со сверткой, вычисленной при
помощи встроенной функции convn().
Последовательность
комманд для построения
графиков:
clear();
% Численное вычисление непрерывной свертки
T=0.1; % шаг дискретизации
t=0:0.1:2;
x1=exp(t./2)-1; % сигнал x1
x2=exp(-2.*t); % сигнал x2
n1=length(x1);
n2=length(x2);
figure(2),subplot(411), plot(t,x1)
set(gca, 'FontName','Times New Roman Cyr', 'FontSize', 10)
title('Сигнал x1')
subplot(412), plot(t,x2)
set(gca, 'FontName','Times New Roman Cyr', 'FontSize', 10)
title('Сигнал x2')
k1=1:n1+n2-1;
% вычисление свертки
for n=1:n1+n2-1,
y(n)=0;
for k=max(1,n+1-n1):min(n,n2),
y(n)=y(n)+sum(x1(n+1-k)*x2(k))
end
y(n)=y(n)*T;
end
% график свертки сигналов
subplot(413), plot(k1.*T,y)
set(gca, 'FontName','Times New Roman Cyr', 'FontSize', 10)
title('Свёртка сигналов x1 и x2')
% вычисление свертки с помощью функции convn()
subplot(414), plot(k1.*T,T*convn(x1,x2))
set(gca, 'FontName','Times New Roman Cyr', 'FontSize', 10)
title('График свёртки с помощью conv()')
Рис.2.
Сигналы
Генерирует
прямоугольную последовательность импульсов
длиной L отсчетов, периодом T отсчетов.
function G=sqgen(L,T)
T=10; L=50
n=0:1:L;
G = square(T*n/16);
stem(n,G);
Рис. 3. Прямоугольная
волна.
Последовательность комманд для построения графиков:
delta1=[1];
s=sqgen(50,10);
c=conv(delta1,s);
subplot(311), stem(delta1);
set(gca, 'FontName','Times New Roman Cyr', 'FontSize', 10)
title ('delta1=[1]')
axis([0, 2, 0, 1.5])
subplot(312), stem(s);
set(gca, 'FontName','Times New Roman Cyr', 'FontSize', 10)
title ('Прямоугольная волна')
axis([0, 55, -1.5, 1.5])
subplot(313), stem(c);
set(gca, 'FontName','Times New Roman Cyr', 'FontSize', 10)
title ('Свёртка delta1=[1] и прямоугольной волны')
axis([0, 55, -1.5, 1.5])
Рис.4.
Функции delta=[1], sqgen(50, 10)
и их свертка
Последовательность
комманд для построения
графиков:
delta2=[1 zeros(1,9)];
s=sqgen(50, 10);
c=conv(delta2,s);
subplot(311)
stem(delta2);
set(gca, 'FontName','Times New Roman Cyr', 'FontSize', 10)
title ('Функция delta2')
axis([1,10,0,1.5])
subplot(312)
stem(s);
set(gca, 'FontName','Times New Roman Cyr', 'FontSize', 10)
title ('Прямоугольная волна')
axis([0,60,-1.5,1.5])
subplot(313), stem(c);
set(gca, 'FontName','Times New Roman Cyr', 'FontSize', 10)
title ('Свёртка')
axis([0,60,-1.5,1.5])
рис.5.
Сигналы delta2=[1 zeros(1,9)]
и s=sqgen(50, 10); их свертка
Свертка любой последовательности и единичной функции имеет вид , период свертки при этом равен отсчетам.
Видим, что период
свертки изменился: 50+10-1=59. При этом
50 первых отсчётов повторяют сигнал, а
остальные нулевые.
Вычисление
свертки h1
и sqgen(50, 10)