convolucion-isay humberto lucas hernández

24
INSTITUTO POLITÉCNICO NACIONAL ESCUELA SUPERIOR DE INGENIERÍA Y ARQUITECTURA UNIDAD TICOMÁN “CIENCIAS DE LA TIERRA” PRE-PROCESADO SÍSMICO Profesora: Gabriela de los Santos Cano Trabajo: Convolución Alumno: Lucas Hernández Isay Humberto Ing. Geofísica                              Grupo: “2FM8”                                                                 A 19 de Marzo de 2012

Upload: isay-h-lucas-hernandez

Post on 28-Oct-2014

300 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: convolucion-Isay Humberto Lucas Hernández

INSTITUTO POLITÉCNICO NACIONAL

ESCUELA SUPERIOR DE INGENIERÍA Y ARQUITECTURA

UNIDAD TICOMÁN

“CIENCIAS DE LA TIERRA”

PRE­PROCESADO SÍSMICO

Profesora:

Gabriela de los Santos Cano

Trabajo:

Convolución

Alumno:

Lucas Hernández Isay Humberto

Ing. Geofísica                              Grupo: “2FM8”

                                                                A 19 de Marzo de 2012

Page 2: convolucion-Isay Humberto Lucas Hernández

Marco teórico.

Definición

En matemáticas y, en particular, análisis funcional, una convolución es un operador matemático que transforma dos funciones f y g en una tercera función que en cierto sentido representa la magnitud en la que se superponen f y una versión trasladada e invertida de g. Una convolución es un tipo muy general de media móvil, como se puede observar si una de las funciones se toma como la función característica de un intervalo.                      

La convolución f y g se denota f*g. Se define como la integral del producto de 

ambas funciones después de desplazar una de ellas una distancia ŋ.

El intervalo de integración dependerá del dominio sobre el que estén definidas las funciones. En el caso de un rango de integración finito, f y g se consideran a menudo como extendidas, periódicamente en ambas direcciones, tal que el término g(t ­  ) no implique una violación en el rango. Cuando usamos estos dominios ηperiódicos la convolución a veces se llama cíclica. Desde luego que también es posible extender con ceros los dominios. El nombre usado cuando ponemos en juego estos dominios "cero­extendidos" o bien los infinitos es el de convolución lineal, especialmente en el caso discreto que presentaremos abajo.

Si X e Y son dos variables aleatorias independientes con funciones de densidad de probabilidad f y g, respectivamente, entonces la densidad de probabilidad de la 

suma X + Y vendrá dada por la convolución  f*g.

Para las funciones discretas se puede usar una forma discreta de la convolución. Esto es: 

Page 3: convolucion-Isay Humberto Lucas Hernández

Cuando multiplicamos dos polinomios, los coeficientes del producto están dados por la convolución de las sucesiones originales de coeficientes, en el sentido dado aquí (usando extensiones con ceros como hemos mencionado).

Generalizando los casos anteriores, la convolución puede ser definida para cualesquiera dos funciones de cuadrado integrable definidas sobre un grupo topológico localmente compacto. Una generalización diferente es la convolución de distribuciones.

Cuando se trata de hacer un procesamiento digital de señal no tiene sentido hablar de convoluciones aplicando estrictamente la definición ya que solo disponemos de valores en instantes discretos de tiempo. Es necesario, pues, una aproximación numérica. Para realizar la convolución entre dos señales, se evaluará el área de la 

función  :  . Para ello, disponemos de muestreos de ambas señales en los instantes de tiempo  , que llamaremos   y   (donde n y k son enteros).El área es, por tanto,

La convolución discreta se determina por un intervalo de muestreo   :

Page 4: convolucion-Isay Humberto Lucas Hernández

Ejemplos prácticos.

Existen distintas formas de realizar una convolución, desde algoritmos computacionales hasta simples arreglos de escala los cuales nos permiten evaluar dicha “operación” funcional. Dejando a un lado el formalismo y el amplio margen teórico de cada método que se presentará se retomarán 4 ejemplos, distintos y prácticos, de como realizar una convolución:

Ejemplo #1

Multiplicación polinómica

Empezamos por definir la forma discreta de la ondícula de entrada como de la serie reflectiva, en este caso la serie reflectiva obedece a valores no asociados a algún estudio. Sino valores, enteros y reales,  Lo mismo para la ondícula de entrada y por consecuente, para la función resultante (Traza sísmica sintética).

Rt = [1,0,2,4,6,8]

Wt = [2,­1,1/2,­1/4] 

Después, mediante el correcto empleo de la transformada Z podemos representar ambas funciones mediante un arreglo polinómico. Tal que:

Rt = [1,0,2,4,6, 8]  | Rz = 1 + 0 + 2z² + 4z³ + 6z  + 8z⁴ ⁵ =  Rz [1 + 2z² + 4z³ + 6z  + 8z⁴ ⁵]

Wt = [2,­1,1/2,­1/4]  | Wz [2 ­ z + 1/2z² ­1/4z³]

La convolución St = Wt *Rt    debido a la transformada Z nuestra convolución resulta en:  S[z] = W[z]*R[z]  

S[z]   =  [2 ­ z + 1/2z² ­1/4z³] * [1 + 2z² + 4z³ + 6z  + 8z⁴ ⁵]

S[z]   = 2 + 4z² + 8z³ + 12z  + 16z  ­z – 2z³ – 4z  – 6z  – 8z  + 1/2z² + z  + 2z  + ⁴ ⁵ ⁴ ⁵ ⁶ ⁴ ⁵3z  + 4z  – 1/4z³ – 1/2z  – z  – 3/2z⁶ ⁷ ⁵ ⁶ ⁷ – 2z⁸

Page 5: convolucion-Isay Humberto Lucas Hernández

Agrupando terminos iguales y resolviendo la suma.

S[z]   = 2 – z + (4z² + 1/2z²) + (8z³ – 2z³ – 1/4z³) + (12z  ­4z  + z ) + (16z  – 6z  + ⁴ ⁴ ⁴ ⁵ ⁵2z  – 1/2z ) + ( ­ 8z  – z  ⁵ ⁵ ⁶ ⁶ + 3z⁶) + (4z  – 3/2z ) + 2z⁷ ⁷ ⁸

S[z]   = 2 – z  + 9/2z² + 23/4z³ + 9z  + 23/2z   – ⁴ ⁵ 6z⁶ + 5/2z  ⁷ – 2z⁸

Resultando en 

S[0] = 2                                               S[5] = 23/2     

S[1] = ­1                                              S[6] = ­6   

S[2] = 9/2                                            S[7] = 5/2    

S[3] = 23/4                                          S[8] = ­2                                      

S[4] = 9                            

Ejemplo #2

Arreglo lineal

El siguiente metodo obedece a un arreglo lineal, donde las operaciones aritméticas que intervienen son la suma y la multiplicación. Volvemos a retomar 

Rt = [1,0,2,4,6, 8]  | Rz = 1 + 0 + 2z² + 4z³ + 6z  + 8z⁴ ⁵ =  Rz [1 + 2z² + 4z³ + 6z  + 8z⁴ ⁵]

Wt = [2,­1,1/2,­1/4]  | Wz [2 ­ z + 1/2z² ­1/4z³]

Ambas funciones yacen en terminos de un polinomio debido a la transformada Z. Ocuparemos solamente los coeficientes de dichos polinomios para realizar el arreglo previamente mencionado.

Page 6: convolucion-Isay Humberto Lucas Hernández

Los pasos para evaluar la convolución de dos funciones mediante este metodo son los siguientes.

a) Multiplicar el primer coeficiente introducido del polinomio asociado a la ondícula de entrada W[z], en este caso (2), por el primer coeficiente introducido del polinomio asociado a la serie reflectiva, en este caso (1).

S[0] = 2

b) Recorrer e introducir el coeficiente siguiente asociado al polinomio de la ondícula de entrada W[z] y volver a aplicar el procedimiento de multiplicación. Ademas de sumar el resultado de los productos. Así se obtiene el segundo termino asociado al polinomio de la función resultante.

S[0] = 2;  S[1] = ­1

c)Volver a recorrer e introducir de nuevo el siguiente coeficiente asociado al polinomio de la ondícula de entrada W[z]. Se aplica de nuevo el procedimiento de cálculo.

S[0] = 2;  S[1] = ­1; S[2] = 9/2

Ya entendido el procedimiento de cálculo. Procederemos a continuar con la evaluación de toda la convolución.

1 0 2 4 6 8 W[z]* R[z]= S[z]2 2(1) = 2

1 0 2 4 6 8 W[z]* R[z]= S[z]2 2(1) = 2

­1 2 2(0) + (­1)(1) = ­1

1 0 2 4 6 8 W[z]* R[z]= S[z]2 2(1) = 2

­1 2 2(0) + (­1)(1) = ­1

­0.5 ­1 2 2(2) + (­1)(0) + (­0.5)(1) = 9/2

Page 7: convolucion-Isay Humberto Lucas Hernández

S[0] = 2;  S[1] = ­1; S[2] = 9/2; S[3] = 23/4

S[0] = 2;  S[1] = ­1; S[2] = 9/2; S[3] = 23/4 S[4] = 9

S[0] = 2;  S[1] = ­1; S[2] = 9/2; S[3] = 23/4 S[4] = 9 S[5] = 23/2

S[0] = 2;  S[1] = ­1; S[2] = 9/2; S[3] = 23/4 S[4] = 9 S[5] = 23/2; S[6] = ­6

1 0 2 4 6 8 W[z]* R[z]= S[z]2 2(1) = 2

­1 2 2(0) + (­1)(1) = ­1

­0.5 ­1 2 2(2) + (­1)(0) + (­0.5)(1) = 9/2­0.25 ­0.5 ­1 2 2(4) + (­1)(2) + (­0.5)(0) + (1)(­0.25)  = 23/4

1 0 2 4 6 8 W[z]* R[z]= S[z]2 2(1) = 2

­1 2 2(0) + (­1)(1) = ­1

­0.5 ­1 2 2(2) + (­1)(0) + (­0.5)(1) = 9/2­0.25 ­0.5 ­1 2 2(4) + (­1)(2) + (­0.5)(0) + (1)(­0.25)  = 23/4

­0.25 0.5 ­1 2 2(6) + (­1)(4) + (0.5)(2) + (­0.25)(0) = 9

1 0 2 4 6 8 W[z]* R[z]= S[z]2 2(1) = 2

­1 2 2(0) + (­1)(1) = ­1

­0.5 ­1 2 2(2) + (­1)(0) + (­0.5)(1) = 9/2­0.25 ­0.5 ­1 2 2(4) + (­1)(2) + (­0.5)(0) + (1)(­0.25)  = 23/4

­0.25 0.5 ­1 2 2(6) + (­1)(4) + (0.5)(2) + (­0.25)(0) = 9­0.25 0.5 ­1 2 2(8) + (­1)(6) + (0.5)(4) + (­0.25)(2) = 23/2

1 0 2 4 6 8 W[z]* R[z]= S[z]2 2(1) = 2

­1 2 2(0) + (­1)(1) = ­1

­0.5 ­1 2 2(2) + (­1)(0) + (­0.5)(1) = 9/2­0.25 ­0.5 ­1 2 2(4) + (­1)(2) + (­0.5)(0) + (1)(­0.25)  = 23/4

­0.25 0.5 ­1 2 2(6) + (­1)(4) + (0.5)(2) + (­0.25)(0) = 9­0.25 0.5 ­1 2 2(8) + (­1)(6) + (0.5)(4) + (­0.25)(2) = 23/2

­0.25 0.5 ­1 (­1)(8) + (0.5)(6) + (­0.25)(4) = ­6

1 0 2 4 6 8 W[z]* R[z]= S[z]2 2(1) = 2

­1 2 2(0) + (­1)(1) = ­1

­0.5 ­1 2 2(2) + (­1)(0) + (­0.5)(1) = 9/2­0.25 ­0.5 ­1 2 2(4) + (­1)(2) + (­0.5)(0) + (1)(­0.25)  = 23/4

­0.25 0.5 ­1 2 2(6) + (­1)(4) + (0.5)(2) + (­0.25)(0) = 9­0.25 0.5 ­1 2 2(8) + (­1)(6) + (0.5)(4) + (­0.25)(2) = 23/2

­0.25 0.5 ­1 (­1)(8) + (0.5)(6) + (­0.25)(4) = ­6­0.25 0.5 (0.5)(8) + (­0.25)(6) = 5/2

Page 8: convolucion-Isay Humberto Lucas Hernández

S[0] = 2;  S[1] = ­1; S[2] = 9/2; S[3] = 23/4 S[4] = 9 S[5] = 23/2; S[6] = ­6; S[7] = 5/2

Concluyendo así en 

S[0] = 2;  S[1] = ­1; S[2] = 9/2; S[3] = 23/4 S[4] = 9 S[5] = 23/2; S[6] = ­6; S[7] = 5/2; S[8] = 2

Siendo el resultado final

S[0] = 2                                               S[5] = 23/2     

S[1] = ­1                                              S[6] = ­6   

S[2] = 9/2                                            S[7] = 5/2    

S[3] = 23/4                                          S[8] = ­2                                      

S[4] = 9                            

Ejemplo #3

Forma gráfica

Para este método serán considerados factores de escala. Los cuales serán definidos solamente para este ejemplo. No existe algún ajuste ideal para trabajar con este procedimiento para realizar la convolución, por lo cual, cualquier 

1 0 2 4 6 8 W[z]* R[z]= S[z]2 2(1) = 2

­1 2 2(0) + (­1)(1) = ­1

­0.5 ­1 2 2(2) + (­1)(0) + (­0.5)(1) = 9/2­0.25 ­0.5 ­1 2 2(4) + (­1)(2) + (­0.5)(0) + (1)(­0.25)  = 23/4

­0.25 0.5 ­1 2 2(6) + (­1)(4) + (0.5)(2) + (­0.25)(0) = 9­0.25 0.5 ­1 2 2(8) + (­1)(6) + (0.5)(4) + (­0.25)(2) = 23/2

­0.25 0.5 ­1 (­1)(8) + (0.5)(6) + (­0.25)(4) = ­6­0.25 0.5 (0.5)(8) + (­0.25)(6) = 5/2

­0.25 (­0.25)(8) = ­2

Page 9: convolucion-Isay Humberto Lucas Hernández

modificación puede ser considerada dependiendo de las necesidades o tamaño de los coeficientes.

 Volvemos a retomar 

Rt = [1,0,2,4,6, 8]  | Rz = 1 + 0 + 2z² + 4z³ + 6z  + 8z⁴ ⁵ =  Rz [1 + 2z² + 4z³ + 6z  + 8z⁴ ⁵]

Wt= [2,­1,1/2,­1/4]  | Wz [2 ­ z + 1/2z² ­1/4z³]

Ambas funciones yacen en terminos de un polinomio debido a la transformada Z. Ocuparemos solamente los coeficientes de dichos polinomios para realizar el arreglo previamente mencionado.

Representamos de manera gráfica Rz y Wz de la siguiente forma:

Rz= [1,0,2,4,6, 8]                                                                 Wz = [2,­1,1/2,­1/4]      

            .                                                                  ­1/4              ­1                 

    1     0       2        4       6          8                                      1/2            2

Donde el punto (.) denota   0            

Page 10: convolucion-Isay Humberto Lucas Hernández

Se empieza por ordenar ambas gráficas (escalas) de la siguiente manera.

0)

El procedimiento para evaluar la convolución de esta manera es la siguiente:

a) Existe una correspondencia directa entre ambas escalas, tal que podemos multiplicar el primer 

coeficiente de Rz con el primer coeficiente de Wz.

Para S[0] = (2)(1) = 2 ; S[0] = 2

Procedemos a recorrer la gráfica (escala)  Wz.

1) 

b) Se vuelve a tener una correspondencia, esta vez se considera la suma de los productos para el cálculo del siguiente coeficiente de la ondícula resultante, S[2].

S[1] = (2)(0) + (1)(­1) = ­1; S[1] =­1 

Page 11: convolucion-Isay Humberto Lucas Hernández

2)                                                                             c) Las correspondencias son notorias y el procedimiento vuelve a ser el mismo, el procedimiento completo consiste en el ir recorriendo la gráfica (escala) de la ondícula de entrada respecto a la serie reflectiva. Realizar la suma de productos para obtener el siguiente coeficiente del polinomio relacionado a la  función de salida S[z]; 

S[2] = (2)(2) + (­1)(­0) + (1/2)(1) = 9/2

                        S[2] = 9/2

Procedemos de igual manera hasta llegar al ultimo coeficiente correspondiente al polinomio S[z].

3)

            

S[3] = (2)(4) + (­1)(2) + (1/2)(0) + (­1/4)(1)  = 23/4 ; S[3] = 23/4

Page 12: convolucion-Isay Humberto Lucas Hernández

4)

 Aquí solamente iremos recorriendo la gráfica (escala) inferior por cuestiones de espacio y uso de material de impresión.

S[4] = (6)(2) + (­1)(4) + (1/2)(2) + (­1/4)(0)  = 9 ; S[4] = 9

5)

 S[5] = (8)(2) + (­1)(6) + (1/2)(4) + (­1/4)(2) = 23/2 ; S[5] = 23/2

6) 

S[6] = (8)(­1) + (1/2)(6) + (­1/4)(4) = ­6 ; S[6] = ­6

Page 13: convolucion-Isay Humberto Lucas Hernández

7)

S[7] = (8)(1/2) + (­1/4)(6)  = 5/2 ; S[7] = 5/2

8)

S[8] = (8)(­1/4) = ­2 ;S[8] =  ­2

Dando finalmente como resultado que

S[0] = 2                                               S[5] = 23/2     

S[1] = ­1                                              S[6] = ­6   

S[2] = 9/2                                            S[7] = 5/2    

S[3] = 23/4                                          S[8] = ­2                                      

S[4] = 9         

Page 14: convolucion-Isay Humberto Lucas Hernández

Ejemplo #4

Algoritmo computacional

El siguiente metodo, en opinión del autor, es el método mas práctico y útil para realizar la convolución de dos funciones cualquiera. La facilidad recae en el hecho de que dicho metodo puede ser programado en una infinidad de lenguajes y programas. Facilitando así los cálculos necesarios para encontrar los coeficientes del polinomio asociados a la función resultante, en este caso, traza sísmica sintética.

Volvamos a considerar la definición de la convolución discreta de dos funciones 

 

donde k = (m + n – 1) Siendo m y n el número de coeficientes que posee Wz & Rz 

respectivamente.  Para este caso k = (4 + 6) ­1 = 10 – 1;  k = 9 coeficiente resultantes. Que como se ha visto en los ejemplos anteriores, 9 han sido los resultados obtenidos en los diferentes métodos de convolución.

Para facilitar el cálculo de coeficientes, k= 0,8. Esto es, que el primer resultado arrojado por la convolución obedece a S[k] = S[0], mientras que el segundo resultado... S[k] = S[0], S[1].... así sucesivamente hasta S[k]

Dicha consideración debe ser recordada al momento de intentar programar la convolución, no siempre es conveniente empezar un contador en 0. Mas adelante retomaremos de nuevo este detalle.

Volviendo al algoritmo. Al ser un caso discreto la convolución es representada como una sumatoria, en este caso de terminos resultantes de diferentes productos acordes a la continua evaluación de los datos de las funciones W[z] & R[z].

Page 15: convolucion-Isay Humberto Lucas Hernández

∑i=0

w[z ]∗r [z ] ; 

Corresponde al caso discreto de estas dos funciones.

∑i=0

w[k−i ]∗r [ i ] ; 

La evaluación del algoritmo consta, como en los casos anteriores, de la evaluación (suma de productos) a lo largo de distintos valores de K. Para este caso, también se es evaluado de i = 0,∞. Como se puede observar, el limitante principal al

momento de evaluar o mejor dicho, las restricciones, estarán dadas por

w [k−i ] , al momento de correr i de 0 a ∞, se encontrarán valores que no corresponden a ningún coeficiente. Dichas limitantes serán las que nos permitan terminar la evaluación y que esta no continúe infinitamente.

∑i=0

w[k−i ]∗r [ i ] ; Empezamos con la evaluación.

Retomamos que 

Rt = [1,0,2,4,6, 8]  | Rz = 1 + 0 + 2z² + 4z³ + 6z  + 8z⁴ ⁵ =  Rz [1 + 2z² + 4z³ + 6z  + 8z⁴ ⁵]

Wt = [2,­1,1/2,­1/4]  | Wz [2 ­ z + 1/2z² ­1/4z³]; Recordando que k = 0,8

Para K = 0

S[0] =  ∑i=0

w[k−i ]∗r [ i ] =  w [0−0]∗r [0]+W [0−1]r [1]+W [0−2]r [2] ...

Podemos notar que W[0­1] y W[0­2] son valores con los que no contamos, debido a que el mínimo es W[0], por lo tanto son descartados automáticamente; así como todo término que le proceda. Por lo que la sumatoria se reduce a  w[0­0]*r[0] para nuestro primer termino. (K = 0).

S[0]= W[0­0]r[0] = (1)(2) = 2;   S[0] = 2

Asociando cada termino de W y r a los coeficientes que los definen y empezando estos en W[0] y r[0] respectivamente. Siguiendo así según el numero total de coeficientes que definen a ambas funciones. Para W = 0,3  &  r = 0,5

Page 16: convolucion-Isay Humberto Lucas Hernández

∑i=0

w[k−i ]∗r [ i ]

Para k = 1

S[1] =  w [1−0]∗r [0]+W [1−1]r [1]+W [1−2]r [2 ]...

S[1] =  w [1]∗r [0]+W [0]r [1] = (­1)(1) + (2)(0) = ­1; 

S[1] = ­1

Para k = 2

S[2] =  w [2−0]∗r [0 ]+W [2−1]r [1]+W [2−2]r [2 ]+W [2−3]r [3] ...

S[2] =  w [2]∗r [0 ]+W [1]r [1]+W [0 ]r [2 ] = (1/2)(1) + (­1)(0) + (2)(2) = 9/2;

S[2] = 9/2

Para k = 3

S[3] =  w [3−0 ]∗r [0]+W [3−1]r [1]+W [3−2]r [2]+W [3−3]r [3]+W [3−4]r [4] ...

S[3] = w [3]∗r [0]+W [2]r [1]+W [1]r [2 ]+W [0 ]r [3]

S[3] = (­1/4)(1) + (1/2)(0) + (­1)(2) + (2)(4) = 23/4;

S[3] = 23/4

Para k = 4

S[4] = 

w [4−0]∗r [0]+W [4−1]r [1]+W [4−2 ]r [2 ]+W [4−3]r [3]+W [4−4 ]r [4 ]+W [ 4−5]r [5] ...

Page 17: convolucion-Isay Humberto Lucas Hernández

S[4] = 

w [4]∗r [0]+W [3]r [1]+W [2]r [2 ]+W [1]r [3]+W [0]r [4] ; Aquí empezamos a notar que terminos como w[4] tampoco están presentes. Por lo cual también son descartados. El máximo es Wz | 0 a 3    & Rz  | 0 a 5.

S[4] = 

w [4]∗r [0]+W [3]r [1]+W [2]r [2 ]+W [1]r [3]+W [0]r [4] = (­1/4)(0) + (1/2)(2) + (­1)(4) + (2)(6) = 9;

S[4] = 9

Para k = 5

S[5] =

w [5−0 ]∗r [0]+W [5−1]r [1]+W [5−2 ]r [2]+W [5−3]r [3]+W [5−4]r [4]+W [5−5]r [5]+W [5−6]r [6]

S[5] = 

W [3]r [2 ]+W [2 ]r [3]+W [1]r [4 ]+W [0 ]r [5] = (­1/4)(2) + (1/2)(4) + (­1)(6) + (2)(8) = 23/2;

S[5] = 23/2

Para k = 6

S[6] =  w [6−0]∗r [0 ]+W [6−1]r [1]+W [6−2 ]r [2]+W [6−3]r [3]

+W [6−4 ]r [4 ]+W [6−5]r [5]+W [6−6]r [6 ]+W [6−7]r [7]...

S[6] =  W [3]r [3]+W [2]r [ 4]+W [1]r [5] = (­1/4)(4) + (1/2)(6) + (­1)(8) = ­6;

S[6] = ­6

Para k = 7

S[7] =  w[7−0]∗r [0]+W [7−1]r [1]+W [7−2 ]r [2 ]+W [7−3]r [3]

+W [7−4 ]r [4 ]+W [7−5]r [5]+W [7−6]r [6]+W [7−7]r [7]+W [7−8]r [8] ...

S[7] =  W [3]r [ 4]+W [2 ]r [5] = (­1/4)(6) + (1/2)(8) = 5/2;

Page 18: convolucion-Isay Humberto Lucas Hernández

S[7] = 5/2

Finalmente

Para k = 8

S[8] = w [8−0]∗r [0]+W [8−1]r [1]+W [8−2 ]r [2 ]+W [8−3]r [3]

+W [8−4]r [4]+W [8−5]r [5]+W [8−6]r [6]+W [8−7]r [7]+W [8−8]r [8]+W [8−9]r [9] ...

S[8]  =  W [3]r [5] = (­1/4)(8) = ­2;

S[8] = ­2

Dando finalmente como resultado que

S[0] = 2                                               S[5] = 23/2     

S[1] = ­1                                              S[6] = ­6   

S[2] = 9/2                                            S[7] = 5/2    

S[3] = 23/4                                          S[8] = ­2                                      

S[4] = 9         

Como se ve, el algoritmo no es complicado simplemente presenta un orden y descarte de algunos elementos a medida que el termino (k – i) aumenta o disminuye de valor. También otra limitante importante es el tamaño de las funciones respecto a los coeficientes de los polinomios de las funciones Wz | 0 a 3 & Rz  | 0 a 5.

Page 19: convolucion-Isay Humberto Lucas Hernández

Algoritmo de convolución, ejemplo práctico en Fortran 90.

A continuación se presenta el código fuente correspondiente a un programa que realiza la convolución de dos ficheros de entrada denominados como ondicula.txt y seriereflectiva.txt, generando a su vez un tercero llamado trazasintetica.txt.

Factores a considerar

1. Programa con extensión ~.f90, puede ser compilado con Fortran 90 o Fortran 95.

2. Programa funcional tanto en sistemas Microsoft Windows como GNU/Linux.

3. En el presente trabajo el programa fue compilado y ejecutado bajo un sistema Arch Linux x86. 

4. Se utilizó el compilador gcc­fortran. Mediante los comandos gfortran ~.f90 & ./a.out(donde ~ corresponde al nombre del archivo a compilar, fue compilado y ejecutado respectivamente) en Bash (Bourne Again Shell).

5. Se omiten los detalles sobre el funcionamiento del lenguaje Fortran, dichos detalles escapan del objetivo de este trabajo.

6. Se realizó un screenshot de los resultados finales mediante el programa “Captura de Pantalla”. Que forma parte de los paquetes básicos del entorno gráfico Gnome 3.

Dichos archivos, el código fuente del programa, ondicula.txt, seriereflectiva.txt e inclusive una copia del archivo original de este trabajo así como un archivo .pdf serán entregados en un CD. Donde el programa podría ser ejecutado una vez compilado en cualquier sistema (Necesariamente se necesita contar con un compilador Fortran 90 o 95).

Page 20: convolucion-Isay Humberto Lucas Hernández

Código fuente – programa convolution.f90

Page 21: convolucion-Isay Humberto Lucas Hernández

Contenido de los archivos ondicula.txt & seriereflectiva.txt

Evidencia de compilación y ejecución del programa

ondícula.txt seriereflectiva.txt

­0.25

8

 2.00  1.00

­1.00  0.00

 0.50  2.00

 4.00

 6.00

Page 22: convolucion-Isay Humberto Lucas Hernández

Resultados guardados en archivo trazasintetica.txt

   2.00000000    

  ­1.00000000    

   4.50000000    

   5.75000000    

   9.00000000    

   11.5000000    

  ­6.00000000    

   2.50000000    

  ­2.00000000   

Dando finalmente como resultado que

S[0] = 2                                               S[5] = 23/2     

S[1] = ­1                                              S[6] = ­6   

S[2] = 9/2                                            S[7] = 5/2    

S[3] = 23/4                                          S[8] = ­2                                      

S[4] = 9         

Coinciden un 100% con los obtenidos mediante los demás métodos para realizar la convolución. Por lo tanto, se puede garantizar que el código fuente del programa, así como su funcionamiento, son correctos.

Page 23: convolucion-Isay Humberto Lucas Hernández

Función de convolución en Matlab

Matlab es un potente programa para la manipulación de matrices (Su objetivo principal) pero no se limita simplemente a ello. Es una herramienta de programación, planteamiento y solución de cualquier tipo de problemas referentes a ingeniería o demás tipos de trabajos.

Es relevante notar que a pesar de que una convolución puede ser programada en Matlab, dicho programa ya cuenta con una función que permite realizar la convolución entre dos funciones. Sin indagar en detalles, se presenta la siguiente demostración.

>> W = [2,­1,1/2,­1/4]

W =   2.0000   ­1.0000    0.5000   ­0.2500

>> R = [1,0,2,4,6,8]

R =     1     0     2     4     6     8

>> conv(W,R)

ans =

   2.0000   ­1.0000    4.5000    5.7500    9.0000   11.5000   ­6.0000    2.5000 ­2.0000 

 Se aprecia que los resultados son los mismos que hemos obtenido a lo largo de este trabajo. Consultando la documentación de Matlab, es notorio que el principio de cálculo es casi el mismo que para Fortran y por obvias razones, obedece a 

∑i=0

w[k−i ]∗r [ i ]

Page 24: convolucion-Isay Humberto Lucas Hernández

Conclusiones

La convolución de dos funciones (señales) puede contar con una infinidad de metodos y procedimientos a seguir, no obstante, si se realiza de la manera correcta los resultados serán siempre los mismos. Las funciones que se manejaron en este ejemplo práctico fueron muy “pequeñas”, debido a que en el ámbito laboral, técnico y artístico, se manejan gran cantidad de datos y realizar este procedimiento a mano no figura entre las opciones. Es ahí donde entran los lenguajes de programación o los programas que ya definen algún módulo dedicado específicamente a llevar acabo esta operación funcional.

En futuros trabajos se llevará acabo de nuevo la convolución esta vez con datos reales o bien que se asemejan un poco a una serie reflectiva, así como una ondícula de entrada (ya sea de Ricker o de Klauder)

Después del presente trabajo quedan bien definidos y entendidos los conceptos de convolución, convolución discreta así como las distintas formas de realizarla.

Se adjunta a este trabajo un CD con los archivos mencionados en la sección: Algoritmo de convolución, ejemplo práctico en Fortran 90.