Линейная свертка

Линейная свертка — одна из фундаментальных операций цифровой обработки сигналов. Реакция системы с импульсной характеристикой hi на входной сигнал xi вычисляется как свертка этих двух последовательностей.

Например имеем:

{hi}={h0, h1, h2, h3}
{xl}={x0, x1, x2}

Реакция системы на первый элемент входной последовательности в силу линейности системы будет: h0x0 , h1x0 , h2x0 , h3x0.
Далее, учитывая принцип суперпозиции, и задержку в один такт по-сле каждого отсчета входной последовательности получим следующее со-отношение

то есть
y0 = h0x0,
y1 = h1x0 + h0x1,
y2 = h2x0 + h1x1 + h0x2,
y3 = h3x0 + h2x1 + h1x2,
y4 = h3x1 + h2x2,
y5 = h5x2.

Для построения этих уравнений проще всего запомнить, что сумма индексов x и h равна индексу y.

Для вычисления в Matlab нужно задать импульсную характеристику и входной сигнал:

h = [4 5 2 1];
x = [2 2 3 2 7 1];

А затем воспользоваться функцией conv:

y1=conv(h,x)
y1 =

     8    18    26    29    46    46    21     9     1

Подробнее о вычислении сверток тут.

 

Похожий код:

Фото аватара
Алексей Петров

Программист, разработчик с 5 летним опытом работы. Учусь на разработчика игр на Unity и разработчика VR&AR реальности (виртуальной реальности). Основные языки программирования: C#, C++.

Оцените автора
Бла, бла код
Добавить комментарий