Cómo aplicar convolución en MATLAB sin usar la función conv

La convolución es una operación matemática que mezcla dos funciones respecto al solapamiento de una al desplazarse sobre otra. Aunque MATLAB tiene función de convolución integrada (conv), es posible calcular la integral de convolución discreta manualmente. La convolución discreta de dos funciones f y g se define como la suma en el rango 0 a j de f(j) * g(k-j).

Paso 1

Define dos vectores, f y g, con las dos funciones a convolucionar. Las longitudes de f y g no tienen por qué ser iguales. La longitud del resultado k será uno menos que la suma de longitudes de f y g:

m = length(f); n = length(g); k = m + n - 1;

Paso 2

Define el rango j sobre el que ocurrirá la convolución. El valor de j es el rango donde los subíndices de las dos funciones a convolucionar, f(j) y g(k+1-n), son legales. El +1 en k compensa que MATLAB indexa vectores desde 1, no desde 0:

j = max(1,k+1-n):min(k,m)

Paso 3

Preasigna espacio para el resultado de la convolución:

my_result = zeros(k);

Paso 4

Escribe un bucle for para iterar sobre valores de k:

for result_index = 1:k

Paso 5

Calcula la convolución para todos los valores de j:

my_result(k) = sum(f(j) .* g(k-j+1));

Paso 6

Cierra el bucle for con el comando "end".