[signal processing] January 25, 2012

DISCRETE FOURIER TRANSFORM (DFT)

Ketika menghitung spektra (jamak dari spektrum) dari sebuah isyarat yang telah mengalami konversi dari analog ke digital (telah menjadi diskret) maka kita menggunakan DFT atau Discrete Fourier Transform yang merupakan transformasi fourier untuk isyarat diskrit. DFT juga dapat digunakan sebagai alternatif dari konvolusi linier antara dua isyarat diskrit karena konvolusi dalam kawasan (domain) waktu merupakan perkalian biasa dalam kawasan (domain) frekuensi. Sebuah isyarat x(k) yang berada di kawasan waktu ditransformasikan dengan menggunakan DFT menjadi X(r) yang berada di kawasan frekuensi akan memiliki hubungan sebagai berikut

x(k) sintesis X(r) analisis

Maka kita sering mendengar istilah analisis Fourier yang menyatakan cara mendapatkan spektrum frekuensi yang dikandung oleh sebuah isyarat x(k). Dalam hal ini penggunaan ‘k’ atau ‘n’ menyatakan bahwa nilai waktunya merupakan diskret. Berbeda dengan penggunaan ‘t’ yang menyatakan waktunya bernilai kontiniu. Sebaliknya, sintesis sebuah isyarat berarti membentuk kembali sebuah isyarat dalam domain waktu dari spektrum frekuensi yang diketahui. Ini sama halnya bila memiliki sejumlah isyarat dengan frekuensi tertentu lalu dijumlahkan dengan aturan Fourier baik deret maupun transformasi Fourier untuk mendapatkan sebuah isyarat tunggal baru, misalnya sebuah isyarat kotak atau segitiga. Persamaan untuk alihragam (transfomasi) Fourier dan alihragam balik (inverse)nya adalah Transformasi Fourier Diskret (DFT) = ,0 ≤ ≤ −1

[janshendry@gmail.com{EE&IT of UGM, Indonesia}]

Page 1

[signal processing] January 25, 2012

Transformasi Balik (inverse) Fourier Diskret (DFT) = = 1 ,0 ≤ ≤ −1

Dimana

yang disebut juga dengan twiddle factor.

Alihragam fourier dengan menggunakan formula konvensional DFT ini memiliki kekurangan dalam lama waktu yang dibutuhkan untuk menyelesaikan komputasi. Lama nya waktu ini dikarenakan jumlah komputasi yang linier dengan jumlah data. Semakin banyak data yang diolah maka semakin besar jumlah komputasinya sehingga semakin lama waktu yang dibutuhkan untuk menyelesaikan keseluruhan proses. Jumlah komputasi yang dibutuhkan adalah N2 dan dituliskan dengan ‘Big oh’ O(N2). Contoh (1): Misalkan ada sebuah runtun dalam domain waktu sebagai berikut: x(k) = [1,2,3,4] Maka DFT nya adalah = dengan Maka, Dengan N = 4 (jumlah data). = 0 = 0
.
. .

,0 ≤

−1

=

.

,0 ≤
.

≤3

+

1

.

+
. .

2

+
. .

3

.
. .

=1 +2 = 1 cos 0 − jsin 0 0 =1+2+3+4 0 = 10

+3 + 2 cos 0 −

+4 0 + 3 cos 0 −

0

+ 4 cos 0 −

[janshendry@gmail.com{EE&IT of UGM, Indonesia}]

Page 2

[signal processing] January 25, 2012

1 = =1

0

.
. .

+

1

.

+
. .

2 +3

.

+
. .

3 +4

.
. .

= 1 cos 0 − jsin 0

+2

+ 2 cos

+ 3 cos

+ 4 cos

= 1 + −2 1 = −2 + 2

+ −3 + 4

2 =

0

.
. .

+

1

.

+
. .

2

.

+
. .

3 +4

.
. .

+2 =1 = 1 cos 0 − jsin 0 3

+3 + 2 cos

+ 3 cos 2

2

+ 4 cos 3

= 1 + −2 + 3 + −4 2 = −2

3 = =1

0

.
. .

+

1

.

+
. .

2 +3

.

+
. .

3 +4

.
. .

= 1 cos 0 − jsin 0

+2

+ 2 cos

+ 3 cos 3

3

+ 4 cos

= 1 + 2 + −3 + −4 3 = −2 − 2 Maka komponen frekuensi dari runtut x(k) adalah = [10 − 2 + 2 − 2 − 2 − 2 ]

Contoh (2): Hitunglah IDFT dari komponen frekuensi berikut Dengan nilai N=4, maka = dengan = . 1 4 ,0 ≤ ≤3 = [10 − 2 + 2 − 2 − 2 − 2 ]

[janshendry@gmail.com{EE&IT of UGM, Indonesia}]

Page 3

[signal processing] January 25, 2012

0 = =

0 10
. .

.

+

1

.

+

2
. .

.

+

3
. .

.

)
. .

=

−2 − 2

10 cos 0 + jsin 0 cos 0 + 10 + −2 + 2

+ −2 + 2

+ −2 + 2 0

+ −2

cos 0 +

+ −2 − 2 0

+ −2 cos 0 +

0

+

= 0 = 1 = = =

+ −2 + −2 − 2

4 =1 0 10 −2 − 2
. .

.

+

1

.

+

2
. .

.

+

3
. .

.

) + −2 − 2
. .

+ −2 + 2 cos +

+ −2 cos +

10 cos 0 + jsin 0

+ −2 + 2

+ −2 cos

+

+

= 0 =

10 + −2 − 2 + 2 + 2 − 2 8 =2

Bila diteruskan hingga k = 3 maka didapat runtun balik x(k) = [1 2 3 4]. Jumlah komputasi dari kasus di atas baik adalah N2 = 16. Nah, perkembangan berikutnya untuk transformasi Fourier diskret terkait dengan memperkecil jumlah komputasi sehingga lama waktunya bisa diminimalkan. Perkembangan tersebut menghasilkan FFT atau alih ragam cepat Fourier yang memiliki jumlah komputasi lebih sedikit. Perbedaan ini bisa dilihat ketika jumlah data yang akan diolah sangat banyak. Dalam artikel lain, akan dibahas tentang FFT. Dengan menggunakan Matlab, kita juga bisa membuat program sendiri untuk mempelajari dan menganalisa DFT ini. Berikut ini programnya
clear all; close all; clc; x=1:8; N=length(x); X=zeros(1,N); compt=0; %% DFT 1 dimensi for k=0:N-1 X(k+1)=0; for n=0:N-1 twiddle_factor=exp(-1j*2*pi*(n)*(k)/N); X(k+1)=X(k+1)+x(n+1)*twiddle_factor;

[janshendry@gmail.com{EE&IT of UGM, Indonesia}]

Page 4

[signal processing] January 25, 2012

compt=compt+1; end end ft=fft(x); % matlab toolbox <- crosscheck disp('Original Signal'); disp(x); disp('FFT of Original Signal'); disp(X); %%

Program Matlab untuk IDFT (Inverse) yang bisa digunakan adalah
clear all; close all; clc; %% IDFT 1 dimensi for k=0:N-1 x(k+1)=0; for n=0:N-1 twiddle_factor=exp(1j*2*pi*(n)*(k)/N); x(k+1)=x(k+1)+(1/N)*X(n+1)*twiddle_factor; end end xx=ifft(ft); % matlab toolbox <- crosscheck magnitude=sqrt(real(x).^2+imag(x).^2); disp('IFFT of Frequency Spectrum'); disp(magnitude); disp('Amount of Computation'); disp(compt); %% % jans hendry

Contoh hasil eksekusi dengan program Matlab di atas adalah

[signal processing] January 25, 2012

Sumber:
Dari berbagai bacaan tentang digital signal processing…

@ thanks…

Sign up to vote on this title
UsefulNot useful