Nwlapcug.com


La convoluzione di due segnali di tempo in MATLAB

La convoluzione di due segnali di tempo in MATLAB


MATLAB è un software utilizzato per la simulazione di ingegneria, signal processing, operazioni matematiche e analisi dei dati. Convoluzione è un'operazione matematica che unisce due funzioni insieme. MATLAB fornisce metodi per la convoluzione di due segnali nel dominio del tempo o frequenza. Si possono utilizzare funzioni incorporate per condensa tempo segnali in MATAB, o scrivere codice personalizzato per aiutarvi a capire l'operazione di convoluzione.

Convoluzione

L'operazione di convoluzione è definita come l'integrale, o la somma in casi discreti, sopra la gamma della funzione f (t) * g(t-T) rispetto al T. Mentre si muove sopra la gamma di una funzione f, ogni punto viene moltiplicato per una seconda funzione g. Nel dominio del tempo, la convoluzione è un'operazione di calcolo intensivo; Tuttavia, dopo aver trasformato nel dominio della frequenza utilizzando una trasformata di Fourier, convoluzione si semplifica in moltiplicazioni.

Built-in funzione

Il "conv()", o la variante bidimensionale "conv2()," funzioni possono essere utilizzate per facilmente ed efficientemente condensa ai segnali in MATLAB. Normalmente si presume che i segnali sono nel dominio tempo-spazio-dominio o, al contrario la frequenza. I primi due argomenti sono i due segnali per essere convoluzione, o di un segnale e di un filtro. Il terzo argomento è un argomento di forma che definisce le dimensioni dell'output. Le opzioni valide sono "completo", "stesso", o "valido".

mixed_signal = conv (signal1, signal2, 'stesso');
new_image = conv2 (immagine1, immagine2, ' completo');

Dominio del tempo

Anche se l'esecuzione di convoluzione nel dominio del tempo, può essere utile capire come funziona l'operazione di convoluzione.

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

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

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

fine
fine

Dominio della frequenza

Segnali di tempo-dominio possono essere trasformati in dominio della frequenza, utilizzando la trasformata di Fourier. MATLAB implementa una trasformata di Fourier veloce nella funzione "FFT ()". Nel dominio della frequenza, due segnali possono essere miscelati con la moltiplicazione utilizzando il ". *" operatore.

% Per due segnali, f e g
F = fft (f);
G = fft (g);
U = F. * G;
u = ifftshift (ifft (U));