Transformasi Fourier Satu Dimensi
Transformasi Fourier merupakan operasi transformasi yang mengubah domain suatu sinyal periodik dari domain waktu menjadi domain frekuensi. Transformasi ini umumnya digunakan pada bidang pengolahan sinyal digital maupun bidang pengolahan citra digital. Pada tahun 1822, Joseph Fourier, ahli matematika dari Perancis mengemukakan bahwa:
“Setiap fungsi periodik (sinyal) dapat dibentuk dari penjumlahan gelombang-gelombang sinus atau cosinus”.
Berikut ini merupakan contoh pemrograman matlab mengenai tranformasi Fourier satu dimensi. Persamaan yang digunakan untuk membentuk sinyal periodik dalam domain waktu pada contoh ini adalah y = sin (2*pi*f1*t) + sin (2*pi*f2*t).
1. Sinyal periodik dengan f1 = 30 dan f2 = 0
2. Sinyal periodik dengan f1 = 60 dan f2 = 150
3. Sinyal periodik dengan f1 = 30 dan f2 = 0 + random noise
4. Sinyal periodik dengan f1 = 60 dan f2 = 150 + random noise
File source code lengkap mengenai transformasi Fourier satu dimensi dapat diperoleh melalui halaman berikut ini: Source Code
Sedangkan tampilan source codenya adalah:
function fourier_transform global edit1 edit2 ax1 ax2 check1 text3 f = figure('Name','Fourier Transformation','MenuBar','none',... 'ToolBar','none','NumberTitle','off','Position',[250 130 800 500]); ax1 = axes('Position',[.3 .55 .65 .3],'XTick',[],... 'YTick',[],'Visible','on'); ax2 = axes('Position',[.3 .1 .65 .3],'XTick',[],... 'YTick',[],'Visible','on'); panel1 = uipanel('Title','Panel','FontWeight','bold',... 'FontSize',10,'Position',[.05 .5 .2 .37]); edit1 = uicontrol('Parent',panel1,'Style','edit','Position',[95 120 50 30]); edit2 = uicontrol('Parent',panel1,'Style','edit','Position',[95 80 50 30]); push1 = uicontrol('Parent',panel1,'Style','pushbutton',... 'Position',[10 15 130 30],'String','Plot','FontSize',10,... 'Callback',@pushbutton1); check1 = uicontrol('Parent',panel1,'Style','checkbox',... 'Position',[10 45 130 30],'String','Random Noise','FontSize',10,... 'Callback',@checkbutton1); text1 = uicontrol('Parent',panel1,'Style','text',... 'Position',[10 115 80 30],'String','Frequency 1','FontSize',10); text2 = uicontrol('Parent',panel1,'Style','text',... 'Position',[10 75 80 30],'String','Frequency 2','FontSize',10); text3 = uicontrol('Style','text','Position',[350 450 300 30],... 'String','y = sin(2*pi*f1*t) + sin(2*pi*f2*t)','FontSize',10); function checkbutton1(~,~) global check1 text3 val = get(check1,'Value'); switch val case 0 set(text3,'String','y = sin(2*pi*f1*t) + sin(2*pi*f2*t)'); case 1 set(text3,'String','y = sin(2*pi*f1*t) + sin(2*pi*f2*t) + 2*randn(size(t))'); end function pushbutton1(~,~) global edit1 edit2 ax1 ax2 check1 val = get(check1,'Value'); switch val case 0 t = 0:.001:.25; f1 = str2double(get(edit1,'String')); f2 = str2double(get(edit2,'String')); % Calculate data x = sin(2*pi*f1*t) + sin(2*pi*f2*t); y = fft(x,512); m = y.*conj(y)/512; f = 1000*(0:256)/512; % Create time plot axes(ax1) % Select the proper axes plot(t,x) set(ax1,'XMinorTick','on') grid on title('Time Domain') % Create frequency plot axes(ax2) % Select the proper axes plot(f,m(1:257)) set(ax2,'XMinorTick','on') grid on title('Frequency Domain') case 1 t = 0:.001:.25; f1 = str2double(get(edit1,'String')); f2 = str2double(get(edit2,'String')); % Calculate data x = sin(2*pi*f1*t) + sin(2*pi*f2*t) + 2*randn(size(t)); y = fft(x,512); m = y.*conj(y)/512; f = 1000*(0:256)/512; % Create time plot axes(ax1) % Select the proper axes plot(t,x) set(ax1,'XMinorTick','on') grid on title('Time Domain') % Create frequency plot axes(ax2) % Select the proper axes plot(f,m(1:257)) set(ax2,'XMinorTick','on') grid on title('Frequency Domain') end
Posted on January 19, 2016, in Pengolahan Sinyal and tagged cara membuat aplikasi gui matlab sederhana, cara membuat aplikasi matlab dengan gui, cara membuat aplikasi matlab sederhana, cara membuat gui matlab, cara transformasi fourier matlab, coding matlab transformasi fourier, coding transformasi fourier matlab, coding transformasi fourier menggunakan matlab, contoh program matlab sederhana, contoh transformasi fourier matlab, contoh transformasi fourier sederhana, mengubah domain waktu menjadi domain frekuensi dengan transformasi fourier, pengolahan sinyal digital menggunakan matlab, source code matlab transformasi fourier, source code transformasi fourier matlab sederhana, transformasi fourier matlab, transformasi fourier menggunakan matlab, transformasi fourier satu dimensi menggunakan matlab, transformasi fourier satu dimensi sinyal periodik, transformasi fourier satu dimensi sinyal periodik dengan matlab, transformasi gelombang sinus dan cosinus, transformasi sinyal periodik satu dimensi, transformasi sinyal periodik yang terkontaminasi noise. Bookmark the permalink. 16 Comments.
Itu bahasa pemrograman apa gan?
Bahasa pemrograman matlab mas
ma kasi gan..buat share ilmux…sangat membantu..truz berkarya
sama sama mas
maaf mas, klo misal muncul tulisan seperti ini di Command Window,. solusi’nya gmna?
??? Error using ==> fourier_transform>pushbutton1
Too many input arguments.
??? Error while evaluating uicontrol Callback
Atas perhatian’nya, terima kasih.
pada koding tersebut jumlah input terlalu banyak atau tidak sesuai dengan jumlah input yang ditentukan
maaf mas tanya.. kalau program fft untuk suara, semisal suara jangkrik gimana ya? karena untuk analisis di skripsi.. terimakasih 🙂
beberapa parameter dari fft bisa diekstrak untuk dijadikan sebagai ciri masukan dalam pengenalan suara
mas boleh minta referensi manual penghitungan FFT audio ? thanks
Semoga ke depan terdapat referensi manual penghitungan fft audio
bang programnya kok gk bisa di jalanin. coding yg salah mohon di kasih tau bang. mohon pencerahannya.
terimakasih.
Source code di atas tidak bisa dijalankan jika hanya dicopypaste saja
Source code lengkap bisa diperoleh melalui tokopedia sehingga bisa langsung dirunning dan dikembangkan
mas mau nanya, ini pake fft atau dft ya?
Fast fourier transform yang digunakan
Maaf mau tanya sintak untuk menentukan periode dari suatu suhu udara menggunakan transformasi fourier cepat ada tidak mas?
Sintak pada tutorial di atas bisa dicoba untuk diterapkan