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
1

2. Sinyal periodik dengan f1 = 60 dan f2 = 150
2

3. Sinyal periodik dengan f1 = 30 dan f2 = 0 + random noise
3

4. Sinyal periodik dengan f1 = 60 dan f2 = 150 + random noise
4

Source Code Matlab mengenai transformasi Fourier satu dimensi dapat diunduh melalui laman 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 Pengenalan Matlab and tagged , , , , , , , , , , , , , , , , , , , , , , . Bookmark the permalink. 4 Comments.

  1. Itu bahasa pemrograman apa gan?

  2. ma kasi gan..buat share ilmux…sangat membantu..truz berkarya

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: