Monday, August 28, 2017

WATAK LINIERITAS DFT (DISCRETE FOURIER TRANSFORM)











GUI MATLAB untuk memverifikasi watak linieritas dari DFT telah dirancang. Berikut adalah callback dari tombol TAMPILKAN RUNTUN:

function TAMPILKAN_RUNTUN_Callback(hObject, eventdata, handles)
% hObject    handle to TAMPILKAN_RUNTUN (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Membaca n1, n2, alfa, dan beta dari keempat edit teks
n1 = str2num(get(handles.editN1,'String'));
n2 = str2num(get(handles.editN2,'String'));
alfa = str2num(get(handles.editAlfa,'String'));
beta = str2num(get(handles.editBeta,'String'));

% Menghasilkan runtun eksponensial riil dan sinusoidal
n=[n1:n2];
x1=0.95.^n;
%x1=x1/max(abs(x1)); %normalisasi

x2=cos(2*pi*0.05*n);
%x2=x2/max(abs(x2)); %normalisasi

%=========================================================================
%Menampilkan x1 pada sumbu axes1 dengan tebal garis 2 warna merah
axes(handles.axes1)
stem(n,alfa*x1,'r','LineWidth',2); grid on;

%Memberikan grid x dan y dengan warna biru
set(gca, 'XColor', 'b')
set(gca, 'YColor', 'b')

%Menambahkan label dan judul
xlabel('Cuplik');ylabel('Amplitudo');
title('Runtun Eksponensial Riil')

%Memberikan warna kehijauan  pada latar sumbu
set(gca,'Color',[0.5 0.5 0.25]);

%=========================================================================
%Menampilkan x2 pada sumbu axes6 dengan tebal garis 2 warna merah
axes(handles.axes6)
stem(n,beta*x2,'r','LineWidth',2); grid on;

%Memberikan grid x dan y dengan warna biru
set(gca, 'XColor', 'b')
set(gca, 'YColor', 'b')

%Menambahkan label dan judul
xlabel('Cuplik');ylabel('Amplitudo');
title('Runtun Sinusoidal')

%Memberikan warna kehijauan  pada latar sumbu
set(gca,'Color',[0.5 0.5 0.25]);

%Menyimpan data global agar dapat dipakai untuk callback berikutnya

global x_1
x_1 = x1;

global x_2
x_2 = x2;

global n1_x
n1_x = n1;

global n2_x

n2_x = n2;


Berikut adalah callback dari tombol TAMPILKAN DFT:

function TAMPILKAN_DFT_Callback(hObject, eventdata, handles)
% hObject    handle to TAMPILKAN_DFT (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

%Membaca data global agar dapat dipakai untuk callback berikutnya
global x_1
x1 = x_1;

global x_2
x2 = x_2;

global n1_x
n1 = n1_x;

global n2_x
n2 = n2_x;

%Membaca alfa, beta, dan N
alfa = str2num(get(handles.editAlfa,'String'));
beta = str2num(get(handles.editBeta,'String'));
N = str2num(get(handles.editBanyakTitik,'String'));

%==========================================================================
%Menghitung DFT[alfa*x1 + beta*x2]
xn=alfa*x1 + beta*x2;
L=length(xn);
xn=[xn,zeros(1,N-L)];
k=[-N/2:N/2];
Xk=dft(xn,N);                           % DFT
magXk=abs([Xk(N/2+1:N) Xk(1:N/2+1)]);   % magnitudo DFT

%Menampilkan Magnitudo dari DFT
magXk=abs([Xk(N/2+1:N) Xk(1:N/2+1)]);   % magnitudo DFT
axes(handles.axes2), stem(k,magXk, 'c', 'LineWidth',2); grid
xlabel('k');
title('Bagian magnitudo dari DFT[alfa*x1 + beta*x2]'); ylabel('Magnitudo')

%Memberikan grid x dan y dengan warna biru
set(gca, 'XColor', 'b')
set(gca, 'YColor', 'b')

%Memberikan warna kehijauan  pada latar sumbu
set(gca,'Color',[0.5 0.5 0.5]);

%Menampilkan Sudut dari DFT
angX=angle([Xk(N/2+1:N) Xk(1:N/2+1)]);
axes(handles.axes4), stem(k,angX, 'c', 'LineWidth',2); grid
xlabel('k');
title('Bagian Sudut dari DFT[alfa*x1 + beta*x2]'); ylabel('Radian')

%Memberikan grid x dan y dengan warna biru
set(gca, 'XColor', 'b')
set(gca, 'YColor', 'b')

%Memberikan warna kehijauan  pada latar sumbu
set(gca,'Color',[0.5 0.5 0.5]);


%==========================================================================
%Menghitung alfa*DFT[x1] + beta*DFT[x2]
L=length(x1);
x1=[x1,zeros(1,N-L)];
k=[-N/2:N/2];
Xk1=dft(x1,N);                           % DFT1

L=length(x2);
x2=[x2,zeros(1,N-L)];
k=[-N/2:N/2];
Xk2=dft(x2,N);                           % DFT2

Xk=alfa*Xk1 + beta*Xk2;

magXk=abs([Xk(N/2+1:N) Xk(1:N/2+1)]);   % magnitudo DFT

%Menampilkan Magnitudo dari DFT
magXk=abs([Xk(N/2+1:N) Xk(1:N/2+1)]);   % magnitudo DFT
axes(handles.axes3), stem(k,magXk, 'c', 'LineWidth',2); grid
xlabel('k');
title('Bagian magnitudo dari alfa*DFT[x1] + beta*DFT[x2]'); ylabel('Magnitudo')

%Memberikan grid x dan y dengan warna biru
set(gca, 'XColor', 'b')
set(gca, 'YColor', 'b')

%Memberikan warna kehijauan  pada latar sumbu
set(gca,'Color',[0.5 0.5 0.5]);

%Menampilkan Sudut dari DFT
angX=angle([Xk(N/2+1:N) Xk(1:N/2+1)]);
axes(handles.axes5), stem(k,angX, 'c', 'LineWidth',2); grid
xlabel('k');
title('Bagian Sudut dari alfa*DFT[x1] + beta*DFT[x2]'); ylabel('Radian')

%Memberikan grid x dan y dengan warna biru
set(gca, 'XColor', 'b')
set(gca, 'YColor', 'b')

%Memberikan warna kehijauan  pada latar sumbu

set(gca,'Color',[0.5 0.5 0.5]);


No comments: