Convoluția a două semnale de timp în MATLAB
convoluție
Operația de convoluție este definită ca integrale sau sumă în cazuri discrete, pe o serie de funcții f (T) * g (tT) în raport cu T. În timp ce deplasăm intervalul unei funcții f, fiecare punct este înmulțit cu un a doua funcție în g. În domeniul timpului, convoluția este o operație intensă de calcul, totuși, după transformarea lui în domeniul de frecvență prin transformarea Fourier, convoluția este simplificată până la multiplicări.
Funcție integrată
Funcțiile conv () sau varianta bidimensională "conv2 ()" pot fi folosite cu ușurință și eficient pentru a convola semnale în MATLAB, se presupune de obicei că semnalele sunt în domeniul temporal sau spațial, spre deosebire de domeniul Primele două argumente sunt cele două semnale care se convoacă sau un semnal și un filtru. Al treilea argument este un argument care definește dimensiunea ieșirii. Opțiunile valide sunt "complete", "același" sau "valid" "(" plin ", " egal "sau" valabil ").
mixed_signal = conv (semnal1, semnal2, "același"); new_image = conv2 (imagine1, imagine2, "plin");
Domeniu de timp
Efectuarea convoluției în domeniul timpului poate fi utilă pentru a înțelege cum funcționează această operație:
% de două semnale 1-D, fyg my_length = lungimea (f) + lungimea (g) - 1; rezultat = zerouri (lungimea mea, 1);
pentru i = 1: lungimea mea pentru j = 1: lungimea (f) dacă ((i-j + 1)> 0 && (i-j + 1) g (i-j + 1); sfârșitul capătului final
Domeniu de frecvență
Semnalele din domeniul timpului pot fi transformate în domeniul de frecvență utilizând transformarea Fourier. MATLAB implementează o transformare Fourier rapidă utilizând funcția "ffft ()". În domeniul frecvenței, două semnale pot fi amestecate folosind un multiplicare punct de către operatorul ". *".
% pentru două semnale, f și g F = fft (f); G = fft (g); U = F. * G; u = ifftshift (ifft (U));