Непрерывная и дискретная свертки

Автор: Пользователь скрыл имя, 14 Декабря 2010 в 00:40, лабораторная работа

Описание работы

Цель работы: Изучение понятия и свойств непрерывной и дискретной свертки, приобретение практических навыков вычисления свертки в среде Matlab.

Работа содержит 1 файл

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ.doc

— 210.50 Кб (Скачать)

      МИНИСТЕРСТВО  ОБРАЗОВАНИЯ И НАУКИ РФ 

НОВОСИБИРСКИЙ  ГОСУДАРСТВЕННЫЙ  ТЕХНИЧЕСКИЙ   
УНИВЕРСИТЕТ
 

ФАКУЛЬТЕТ  АВТОМАТИКИ  И  ВЫЧИСЛИТЕЛЬНОЙ  ТЕХНИКИ 

Кафедра  Систем Сбора и Обработки Данных 
 
 
 
 
 
 
 
 
 
 
 
 

ЛАБОРАТОРНАЯ  РАБОТА  № 5 

НЕПРЕРЫВНАЯ И ДИСКРЕТНАЯ СВЕРТКИ 
 
 
 
 
 
 
 

Группа: АТ-83          Преподаватель: доц. Щетинин Ю.И.

Студент: Кнаус  О.А. 
 
 
 
 
 
 
 
 
 
 
 
 
 

    Новосибирск

     2010 
 

       Цель  работы:  Изучение понятия и свойств непрерывной и дискретной свертки, приобретение практических навыков вычисления свертки  в среде Matlab. 

  1. Свертка двух непрерывных  по времени сигналов                  
    Численное вычисление непрерывной свертки может быть аппроксимировано конечной суммой вида 
                      
    ,

    где  - интервал (шаг) дискретизации 

Последовательность  комманд для построения графиков: 

    % Численное вычисление  непрерывной свертки 

    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(). 
 

    1.   Свертка двух непрерывных  по времени сигналов:
 

     

Последовательность  комманд для построения графиков: 

    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. Сигналы

и их свертка 
 

    1.   Функция sqgen(L,T)

      Генерирует прямоугольную последовательность импульсов длиной L отсчетов, периодом T отсчетов. 

function G=sqgen(L,T)

T=10; L=50

n=0:1:L;

G = square(T*n/16);

stem(n,G);

Рис. 3. Прямоугольная  волна. 

    1. Вычисление  свертки сигналов delta1=[1] и sqgen(50, 10).
 

Последовательность  комманд для построения графиков:

    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) и их свертка 
 

    1.   Вычисление свертки  сигналов delta2=[1 zeros(1,9)] и 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 первых отсчётов повторяют сигнал, а остальные нулевые. 

    1.   Создание плоского импульса с помощью команды  h1=[ones(1,3)].

      Вычисление свертки h1 и sqgen(50, 10) 

Информация о работе Непрерывная и дискретная свертки