Академический Документы
Профессиональный Документы
Культура Документы
KAJIAN TEORI
2.1.1 FFT (Fast Fourier Transform)
Menurut Tanudjaja dalam Mulyani (2017) Fast Fourier Transform (FFT)
adalah suatu algoritma transformasi Fourier yang dikembangkan dari algoritma
Discrete Fourier Transform (DFT). Dengan metode Fast Fourier Transform,
kecepatan komputasi dari perhitungan transformasi Fourier dapat ditingkatkan.
Pada Discrete Fourier Transform proses komputasi memerlukan looping sehingga
banyak memerlukan memori. Dengan menerapkan metode Fast Fourier Transform
perhitungan Discrete Fourier Transform dapat dipersingkat dengan cara mereduksi
proses looping. Ada dua macam metode Fast Fourier Transform yaitu Decimation
In time (DIT) dan metode Decimation In Frekuensi (DIF) yang memiliki fungsi
yang sama yaitu untuk mentransformasi sinyal menjadi frekuensi dasarnya. Fast
Fourier Transform (FFT) adalah algoritma yang mengimplementasikan Discrete
Fourier Transform (DFT) yang dioperasikan pada sebuah sinyal waktu diskrit yang
terdiri dari sampel menggunakan persamaan berikut.
[𝑘]=Σ[𝑖].cos (2𝜋𝑘𝑖𝑁)𝑁−1𝑖=0
𝐼𝑚𝑎[𝑘]=−Σ𝑥[𝑖].sin (2𝜋𝑘𝑖𝑁)𝑁−1𝑖=0
Keterangan:
𝑁 = jumlah data
𝑘 = 0,1,2,…,𝑁2
(𝑖) = data pada titik ke-𝑖
Di mana E adalah Everage Energy pada satuan audio, N adalah Total nomor
sampel di dalam satuan audio dan x(n) adalah nilai sampel pada sampel n.
Keterangan:
s = Periode keheningan dalam potongan file audio
l = Panjang dari tiap potongan file audio
recObj = audiorecorder(Fs,nBits,nChannels);
set(handles.edit7,'String','Silahkan bicara..')
recordblocking(recObj,t);
set(handles.edit7,'String','Berhenti bicara..')
myRecording = getaudiodata(recObj);
handles.audio=myRecording
axes(handles.axes1)
plot(myRecording)
grid on
title('Sinyal Suara Masukan')
handles.Fs = Fs;
handles.myRecording = myRecording;
guidata(hObject,handles);
11. Pada pushbutton 2 tulis perintah sebagai berikut.
myRecording = handles.myRecording;
Fs = handles.Fs;
sound(myRecording,Fs);
set(handles.edit6,'string',strcat(num2str(avarage_energy)));
elseif idMode == 2
x1=find(t==0);
y1=find(t==0.2);
t1=t(x1:y1);
y1=myRecording(x1:y1);
one=A(0:0.2);
axes(handles.axes2);
plot(t1,y1);
xlabel('amplitudo');
ylabel('frekuensi');
title('FFT');
grid on
sil=[];
for i=1:length(y1),
if(y1(i)>-.005)&&(y1(i)<.005),
sil(i)=1;
else
sil(i)=0;
end
end
sil;
sum(sil);
silent_ratio=sum(sil)/length(y1)
Y=fft(y1);
power=abs(Y(1:(length(Y)+1)/2));
frek=Fs*(0:(length(Y)-1)/2)/length(Y);
kuadrat=power.^2;
avarage_energy=sum(kuadrat)/length(power)
axes(handles.axes3)
plot(frek,power)
grid on
title('GRFIK AVERAGE')
set(handles.edit5,'string',strcat(num2str(silent_ratio)));
set(handles.edit6,'string',strcat(num2str(avarage_energy)));
elseif idMode == 3
x1=find(t==0.2);
y1=find(t==0.4);
t1=t(x1:y1);
y1=myRecording(x1:y1);
two=A(0.2:0.4);
axes(handles.axes2);
plot(t1,y1);
xlabel('amplitudo');
ylabel('frekuensi');
title('FFT');
grid on
sil=[];
for i=1:length(y1),
if(y1(i)>-.005)&&(y1(i)<.005),
sil(i)=1;
else
sil(i)=0;
end
end
sil;
sum(sil);
silent_ratio=sum(sil)/length(y1)
Y=fft(y1);
power=abs(Y(1:(length(Y)+1)/2));
frek=Fs*(0:(length(Y)-1)/2)/length(Y);
kuadrat=power.^2;
avarage_energy=sum(kuadrat)/length(power)
axes(handles.axes3)
plot(frek,power)
grid on
title('GRFIK AVERAGE')
set(handles.edit5,'string',strcat(num2str(silent_ratio)));
set(handles.edit6,'string',strcat(num2str(avarage_energy)));
elseif idMode == 4
x1=find(t==0.4);
y1=find(t==0.6);
t1=t(x1:y1);
y1=myRecording(x1:y1);
three=A(0.4:0.6);
axes(handles.axes2);
plot(t1,y1);
xlabel('amplitudo');
ylabel('frekuensi');
title('FFT');
grid on
sil=[];
for i=1:length(y1),
if(y1(i)>-.005)&&(y1(i)<.005),
sil(i)=1;
else
sil(i)=0;
end
end
sil;
sum(sil);
silent_ratio=sum(sil)/length(y1)
Y=fft(y1);
power=abs(Y(1:(length(Y)+1)/2));
frek=Fs*(0:(length(Y)-1)/2)/length(Y);
kuadrat=power.^2;
avarage_energy=sum(kuadrat)/length(power)
axes(handles.axes3)
plot(frek,power)
grid on
title('GRFIK AVERAGE')
set(handles.edit5,'string',strcat(num2str(silent_ratio)));
set(handles.edit6,'string',strcat(num2str(avarage_energy)));
elseif idMode == 5
x1=find(t==0.6);
y1=find(t==0.8);
t1=t(x1:y1);
y1=myRecording(x1:y1);
four=A(0.6:0.8);
axes(handles.axes2);
plot(t1,y1);
xlabel('amplitudo');
ylabel('frekuensi');
title('FFT');
grid on
sil=[];
for i=1:length(y1),
if(y1(i)>-.005)&&(y1(i)<.005),
sil(i)=1;
else
sil(i)=0;
end
end
sil;
sum(sil);
silent_ratio=sum(sil)/length(y1)
Y=fft(y1);
power=abs(Y(1:(length(Y)+1)/2));
frek=Fs*(0:(length(Y)-1)/2)/length(Y);
kuadrat=power.^2;
avarage_energy=sum(kuadrat)/length(power)
axes(handles.axes3)
plot(frek,power)
grid on
title('GRFIK AVERAGE')
set(handles.edit5,'string',strcat(num2str(silent_ratio)));
set(handles.edit6,'string',strcat(num2str(avarage_energy)));
elseif idMode == 6
x1=find(t==0.8);
y1=find(t==1.0);
t1=t(x1:y1);
y1=myRecording(x1:y1);
five=A(0.8:1.0);
axes(handles.axes2);
plot(t1,y1);
xlabel('amplitudo');
ylabel('frekuensi');
title('FFT');
grid on
sil=[];
for i=1:length(y1),
if(y1(i)>-.005)&&(y1(i)<.005),
sil(i)=1;
else
sil(i)=0;
end
end
sil;
sum(sil);
silent_ratio=sum(sil)/length(y1)
Y=fft(y1);
power=abs(Y(1:(length(Y)+1)/2));
frek=Fs*(0:(length(Y)-1)/2)/length(Y);
kuadrat=power.^2;
avarage_energy=sum(kuadrat)/length(power)
axes(handles.axes3)
plot(frek,power)
grid on
title('GRFIK AVERAGE')
set(handles.edit5,'string',strcat(num2str(silent_ratio)));
set(handles.edit6,'string',strcat(num2str(avarage_energy)));
end
Catatan: pada langkah awalnya diisi dulu edit text pada freq, t, nBIts dan
nChannels baru lah diRun dna Rekam ,selanjutnya untuk mendapatkan grafik sient
Ratio dan Average energy serta nilainya tekan Listbox oen,two,three, four dan five
hal ini dimaksudkan agar menghindari kesalahan yang terjadi pada sistem.