La convolución es una operación matemática que hace la integral del producto de 2 funciones(señales), con una de las señales volteada. Por ejemplo, a continuación convolvemos 2 señales f(t) y g(t).

Así que la actividad primaria es voltear en un plano nivelado (180 grados) el signo g, en ese punto deslizar la g volteada sobre f, aumentando y agregando cada una de sus cualidades.

La petición de convocar el signo no hace la diferencia para el producto final, así que conv(a,b)==conv(b,a)

En este caso piensa que el signo azul f(τ) es nuestra señal de información y g(t) nuestro bit, el término parte se utiliza cuando se usan las convoluciones para canalizar las señales.

Tamaño de la señal de salida 1D

En el caso de la convolución 1D el tamaño de la salida se calcula así:

outputSize=(InputSize-KernelSize)+1

Aplicación de las convoluciones

La gente utiliza la convolución en el procesamiento de la señal para los siguientes casos de uso:

Filtrar las señales (audio 1D, procesamiento de imágenes 2D)

Comprobar cuánto una señal está correlacionada con otra

Encontrar patrones en las señales

Ejemplo simple en matlab y python(numpy)

Debajo convivimos dos señales x = (0,1,2,3,4) con w = (1,-1,2).

Haciendo a mano

Para ver mejor la idea de la convolución deberíamos hacer el modelo anterior a mano. Esencialmente convocaremos 2 signos (x,w). Lo principal es voltear W en un plano nivelado (o girar a la izquierda 180 grados)

Vean que en las etapas 3,4,5 la ventana invertida está totalmente dentro de la señal de información. Esos resultados se llaman convoluciones “sustanciales”. Las situaciones en las que la ventana invertida no está completamente dentro de la ventana de información(X), podemos considerarlas como cero, o determinar lo que es concebible determinar, por ejemplo en la etapa 1 duplicamos 1 por cero, y el resto básicamente no se tiene en cuenta.

Relleno de entrada

Para mantener el tamaño del resultado de la convolución en un tamaño similar al de la información, y para evadir un impacto llamado convolución redonda, amortiguamos el signo con ceros.

El lugar donde pones los ceros depende de lo que necesites hacer, es decir: en el caso de la 1D puedes enlazarlos en cada extremo, sin embargo, en la 2D se suele poner justo alrededor de la primera señal.

En matlab puedes usar el comando ‘padarray’ para rellenar la entrada:

>> x

x(:,:,1) =

 1 1 0 2 0

 2 2 2      2 1

 0 0 0 2 1

 2 2 2      2 1

 2 0 2 2 1

x(:,:,2) =

 2 1 0 0 0    

 0 2 0 1 0

 1 0 1 2 0

 1 2 0 2 1

 1 2 1 2 2

x(:,:,3) =

 2 1 1 2 2

 1 1 1 0 0

 2 0 1 0 2

 0 2 0 2 1

 0 0 2 1 0

>> padarray(x,[1 1])

ans(:,:,1) =

 0 0 0 0      0 0 0    

 0 1 1 0 2 0 0    

 0 2 2 2 2 1 0

 0 0 0      0 2 1 0

 0 2 2 2 2 1 0

 0 2 0 2 2 1 0

 0 0 0 0      0 0 0    

ans(:,:,2) =

 0 0 0 0      0 0 0    

 0 2 1 0      0 0 0         

 0 0 2 0 1 0      0

 0 1 0 1 2 0 0    

 0 1 2 0 2 1 0

 0 1 2 1 2 2 0

 0 0 0 0      0 0 0    

ans(:,:,3) =

 0 0 0 0      0 0 0    

 0 2 1 1 2 2 0

 0 1 1      1 0      0 0    

 0 2 0 1 0 2 0

 0 0 2 0 2 1 0

 0 0 0 2 1 0      0

 0 0 0 0      0 0 0    

Transformando la convolución en un gráfico de cálculo

Para determinar las subsidiarias incompletas de cada fuente de información y parámetros del centro, es más sencillo cambiar la actividad a un diagrama computacional. Aquí cambiaré la última convolución 1D, pero también se puede llegar a la convolución 2D.

Aquí nuestro gráfico se hará sobre las situaciones sustanciales en las que el núcleo volteado (pesos) se incrustará completamente en nuestra ventana de información.

Aquí se creará nuestro gráfico sobre los casos válidos en los que el núcleo volteado (pesos) se insertará completamente en nuestra ventana de entrada.

Vamos a utilizar este gráfico más adelante para deducir los ángulos de las fuentes de información (x) y las cargas (w) de la capa de convolución.