Berikut telah dirancang GUI MATLAB yang
mengaplikasikan jendela Hanning sebagai transformasi Hilbert. Tapis ini juga
diterapkan untuk menapis audio digital.
Berikut adalah kode sumber callback dari
tombol Transformasi Hilbert:
function
Trans_Helbert_Callback(hObject, eventdata, handles)
% hObject handle to Trans_Helbert (see GCBO)
% eventdata reserved - to be defined in a future version
of MATLAB
% handles structure with handles and user data (see GUIDATA)
global x;
% Membaca semua
parameter tapis
omega1s =
str2num(get(handles.omega1s,'String'));
omega2s =
str2num(get(handles.omega2s,'String'));
omega1p =
str2num(get(handles.omega1p,'String'));
omega2p =
str2num(get(handles.omega2p,'String'));
A1s =
str2num(get(handles.A1s,'String'));
A2s =
str2num(get(handles.A2s,'String'));
R1p =
str2num(get(handles.R1p,'String'));
R2p =
str2num(get(handles.R2p,'String'));
%Mengalikan dengan
pi
omega1s = omega1s *
pi;
omega1p = omega1p *
pi;
omega2s = omega2s *
pi;
omega2p = omega2p *
pi;
if(omega1s >
omega1p)
%Menghitung
tr_lebar=omega1s-omega1p;
M=ceil(6.6*pi/tr_lebar)+1;
%M=25;
alpha=(M-1)/2;
n=[0:1:M-1];
%Tanggapan tapis
helbert
hd=(2/pi)*((sin((pi/2)*(n-alpha)).^2)./(n-alpha));
hd(alpha+1)=0;
%Tanggapan tapis
aktual
w_han=(hanning(M))';
h=hd.*w_han;
%Tanggapan
frekuensi
[Hr,w,P,L]=Hr_Tipe3(h);
w=w';Hr=Hr';
w=[-fliplr(w),w(2:501)];
Hr=[-fliplr(Hr), Hr(2:501)];
%Menampilkan
tanggapan impuls ideal
axes(handles.axes7);
stem(n,hd,'color','r');
title('Respon impuls ideal');
axis([0 M-1 -0.75
0.75]);xlabel('n'); ylabel('hd(n)');
set(gca,'color',[0,0,0]);
%Menampilkan
jendela Hanning
axes(handles.axes8);
stem(n,w_han,'color','r');
title('Jendela Hanning');
axis([0 M-1 0
1.1]);xlabel('n'); ylabel('wn');
set(gca,'color',[0,0,0]);
%Menampilkan
tanggapan impuls aktual
axes(handles.axes9);
stem(n,h,'color','r');title('Respon
impuls aktual');
axis([0 M-1 -0.75
0.75]);xlabel('n'); ylabel('h(n)');
set(gca,'color',[0,0,0]);
%Menampilkan
tanggapan dalam dB
axes(handles.axes3);
plot(w/pi,Hr,'color','r',
'LineWidth' ,2);title('Respon magnitudo'); grid on;
xlabel('frekuensi
dalam unit pi'); ylabel('dB');
set(gca,'color',[0,0,0]);
% Menghitung Hasil
Penapisan
y =
conv(double(x),double(h), 'same');
axes(handles.axes2);
t =
0:length(y)-1; %vektor indeks
stem(t,y,'linewidth',1,'color','y');title('Keluaran
Tapis')
set(gca,'color',[0,0,0]);
else
h = msgbox('Omega1s Harus Lebih Besar dari
Omega1p');
end
%Menyimpan data
global
global helbert
helbert = h;
No comments:
Post a Comment