Matlab Tutorial For GUI Transformasi Fourier

 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 Hz


langsung saja buka matlab pilih new m.file lalu simpan dengan nama sesuai yang diinginkan 
kemudian 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