La convolution de deux signaux horaires dans MATLAB

MATLAB offre des fonctions de domaine temporel ou de fréquence.

Convolution

L'opération de convolution est définie comme l'intégrale ou la somme dans des cas discrets, sur une plage de fonctions f (T) * g (tT) par rapport à T. Lors du déplacement de la plage d'une fonction f, chaque point est multiplié par un deuxième fonction en g. Dans le domaine du temps, la convolution est une opération de calcul intensive; toutefois, après l'avoir transformée dans le domaine fréquentiel par transformation de Fourier, la convolution est simplifiée en multiplications.

Fonction intégrée

Les fonctions "conv (), ou sa variante bidimensionnelle" conv2 () ", peuvent être utilisées avec facilité et efficacité pour convoluer des signaux dans MATLAB. On suppose généralement que les signaux se trouvent dans le domaine temporel ou spatial Les deux premiers arguments sont les deux signaux à résoudre, ou un signal et un filtre. Le troisième argument est un argument qui définit la taille de la sortie. Les options valides sont "complet", "identique" ou "valide. "(" complet ", " égal "ou" valide ").

mixed_signal = conv (signal1, signal2, 'identique'); new_image = conv2 (image1, image2, 'complet');

Domaine du temps

Effectuer la convolution dans le domaine temporel peut être utile pour comprendre le fonctionnement de cette opération:

% sur deux signaux 1-D, fyg longueur_m = longueur (f) + longueur (g) - 1; résultat = zéros (my_length, 1);

pour i = 1: my_length pour j = 1: longueur (f) si ((i-j + 1)> 0 && (i-j + 1) <longueur (g)) résultat (i) = f (j) * g (i-j + 1); fin fin fin

Domaine de fréquence

Les signaux dans le domaine temporel peuvent être transformés dans le domaine fréquentiel à l'aide de la transformation de Fourier. MATLAB implémente une transformation de Fourier rapide à l'aide de la fonction "ffft ()". Dans le domaine fréquentiel, deux signaux peuvent être mélangés en utilisant une multiplication de points par l'opérateur ". *".

% pour deux signaux, f et g F = fft (f); G = fft (g); U = F. * G; u = ifftshift (ifft (U));