La convoluzione di due segnali di tempo in MATLAB

March 28

La convoluzione di due segnali di tempo in MATLAB


MATLAB è un software utilizzato per la simulazione, elaborazione del segnale, operazioni matematiche e l'analisi dei dati. Convoluzione è una operazione matematica che mescola due funzioni insieme. MATLAB fornisce metodi per convolvendo due segnali di tempo nel tempo o nel dominio della frequenza. È possibile utilizzare le funzioni incorporate per convolvere segnali di tempo in MATAB, o scrivere il proprio codice per aiutare a comprendere l'operazione di convoluzione.

circonvoluzione

L'operazione di convoluzione è definito come l'integrale o somma in casi discreti, sopra la gamma della funzione f (T) * g (tT) rispetto a T. Durante lo spostamento sopra la gamma di una funzione f, ciascun punto viene moltiplicato da una seconda funzione g. Nel dominio del tempo, convoluzione è un'operazione dispendiosa di calcolo; tuttavia, dopo aver trasformato nel dominio della frequenza utilizzando una trasformata di Fourier, convoluzione semplifica in moltiplicazioni.

Funzione built-in

Il "conv ()," o la variante bidimensionale "CONV2 ()," funzioni possono essere usati per convolvere semplice ed efficiente ai segnali in MATLAB. Si assume normalmente che i segnali sono in tempo o spazio-dominio, in contrapposizione al dominio della frequenza. I primi due argomenti sono i due segnali da convoluzione, o un segnale e un filtro. Il terzo argomento è un argomento forma che definisce la dimensione dell'output. Le opzioni valide sono "pieno", "stessa" o "valido".

mixed_signal = conv (SEGNALE 1, SEGNALE 2, 'stesso');
new_image = CONV2 (image1, image2, 'pieno');

Dominio del tempo

Nonostante sia funzionante convoluzione nel dominio del tempo, può essere utile per capire come funziona l'operazione di convoluzione.

% Per due segnali 1-D, F e G
my_length = lunghezza (f) + lunghezza (g) - 1;
risultato = zeri (my_length, 1);

per i = 1: my_length
per j = 1: lunghezza (f)

if( (i-j+1) > 0 && (i-j+1) < length(g) )
result(i) = f(j) * g(i-j+1);
end

fine
fine

Nel dominio della frequenza

segnali nel dominio del tempo può essere trasformato in dominio della frequenza utilizzando la trasformata di Fourier. MATLAB implementa una trasformata veloce di Fourier nel "FFT) (" la funzione. Nel dominio della frequenza, due segnali possono essere miscelati mediante moltiplicazione puntiforme utilizzando l'operatore ". *".

% Per due segnali, feg
F = fft (f);
G = FFT (g);
U = F * G.;
u = ifftshift (IFFT (U));