Скачиваний:
47
Добавлен:
01.05.2014
Размер:
2.3 Mб
Скачать

Министерство образования и науки

Санкт-Петербургский государственный электротехнический университет «ЛЭТИ»

Кафедра МО ЭВМ

Отчет

по лабораторной работе №8

по дисциплине «Цифровая обработка сигналов»

Выполнил: Рыжок М. гр. 3341

Проверил: Симончик К.

Лабораторная работа №8

Цель работы: Получить основные навыки работы в среде Matlab. Изучить возможности пакета Signal Processing Toolbox по генерации сигналов. Изучить свойства свертки

Постановка задания:

1)Выполнить генерацию сигналов

  • Гармонический сигнал с заданной частотой с нормально распределенным шумом

  • Гармонический сигнал, частота которого зависит от времени, как полином 3-й степени

  • Синусоида с меняющейся частотой от А до В по заданному закону (линейный, квадратичный, показательный)

  • Синусоида с частотой, меняющейся скачкообразно: сначала А, потом В, потом С и D.

2)Написать программу, вычисляющую свертку 2-х сигналов, оформить ее в виде функции z = myconv(a, b). Сравнить результаты работы программы с функцией conv(a, b).

3)Для сигналов A-G, приведенных ниже, найти свертки A*A, B*C, C*B, (D*E)*B, D*(E*B), D*(E+B), D*E+D*B, F*A, F*G.

Здесь A = {0, 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}, E = {0, 5, 4, 5, 3, 1, 0}, F = sin(2*pi*t)+0.1*randn(1, length(t)), G = {0, 2, 1, 2, 0}, где t = {0, 1/125, 2/125 …1}.

Генерация сигнала с заданной частотой A и нормально распределенным шумом амплитудой alpha.

function s = randnsignal(A, h, alpha)

if nargin < 3

alpha = 0.1;

end

T = 2*pi;

t = 0:T*h:T;

s = length(t);

plot(t, sin(A.*t)+alpha.*randn(1, s))

Здесь A = 2, alpha = 0.1.

Гармонический сигнал, частота которого изменяется по кубическому закону f = At3+Bt2+Ct+D

function s = cubesignal(A, B, C, D, h)

if nargin < 5

h = 1/1024;

end

T = 2*pi;

t = 0:T*h:T;

f = A.*t.^3+B.*t.^2+C.*t+D;

z = sin(f.*t);

plot(t, z);

s = 1;

Здесь f = t3-t2-0.5t-0.5, z = sin(ft);

Гармонический сигнал, частота которого меняется по линейному закону от А до В.

function s = linearw(A, B, h)

if nargin < 3

h = 1/1024;

end

T = 2*pi;

t = 0:T*h:T;

f = A + ((B-A)/T).*t;

s = sin(f.*t);

plot(t, s)

Здесь A = 1, B = 3;

Гармонический сигнал, частота которого меняется по квадратичному закону от A до B.

function s = quadrw(A, B, h)

if nargin < 3

h = 1/1024;

end

T = 2*pi;

t = 0:T*h:T;

f = A + ((B-A)/T^2).*t.*t;

s = sin(f.*t);

plot(t, s)

Как и в предыдущем случае A = 1, B = 3.

Гармонический сигнал, частота которого меняется по показательному закону от А до В.

function s = expw(A, B, h)

if nargin < 3

h = 1/1024;

end

T = 2*pi;

t = 0:T*h:T;

f = A.*exp((log(B/A)/T).*t);

s = sin(f.*t);

plot(t, s)

Как и в предыдущих случаях А = 1, B = 3.

Гармонический сигнал, частота которого постоянна в каждой четверти периода: сначала A, потом B, затем C и, наконец, D.

function s = jumpsignal(A, B, C, D, h)

if nargin < 5

h = 1/1024;

end

T = 2*pi;

t = 0:h:T;

for i = 1:length(t)

if le(t(i), T/4)

s(i) = sin(A*t(i));

end

if and(t(i)>T/4, le(t(i), T/2))

s(i) = sin(B*t(i));

end

if and(t(i)>T/2, le(t(i), 3*T/4))

s(i) = sin(C*t(i));

end

if and(t(i)>3*T/4, le(t(i), T))

s(i) = sin(D*t(i));

end

end

plot(t, s)

Здесь А = С = 1, В = 10, D = 20.

Функция свертки

%Функция реализует свертку двух массивов в 1

%или умножение двух полиномов, представленных в виде массивов коэффициентов

function f = myconv(t1, t2)

n = length(t1); %длина 1-го массива

m = length(t2); %длина 2-го массива

A = zeros(m, n+m-1); %составлям матрицу произведений

for i = 1:m %строка матрицы - коэффициенты умножения 1-го массива

%на i-ый элемент второго массива, сдвинутые

%соответствующим образом (на i позиций вправо)

for j = 1:n %cтолбцы матрицы таким образом представляют

%коэффициенты при одинаковых степенях

%многочлена-свертки

A(i, j+i-1) = t1(j)*t2(i);

end

end

for k = 1:n+m-1

f(k) = sum(A(1:m, k)); %суммируя А по столбцам, мы получим элементы свертки

end

Проведем испытания функции myconv для двух массивов случайных чисел.

a = {0.9501, 0.2311, 0.6068}

b = {0.3155, 1.5532, 0.7079, 1.9574, 0.5045 }

Матрица А будет выглядеть как

0.2998 0.0729 0.1915 0 0 0 0

0 1.4758 0.3590 0.9426 0 0 0

0 0 0.6726 0.1636 0.4296 0 0

0 0 0 1.8598 0.4524 1.1878 0

0 0 0 0 0.4794 0.1166 0.3062

Свертка двух массивов по результатам функций conv и myconv:

0.2998 1.5487 1.2231 2.9660 1.3614 1.3044 0.3062

Выполняя свертку массивов, описанных в задании, получаем:

A*A = {0 0 1 2 3 4 5 4 3 2 1 0 0}

B*C = C*B = {0 0 2 5 8 8 10 15 0 0}

(D*E)*B = D*(E*B) = {0 0 0 5 24 71 143 237 312 331 252 163 67 15 0 0 0}

D*(E+B) = D*E+D*B = {0 0 6 18 38 61 85 73 55 19 5 0 0}

Сигнал F

Сигнал F*A

Сигнал F*G

Выводы: В ходе лабораторной работы были получены теоретические и практические навыки о представлении сигналов в среде Matlab. Также были исследованы свойства свертки сигналов и, в частности, выяснено, что:

  • Операция свертки коммутативна А*В = В*А

  • Операция свертки ассоциативна: А*(В*С) = (А*В)*С

  • Операция свертки дистрибутивна: А*(B+C) = A*B+A*C

  • Операция свертки может служить для фильтрации зашумленных сигналов.

Соседние файлы в папке Лабораторная работа №8
  • #
    01.05.2014142 б36linearw.m
  • #
    01.05.2014735 б36myconv.asv
  • #
    01.05.2014926 б40myconv.m
  • #
    01.05.2014154 б37quadrw.m
  • #
    01.05.2014159 б38randnsignal.m
  • #
    01.05.20142.3 Mб47ЦОС8.doc