Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Отчёт

.docx
Скачиваний:
68
Добавлен:
01.05.2015
Размер:
124.77 Кб
Скачать

САНКТ-ПЕТЕРБУРГСКИЙ НАЦИОНАЛЬНЫЙ

ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ

ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ, МЕХАНИКИ И ОПТИКИ

Кафедра речевых информационных систем

ЦИФРОВАЯ ОБРАБОТКА СИГНАЛА

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

«Работа в среде Matlab. Структура Signal Processing Toolbox.

Генерация сигналов. Свертка»

Выполнил:

Магистр группы № 5599 Корявцев В.П.

Проверил:

к.т.н. доцент Симончик К. К.

_________________________

Санкт-Петербург

2012

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

Задание№1

Выполнить генерацию следующих сигналов:

Пункт1: Гармонический сигнал с частотой A с нормально распределенным шумом (randn)

10 Гц

1/128

20 Гц

1/128

30 Гц

1/128

Код программы:

function HarmonicSignal

f1 = 10; % частота сигнала 1

f2 = 20; % частота сигнала 2

f3 = 30; % частота сигнала 3

T = 128; % T – длина сигнала

t=0:1/T:1; % вектор времени t, изменяющийся с шагом 1/T

A = 3; % амплитуда

% зададим нормально распредел?нный шум v(t)

y1=A*sin(f1*t)+randn(1,length(t));

y2=A*sin(f2*t)+randn(1,length(t));

y3=A*sin(f3*t)+randn(1,length(t));

plot(t,y1,t,y2,t,y3)

grid on

xlabel('Time');

ylabel('Amplitude');

title('SIGNAL');

Пункт2: Гармонический сигнал, частота которого меняется по закону At^3+Bt^2+Ct+D

10

5

3

1

1/1024


Код программы:

function HarmonicSignalFormula

T = 1024; % T – длина сигнала

t=[0:1/T:1]; % вектор времени t, изменяющийся с шагом 1/T

A = 10 * (t.^3);

B = 5 * (t.^2);

C = 3 * t;

D = 1 * t;

f1 = [(A+B+C+D)]; % частота сигнала 1

Amp = 3; % амплитуда

y1=Amp*sin(f1.*t);

plot(t,y1, '.')

grid on

xlabel('Time');

ylabel('Amplitude');

title('SIGNAL');

Пункт 3: Синусоида с меняющейся частотой от A до B по законам С и D.

5

100

линейный

квадр.

1/1024

Код программы:

function HarmonicSignalSqrFormula

A = 5;

B = 100;

t1 = 0:1/1024:1.5;

t2 = 1.5:1/1024:3;

f1 = A:(B-A)/(length(t1)-1):B;

y1 = sin(f1.*t1);

f2 = sqrt(B):(sqrt(A)-sqrt(B))/(length(t2)-1):sqrt(A);

y2 = sin(f2.^2.*(t2-1.5));

plot(t1,y1, t2,y2)

grid on

xlabel('Time');

ylabel('Amplitude');

title('SIGNAL');

Пункт 4: Синусоида с частотой меняющейся скачкообразно: первая частота А, далее B, C и D.

10

20

30

40

1/1024


Код программы:

function SinSignalJump

t = 0:1/1024:4;

A = [10 20 30 40];

y = sin(A(1)*t).*( (0<=t)&(t<1) ) +...

sin(A(2)*t).*( (1<=t)&(t<2) ) +...

sin(A(3)*t).*( (2<=t)&(t<3) ) +...

sin(A(4)*t).*( (3<=t)&(t<=4) );

plot(t,y)

grid on

xlabel('Time');

ylabel('Amplitude');

title('SIGNAL');

Задание№2

Написать программу, вычисляющую свертку двух сигналов, оформить ее в виде функции Z=myCONV(A,B). Сравнить результаты работы программы с функцией conv(A,B).

Код функции:

function Z = myCONV(a, b)

if ~(isvector(a)||isvector(b))

disp('Входные параметры должны быть векторами!')

end

n = length(a); % длинна полинома a

m = length(b); % длинна полинома b

M = zeros(m,m+n-1); % пустая матрица, куда будем собирать частичные произведения

for i = 1:m % получаем частичные произведения

M(i, i:i+n-1 ) = a*b(i);

end

% находим суммы частичных произведений

% и получаем результат

Z = sum(M);

End

Пример сравнения:

function Y = conv_check()

A= [0,1,1,1,1,1,0];

Z_check = myCONV(A,A);

Z_check_1 = conv(A,A);

figure; plot(Z_check); title('A*A_myConv');

grid on

figure; plot(Z_check_1); title('A*A_MTALAB_conv');

grid on

Y = ('done');

Задание№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,…}

  1. A*A.

  2. B*C; C*B.

  3. (D*E)*B; D*(E*B).

  4. D*(E+B); D*E+D*B.

  5. F*A.

  6. F*G

Код функции:

function X = svertka_zna4eniya()

A = [0,1,1,1,1,1,0];

B = [0,1,2,3,0,0,0];

C = [0,2,1,0.5,0,0,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,0,0];

Z1 = myCONV(A,A);

Z2_1 = myCONV(B,C);

Z2_2 = myCONV(C,B);

Z3_1 = myCONV(myCONV(D,E),B);

Z3_2 = myCONV(D,myCONV(E,B));

Z4_1 = myCONV(D,E+B);

Z4_2 = myCONV(D,E)+myCONV(D,B);

Z5 = myCONV(F,A);

Z6 = myCONV(F,G);

figure; plot(Z1); title('A*A');

grid on

figure; plot(Z2_1); title('B*C');

grid on

figure; plot(Z2_2); title('C*B');

grid on

figure; plot(Z3_1); title('(D*E)*B');

grid on

figure; plot(Z3_2); title('D*(E*B)');

grid on

figure; plot(Z4_1); title('D*(E+B)');

grid on

figure; plot(Z4_2); title('D*E+D*B');

grid on

figure; plot(Z5); title('F*A');

grid on

figure; plot(Z6); title('F*G');

grid on

X = ('done');

Контрольные вопросы

1. Какие свойства свертки использовались в лабораторной работе?

1) Дистрибутивность: h(t) * [a(t)+b(t)] = h(t) * a(t)+h(t) * b(t)

2) Коммутативность: a(t) * b(t) = a(t) * b(t)

3) Ассоциативность: [a(t) * b(t)] * h(t) = a(t) * [b(t)* h(t)]

2. Роль свертки в ЦОС.

Свертка – это математический способ комбинирования двух сигналов для формирования третьего сигнала. Это один из самых важных методов ЦОС. Пользуясь стратегией импульсного разложения, системы описываются сигналом, называемым импульсной характеристикой. Свертка важна, так как она связывает три сигнала: входной сигнал, выходной сигнал и импульсную характеристику.

Преобразование свертки однозначно определяет выходной сигнал y(t) для установленного значения входного сигнала x(t) при известном значении функции импульсного отклика системы h(t).

3. В чем отличие дискретной свертки от непрерывной?

Формула для непрерывной свертки: y(t) = x() h(t-) d

Формула для дискретной свертки: y(kt) =h(nt) x(kt-nt)

Отличия:

- вид формулы

- нижние пределы суммирования и интегрирования

4. Как представить дискретный сигнал с использованием свертки и дельта-функции?

Представление дискретного сигнала с помощью дельта-функции (цифрового единичного импульса):

x(n) =

- цифровой единичный импульс

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

y(n) =x(m) h(n-m)

h(n) – реакця на u0(n) – импульсная характериска.