A convolução de dois sinais de tempo no MATLAB
Convolução
A operação convolução é definida como a integral ou soma em casos discretos, ao longo de um intervalo de funções f (T) * g (tT) em relação a T. Ao mover o intervalo de uma função f, cada ponto é multiplicado por um segunda função em g. No domínio do tempo, a convolução é uma operação de computação intensiva, no entanto, depois de transformá-la no domínio da frequência por transformação de Fourier, a convolução é simplificada para multiplicações.
Função integrada
As funções "conv (), ou sua variante bidimensional" conv2 () ", podem ser usadas com facilidade e eficiência para transmitir sinais no MATLAB, geralmente é assumido que os sinais estão no domínio temporal ou espacial, ao contrário do domínio do Os dois primeiros argumentos são os dois sinais a serem convolvidos, ou um sinal e um filtro. O terceiro argumento é um argumento que define o tamanho da saída. As opções válidas são "full", "same" ou "valid". "(" completo ", " igual "ou" válido ").
mixed_signal = conv (signal1, signal2, 'same'); new_image = conv2 (image1, image2, 'full');
Domínio do tempo
Realizar a convolução no domínio do tempo pode ser útil para entender como essa operação funciona:
% por dois sinais 1-D, fyg my_length = comprimento (f) + comprimento (g) - 1; resultado = zeros (my_length, 1);
para i = 1: my_length para j = 1: length (f) if ((i-j + 1)> 0 && (i-j + 1) <comprimento (g)) resultado (i) = f (j) * g (i-j + 1); extremidade final
Domínio de Freqüência
Os sinais no domínio do tempo podem ser transformados no domínio da frequência usando a transformação de Fourier. O MATLAB implementa uma transformação rápida de Fourier usando a função "ffft ()". No domínio da frequência, dois sinais podem ser misturados usando uma multiplicação de pontos pelo operador ". *".
% para dois sinais f e g F = fft (f); G = fft (g); U = F. * G; u = ifftshift (ifft (U));