La convolución de dos señales de tiempo en MATLAB
MATLAB es un programa usado para la simulación de operaciones de ingeniería, procesamiento de señales y matemáticas y el análisis de datos., La convolución es una operación matemática que mezcla dos funciones. MATLAB provee métodos para realizar esta operación con dos señales temporales en el dominio de frecuencia o de tiempo. Puedes usar las funciones integradas para convolucionar señales de tiempo en MATLAB o escribir tu propio código que te ayude a entender la operación de convolución.
Convolución
La operación de convolución se define como la integral o suma en casos discretos, sobre un rango de funciones f(T) * g(t-T) con respecto a T. Mientras se mueve el rango de una función f, cada punto es multiplicado por una segunda función en g. En el dominio del tiempo, la convolución es una operación de computación intensiva, sin embargo, después de transformarlo en el dominio de la frecuencia mediante la transformación de Fourier, la convolución se simplifica a multiplicaciones.
Función integrada
Las funciones "conv(), o su variante bidimensional "conv2()", puede usarse con facilidad y eficiencia para convolucionar señales en MATLAB. Normalmente se asume que las señales están en el dominio temporal o espacial, de forma opuesta al dominio de la frecuencia. Los dos primeros argumentos son las dos señales a convolucionar, o una señal y un filtro. El tercer argumento es un argumento de forma que define el tamaño de la salida. Las opciones válidas son "full", "same" o "valid" ("lleno", "igual" o "válido").
mixed_signal = conv(signal1, signal2, 'same'); new_image = conv2(image1, image2, 'full');
Dominio del tiempo
Realizar la convolución en el dominio del tiempo puede ser útil para entender como funciona esta operación:
%por dos señales 1-D, f y g my_length = length(f) + length(g) - 1; result = zeros(my_length, 1 );
for i = 1:my_length for j = 1:length(f) if( (i-j+1) > 0 && (i-j+1) < length(g) ) result(i) = f(j) * g(i-j+1); end end end
Dominio de la frecuencia
Las señales en el dominio de tiempo pueden transformarse al dominio de la frecuencia usando la transformación de Fourier. MATLAB implementa un transformación de Fourier rápida usando la función "ffft()". En el dominio de la frecuencia, dos señales pueden mezclarse usando una multiplicación por puntos mediante el operador ".*".
%por dos señanles, f y g F = fft( f ); G = fft( g ); U = F .* G; u = ifftshift( ifft( U ) );