miércoles, 29 de junio de 2016

Convolución de dos señales en Matlab

La convolución continua de dos funciones esta dada por:
De esta forma, lo que esperaríamos ver al convolucionar dos pulsos cuadrados de amplitud y ancho unitario se muestra en la siguiente animación:

 Para implementar la convolución de dos señales en Matlab se debe considerar que la función conv() [ver documentación] está realizando la operación de convolución discreta que está expresada como:
Si uno utiliza esta función esperando los resultados de una convolución continua, se lleva la sorpresa de que los valores de la convolución resultante son muchos más altos que los valores correctos. Esto se ocurre porque hace falta considerar que una convolución continua se aproxima como el producto del periodo de muestreo por la convolución discreta de las mismas señales evaluadas en tiempo discreto. Esto es:
Así, el programa en Matlab nos queda:

Ts = 0.01;
t = -2:Ts:2;
f = (t>-0.5) - (t>0.5);
g = f;

%Convolución
cnv = Ts*conv(f,g,'same');

subplot(3,1,1),plot(t,f), ylim([0 1.5]),title('f(t)'),grid on
subplot(3,1,2),plot(t,g,'r'), ylim([0 1.5]),title('g(t)'),grid on
subplot(3,1,3),plot(t,cnv,'g'), ylim([0 1.5]),title('conv(f(t),g(t))'),grid on

Referencias:
Using MATLAB with the Convolution Method, California State University Northridge

No hay comentarios: