Как да приложите конволюция в MATLAB, без да използвате функцията

Крупен план на математическото уравнение

MATLAB съдържа предварително изградена конволюционна функция.

Кредит на изображението: Thinkstock Images/Comstock/Getty Images

Конволюцията е математическа операция, която смесва две функции по отношение на припокриването на една функция, тъй като тя се измества върху друга. Въпреки че MATLAB съдържа предварително изградена конволюционна функция, възможно е сами да изчислите дискретния конволюционен интеграл. Дискретната конволюция на две функции f и g се дефинира като сума в диапазона от 0 до j на f (j) * g (k-j).

Етап 1

Дефинирайте два вектора, f и g, съдържащи двете функции, които искате да свъртите. Дължините на f и g не трябва да са равни. Дължината на резултата от навиването, k, ще бъде една по-малка от сумата на дължината на f и g:

Видео на деня

m = дължина (f); n = дължина (g); k = m + n - 1;

Стъпка 2

Определете диапазона j, в който ще се случи навиването. Стойността на j е диапазонът, в който индексите на двете функции, които трябва да се конволират, f (j) и g (k+1-n), са законни. Стойността на 1, добавена към k, трябва да отчита факта, че MATLAB започва да индексира вектори с 1, а не с 0:

j = макс (1,k+1-n):мин (k, m)

Стъпка 3

Предварително разпределете място за резултата от навиването:

my_result = нули (k);

Стъпка 4

Напишете цикъл for, за да преминете през стойностите на k:

за индекс_резултат = 1:k

Стъпка 5

Изчислете конволюцията за всички стойности на j:

my_result (k) = сума (f(j) .* g (k-j+1));

Стъпка 6

Затворете цикъла for с командата "end".