Transformasi Fourier merupakan keluarga dari Transformasi Integral, gampangnya, ini adalah ‘alat’ yang bisa kita gunakan untuk melihat sinyal dengan kacamata yang lain. Jika selama ini kita hanya melihat sinyal melalui osiloskop atau alat sejenis lainnya, itu adalah visualisasi sinyal dalam ranah waktu (time domain), sumbu horisontal-nya waktu (t) dan sumbu vertikal-nya adalah amplitudo (A)
Tujuan transformasi forier kita bisa tahu secara langsung informasi penting di ranah waktu kecuali amplitudo dan kapan terjadinya, bisakah menghitung frekuensinya? Karena bisa jadi Anda hanya membayangkan sebuah gelombang sinusoidal, Anda tinggal hitung berapa gelombang dalam satu detiknya, thing! Langsung ketemu sekian gelombang/detik atau pake satuan cycle/sec atau Hzkemudian paste list program dibawah ini
% this is include on GUI MATLAB so u can learn faster 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); % formula text3 = uicontrol('Style','text','Position',[350 450 300 30],... 'String','y = sin(2*pi*f1*t) + sin(2*pi*f2*t)','FontSize',10); % random noise when this check button on + 2*randn(size(t)) 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 % execute program 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); % fft is fourier transform and we can change to time domain 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') % plot 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') % plot freq domain case 1 t = 0:.001:.25; %scale of plot 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
kemudian run program lalu lihat hasilnya
untuk video selengkapnya bisa lihat dibawah ini semoga bermanfaat
1 Comments