Jumat, 15 Juni 2012

TRANSFORMASI FOURIER DENGAN BAHASA PEMROGRAMAN MATLAB

 
   Dalam kajian ilmu Geofisika, kita mengenal Transformasi. Penggunaan Transformasi diperlukan ketika kita ingin mendapatkan suatu informasi tertentu yang tidak tersedia sebelumnya. Contoh yang paling sering adalah ketika kita ingin mengetahui informasi frekuensi, kita memerlukan transformasi Fourier atau juga jika ingin mengetahui informasi tentang kombinasi skala dan frekuensi kita memerlukan transformasi wavelet.

 gambar 1. perbandingan antara transformasi Fourier dengan transformasi Wavelet


Transformasi bisa dibagi menjadi 2 jenis, yakni Transformasi PIKSEL / Geometris dan Transformasi RUANG / domain / Space.
Transformasi piksel masih bermain di ruang/domain yang sama (domain spasial), hanya posisi piksel yang kadang diubah. Contohnya : rotasi, translasi, scaling, invers, shear, dll. Transformasi jenis ini relatif mudah diimplementasikan dan banyak aplikasi yang dapat melakukannya (Paint, ACDSee, dll).
Transformasi Ruang  merupakan proses perubahan citra dari suatu ruang / domain ke ruang / domain
lainnya, contoh: dari ruang spasial ke ruang frekuensi.
Yang paling sering digunakan khususnya dalam pengolahan sinyal sinusoidal adalah Transformasi Fourier.
gambar 2 : Contoh Transformasi Ruang; dari Domain Waktu (Time) ke domain Frekuensi (frequency). dari sinyal Sinusoidal yang sama. Garis putus-putus pada domain Frekuensi sebagai transformasi fourier Diskrit REAL dan garis ambung sebagai IMAJINER.


Transformasi Fourier Diskrit ( Discrete Fouriere Transform);
  merupakan salah satu bentuk transformasi Fourier di mana sebagai ganti integral, digunakan penjumlahan. Dalam kajian matematis sering pula disebut sebagai transformasi Fourier berhingga (finite Fourier transform), yang merupakan suatu transformasi Fourier yang banyak diterapkan dalam Pemrosesan Sinyal Digital dan bidang-bidang terkait untuk menganalisa frekuensi-frekuensi yang terkandung dalam suatu contoh Sinyal atau isyarat, untuk menyelesaikan Persamaan Diferensial dan untuk melakukan sejumlah operasi, misalnya saja operasi-operasi Konvolusi. TFD ini dapat dihitung secara efesien dalam pemanfaataannya menggunakan algoritma Transformasi Fourier Cepat (TFC). TFD" merujuk pada suatu transformasi matematik bebas atau tidak bergantung bagaimana transformasi tersebut dihitung, sedangkan "TFC" merujuk pada satu atau beberapa algoritma efesien untuk menghitung TFD.

   Transformasi Fourier Diskrit REAL dengan bahasa pemrograman MATLAB
berikut saya cantumkan bahasa pemrograman yang digunakan dalam MATLAB (*m-file)  untuk Tranformasi Diskrit REAL. Semoga bermanfaat .

%Program Discrete Fourier Series
clear all;clc;

dt = 0.5; %sampling rate
T = 4; % perioda
N = T/dt; % Jumlah Sampel
t = [ 0 : dt : (N-1)*dt ]; % deret Waktu
k = [ 1 : length(t) ]; % Index Waktu
df = 1/(N*dt); % Sampling Frekuensi
fnyq = 1/(2*dt); % Frekuensi Maximum (Nyquist Frequency)
freq = [0:df:fnyq]; % deret Frekuensi

x = [1;1;1;0;0;0;1;1]; % Amplitudo dalam Domain waktu [ f(k.dt ) ]
% Matrik W
for k=1:N
    for i=1:length(freq)
        W(i,k) = cos ( ( i-1 )*2*( pi/T)*0.5*(k-1) )
    end
end

a=(1/N)*W*x

subplot(2,1,1)
plot (t,x,'ok','markerfacecolor','b')
grid on


subplot(2,1,2)
plot (freq,a,'ok','markerfacecolor','k')
grid on

 Berikut untuk Tranformasi Fourier Diskrit IMAJINER, di mana menginput nilai B dan C; dan Matrik W dan WP (P sebagai pemisalan), matlab *m-file'nya :

%Program Discrete Fourier Series IMAJINER
clear all;clc;

dt = 0.5; %sampling rate
T = 4; % perioda
N = T/dt; % Jumlah Sampel
t = [ 0 : dt : (N-1)*dt ]; % deret Waktu
k = [ 1 : length(t) ]; % Index Waktu
df = 1/(N*dt); % Sampling Frekuensi
fnyq = 1/(2*dt); % Frekuensi Maximum (Nyquist Frequency)
freq = [0:df:fnyq]; % deret Frekuensi
x = [1;1;1;0;0;0;1;1]; % Amplitudo dalam Domain waktu [ f(k.dt ) ]
% Matrik W
for k=1:N
    for i=1:length(freq)
        W(i,k) = cos ( ( i-1 )*2*( pi/T)*0.5*(k-1) )
    end
end

for k=1:N
    for i=1:length(freq)
        WP(i,k) = sin ( ( i-1 )*2*( pi/T)*0.5*(k-1) )
    end
end
a=(1/N)*W*x
b=(1/N)*WP*x
c=sqrt((a.^2)+(b.^2))

 subplot(2,1,1)
plot (t,x,'ok','markerfacecolor','b')
grid on

subplot(2,1,2)
plot (freq,a,'ok','markerfacecolor','k')
grid on


Hasil Plot'nya sebagai berikut :

hasil ketika *m_file tersebut di running di Matlab 

 Demikian bahasa pemrograman (*m-file) untuk Fourier Transform. Sekiranya bermanfaat bagi para pembaca sekalian. 

Referensi :
* bahan Kuliah Komputasi Geofisika semester V ; Akademi Meteorologi dan Geofisika
*http://zulkaryanto.files.wordpress.com/2010/01/transformasi-fourier.pdf
 *http://te.ugm.ac.id/~risanuri/v01/wp-content/uploads/2011/02/deret-fourier-dan-transformasi-fourier.pdf




Bintaro, 15 juni 2012.




 








Related Post:

0 komentar:

Posting Komentar

 
;