La convolución de dos señales de tiempo en MATLAB

Por chris daniels
La convolución de dos señales de tiempo en MATLAB
Hemera Technologies/AbleStock.com/Getty Images

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 ) );