- •Основы Matlab.
- •Теоретическая часть
- •Лабораторная работа № 2 Простые вычисления и визуализация результатов в среде Matlab
- •1. Работа в режиме редактирования и отладки m-файлов
- •2. Файлы сценарии и файлы-функции
- •Варианты заданий
- •Лабораторная работа №3 Моделирование сигналов в Matlab
- •Свертка дискретных функций
- •Задание к работе
Свертка дискретных функций
Цель работы: изучение методики определения свертки дискретных функций аналитически и с помощью процедур-функций системы МАТЛАБ, определение переходной характеристики h(n) с помощью операции свертки.
Теоретическая часть.
Существует большое количество разнообразных алгоритмов ЦОС, еще больше находится в стадии разработки или ждет своего открывателя. Однако для всех этих алгоритмов, включая самые сложные, необходимы одни и те же основные операции. Для начала будет полезно рассмотреть некоторые из них, чтобы оценить простоту реализации ЦОС.
Итак, основные операции ЦОС — это свертка, корреляция, фильтрация, дискретные преобразования. Дадим краткое описание каждой из них. При этом заметим, что для всех основных операций ЦОС потребуется выполнение только простых арифметических действий — умножения, сложения, вычитания и операции сдвига. Кроме того, отметим сходство между многими операциями.
Свертка — это одна из наиболее используемых операций в ЦОС. Например, это основная операция цифровой фильтрации. Другой пример – преобразование Гильберта, используемое при вычислении огибающей сигнала. Для двух массивов x1(n) и x2(n) длиной N1 и N2 соответственно, их свертка определяется в общем виде соотношением:
, (1)
где - символ свертки, а .
Если x1(n) трактовать как импульсную характеристику линейной цифровой системы, а x2(n) - как сигнал на входе цифровой системы, тогда массив y(n) представляет собой сигнал на выходе линейной цифровой системы. Импульсная характеристика h(n) – это реакция дискретной системы на единичный импульс или дельта-функцию [nT].
Задание к работе
Задача 1.
Создайте с помощью функции Function[t,y] (Задание 2, лабораторной работы №3) последовательность импульсов длиной 55 отсчетов, периодом 5 отсчетов, шириной 3 отсчета и амплитудой 1, которая должна быть помещена в вектор sq1. Создайте вектор длиной 1 представляющий одиночный импульс (delta1=[1]). Используйте функцию conv для определения свертки векторов sq1 и delta1. В отдельном окне постройте график свертки с помощью функции stem.
% Задача 1 лаб 4
function [x, y] = Function(L, S, T)
x = 0 : 1 : L;
y = pulstran(x, 1 : T : L, 'rectpuls', S);
end
% Задача 1 лаб 4
clear all, clc, close all
[x, sq1] = Function(54, 3, 5);
figure(1)
plot (x, sq1)
axis([0,60,-0.5,1.5]);
figure(2)
stem(x, sq1)
axis([0,60,-0.5,1.5]);
Задача 2.
Создайте вектор длиной 10, в первый его элемент занесите 1, а в остальные 9 нули – delta2 = [1 zeros(1,9);]. C помощью функции conv найдите свертку delta2 и sq1. Постройте в отдельном окне с помощью функции stem график свертки. Поменяйте порядок следования delta2 и sq1 в функции conv и постройте график свертки, сравните полученные графики.
% Задача 2_1 лаб 4
clear all, clc, close all
[x, sq1] = Function(54, 3, 5);
delta1 = [1];
res = conv(sq1, delta1);
figure(3)
stem(x, res)
axis([0,60,-0.5,1.5]);
% Задача 2_2 лаб 4
clear all, clc, close all
delta2 = [1 zeros(1,9)];
[x, sq1] = Function(54, 3, 5);
res3 = conv(delta2, sq1);
figure(5)
stem(res3);
axis([0,60,-0.5,1.5]);
Задача 3.
Задана дискретная функция Y[nT] = (X [nT] + X[nT – T]). Определите аналитически импульсную характеристику h(nT). Определите импульсную характеристику h(nT) c помощью функции impz(b,a). Постройте график функции h(nT).
Аналитическое решение:
Y[nT] = (X [nT] + X[nT – T]);
Y(0) = X (0) + X( – T) = 1 + 0 = 1
Y(T) = X (T) + X(0) = 0 + 1 = 1
Y(2T) = X (2T) + X(T) = 0 + 0 = 0
Y(3T) = X (3T) + X(2T) = 0 + 0 = 0
figure(6)
[h, t] = impz([1 1], [1]);
stem(t, h);
axis([-1,2,-0.5,1.5]);
Задача 4.
Определите через свертку реакцию системы на последовательность импульсов для "плоской" переходной характеристики, которая задается единичным вектором размерностью 2 (hn2 = [ones(1,2)];) . Найдите свертку hn2 и sq1, постройте в отдельном окне график свертки. Осуществите аналогичные операции, изменяя размерность единичного вектора hn2 до 5, 9 и 15. Объясните происходящие в свертке изменения.
clear all, clc, close all
[x, sq1] = Function(54, 3, 5);
hn2 = [ones(1,2)];
res1 = conv(sq1, hn2);
hn2 = [ones(1,5)];
res2 = conv(sq1, hn2);
hn2 = [ones(1,9)];
res3 = conv(sq1, hn2);
hn2 = [ones(1,15)];
res4 = conv(sq1, hn2);
figure(7)
subplot(2,2,1)
stem(res1)
title('1')
subplot(2,2,2)
stem(res2)
title('5')
subplot(2,2,3)
stem(res3)
title('9')
subplot(2,2,4)
stem(res4)
title('15')
Задача 5.
Заданы: дискретный входной сигнал
X(nT) = u(nT)-u(nT-5T)+u(nT-10T)-u(nT-15T)
и импульсная характеристика
h(nT) =(nT)+3(nT-T)+ (nT-2T),
определить аналитически свертку y(nT) = x(nT)h(nT). Проверить результат, используя функцию conv.
Аналитическое решение:
x(0)=u(0)-u(0-5)+u(0-10)-u(0-15)=1;
x(1)=u(1)-u(1-5)+u(1-10)-u(1-15)=1;
x(2)=u(2)-u(2-5)+u(2-10)-u(2-15)=1;
x(3)=u(3)-u(3-5)+u(3-10)-u(3-15)=1;
x(4)=u(4)-u(4-5)+u(4-10)-u(4-15)=1;
x(5)=u(5)-u(5-5)+u(5-10)-u(5-15)=0;
x(6)=u(6)-u(6-5)+u(6-10)-u(6-15)=0;
x(7)=u(7)-u(7-5)+u(7-10)-u(7-15)=0;
x(8)=u(8)-u(8-5)+u(8-10)-u(8-15)=0;
x(9)=u(9)-u(9-5)+u(9-10)-u(9-15)=0;
x(10)=u(10)-u(10-5)+u(10-10)-u(10-15)=1;
x(11)=u(11)-u(11-5)+u(11-10)-u(11-15)=1;
x(12)=u(12)-u(12-5)+u(12-10)-u(12-15)=1;
x(13)=u(13)-u(13-5)+u(13-10)-u(13-15)=1;
x(14)=u(14)-u(14-5)+u(14-10)-u(14-15)=1;
x(15)=u(15)-u(15-5)+u(15-10)-u(15-15)=0;
x(16)=u(16)-u(16-5)+u(16-10)-u(16-15)=0;
h(0)= δ(0)+3δ (-T)+ δ(-2T)=1
h(1T)= δ (1T)+3δ (0)+ δ(-T)=3
h(2T)= δ (2T)+3δ (T)+ δ(0)=1
h(3T)= δ (3T)+3δ (2T)+ δ(T)= 0
N=15+3-1=17;
x(nT)=(1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 0 0);
h(nT)=(1 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0);
y(0)=x(0)h(0)= 1;
y(1)=x(0)h(1)+x(1)h(0) =3+1=4;
y(2)=x(0)h(2)+x(1)h(1)+x(2)h(0)=1+3+1=5;
y(3)=x(0)h(3)+x(1)h(2)+x(2)h(1)+x(3)h(0)=0+1+1+3+0=5;
y(4)=x(0)h(4)+x(1)h(3)+x(2)h(2)+x(3)h(1)+x(4)h(0) =0+0+1+3+1=5;
y(5)=x(0)h(5)+x(1)h(4)+x(2)h(3)+x(3)h(2)+x(4)h(1)+x(5)h(0) =1+3+0=4;
y(6)=x(0)h(6)+x(1)h(5)+x(2)h(4)+x(3)h(3)+x(4)h(2)+x(5)h(1)+ x(6)h(0) =1+0=1;
y(7)=x(0)h(7)+x(1)h(6)+x(2)h(5)+x(3)h(4)+x(4)h(3)+x(5)h(2)+ x(6)h(1)+ x(7)h(0) =0;
y(8)=x(0)h(8)+x(1)h(7)+x(2)h(6)+x(3)h(5)+x(4)h(4)+x(5)h(3)+ x(6)h(2)+ x(7)h(1) + x(8)h(0) =0;
y(9)=x(0)h(9)+x(1)h(8)+x(2)h(7)+x(3)h(6)+x(4)h(5)+x(5)h(4)+ x(6)h(3)+ x(7)h(2) + x(8)h(1) + x(9)h(0) =0;
y(10)=x(0)h(10)+x(1)h(9)+x(2)h(8)+x(3)h(7)+x(4)h(6)+x(5)h(5)+ x(6)h(4)+ x(7)h(3) + x(8)h(2) + x(9)h(1) + x(10)h(0) =1;
y(11)=x(0)h(11)+x(1)h(10)+x(2)h(9)+x(3)h(8)+x(4)h(7)+x(5)h(6)+ x(6)h(5)+ x(7)h(4) + x(8)h(3) + x(9)h(2) + x(10)h(1)+ x(11)h(0) =1+3=4;
y(12)=x(0)h(12)+x(1)h(11)+x(2)h(10)+x(3)h(9)+x(4)h(8)+x(5)h(7)+ x(6)h(6)+ x(7)h(5) + x(8)h(4) + x(9)h(3) + x(10)h(2)+ x(11)h(1) + x(12)h(0) =1+3+1=5;
y(13)=x(0)h(13)+x(1)h(12)+x(2)h(11)+x(3)h(10)+x(4)h(9)+x(5)h(8)+ x(6)h(7)+ x(7)h(6) + x(8)h(5) + x(9)h(4) + x(10)h(3)+ x(11)h(2) + x(12)h(1) + x(13)h(0) =1+3+1=5;
y(14)=x(0)h(14)+x(1)h(13)+x(2)h(12)+x(3)h(11)+x(4)h(10)+x(5)h(9)+ x(6)h(8)+ x(7)h(7) + x(8)h(6) + x(9)h(5) + x(10)h(4)+ x(11)h(3) + x(12)h(2) + x(13)h(1)+ x(14)h(0) =1+3+1=5;
y(15)=x(0)h(15)+x(1)h(14)+x(2)h(13)+x(3)h(12)+x(4)h(11)+x(5)h(10)+ x(6)h(9)+ x(7)h(8) + x(8)h(7) + x(9)h(6) + x(10)h(5)+ x(11)h(4) + x(12)h(3) + x(13)h(2)+ x(14)h(1) + x(15)h(0) =1+3=4;
y(16)=x(0)h(16)+x(1)h(15)+x(2)h(14)+x(3)h(13)+x(4)h(12)+x(5)h(11)+ x(6)h(10)+ x(7)h(9) + x(8)h(8) + x(9)h(7) + x(10)h(6)+ x(11)h(5) + x(12)h(4) + x(13)h(3)+ x(14)h(2) + x(15)h(1) + x(16)h(0)=1;
y(17)=x(0)h(17)+x(1)h(16)+x(2)h(15)+x(3)h(14)+x(4)h(13)+x(5)h(12)+ x(6)h(11)+ x(7)h(10) + x(8)h(9) + x(9)h(8) + x(10)h(7)+ x(11)h(6) + x(12)h(5) + x(13)h(4)+ x(14)h(3) + x(15)h(2) + x(16)h(1) + x(17)h(0)=0;
y(nT)=[1 4 5 5 5 4 1 0 0 0 1 4 5 5 5 4 1 0]
Листинг программы
x=[1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0];
h=[1, 3, 1];
res=conv(x,h);
disp(res);
stem(0:length(res)-1,res);
set(gcf,'color','w');