Konvolusi dua sinyal waktu di MATLAB

MATLAB menawarkan domain waktu atau fungsi frekuensi.

Konvolusi

Operasi konvolusi didefinisikan sebagai integral atau jumlah dalam kasus-kasus diskrit, di atas berbagai fungsi f (T) * g (tT) sehubungan dengan T. Sambil memindahkan rentang fungsi f, setiap titik dikalikan dengan fungsi kedua dalam g. Dalam domain waktu, konvolusi adalah operasi komputasi intensif, namun, setelah mengubahnya menjadi domain frekuensi oleh transformasi Fourier, konvolusi disederhanakan menjadi perkalian.

Fungsi terintegrasi

Fungsi "conv (), atau varian dua-dimensi" conv2 () ", dapat digunakan dengan mudah dan efisien untuk membelitkan sinyal dalam MATLAB, biasanya diasumsikan bahwa sinyal berada dalam domain temporal atau spasial, dibandingkan dengan domain dari Dua argumen pertama adalah dua sinyal untuk dikonvolusi, atau sinyal dan filter. Argumen ketiga adalah argumen yang mendefinisikan ukuran output. Opsi yang valid adalah "penuh", "sama" atau "valid "(" penuh ", " sama "atau" valid ").

mixed_signal = conv (signal1, signal2, 'same'); new_image = conv2 (image1, image2, 'full');

Domain waktu

Melakukan konvolusi dalam domain waktu dapat berguna untuk memahami cara kerja operasi ini:

% oleh dua sinyal 1-D, fyg my_length = panjang (f) + panjang (g) - 1; hasil = nol (my_length, 1);

untuk i = 1: my_length untuk j = 1: length (f) if ((i-j + 1)> 0 && (i-j + 1) <length (g)) hasil (i) = f (j) * g (i-j + 1); ujung akhir

Domain frekuensi

Sinyal dalam domain waktu dapat diubah ke domain frekuensi menggunakan transformasi Fourier. MATLAB mengimplementasikan transformasi Fourier cepat menggunakan fungsi "ffft ()". Dalam domain frekuensi, dua sinyal dapat dicampur menggunakan penggandaan titik oleh operator ". *".

% untuk dua sinyal, f dan g F = fft (f); G = fft (g); U = F. * G; u = ifftshift (ifft (U));