Tuesday, August 29, 2017

WATAK PERGESERAN WAKTU SIRKULAR DFT














GUI MATLAB untuk memverifikasi watak pergeseran sirkular telah dirancang. Kode sumber callback dari tombol TAMPILKAN RUNTUN EKSPONENSIAL RIIL:

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)

%Membersihkan sumbu-sumbu
cla(handles.axes6,'reset');
set(handles.axes6,'visible', 'off');

% Membaca n1, n2, dan a dari ketiga edit teks
n1 = str2num(get(handles.editN1,'String'));
n2 = str2num(get(handles.editN2,'String'));
a = str2num(get(handles.editA,'String'));

% Menghasilkan runtun eksponensial kompleks
n=n1:n2;
x=a.^n;

%=========================================================================
%Menampilkan x pada sumbu axes1 dengan tebal garis 2 warna merah
axes(handles.axes1)
stem(n,real(x),'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]);

%Menyimpan data global
global x_1
x_1 = x;

global n1_x
n1_x = n1;

global n2_x
n2_x = n2;


Kode sumber callback dari tombol TAMPILKAN RUNTUN DIGESER SIRKULAR:

function TAMPILKANSIRKULAR_Callback(hObject, eventdata, handles)
% hObject    handle to TAMPILKANSIRKULAR (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
global x_1
x1 = x_1;

global n1_x
n1 = n1_x;

global n2_x
n2 = n2_x;

n=n1:n2; N=length(n);

%Membaca nilai pergeseran m
m = str2num(get(handles.editM,'String'));

%Menghasilkan runtun tergeser sirkular
y=sirkgeser(x1,m,N);

%=========================================================================
%Menampilkan xec pada sumbu axes6 dengan tebal garis 2 warna merah
axes(handles.axes6)
stem(n,y,'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('Imajiner');
title('Runtun Genap Sirkular Digeser Sejauh m')

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

global x_geser

x_geser = y;


Kode sumber 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
x = x_1;

global n1_x
n1 = n1_x;

global n2_x
n2 = n2_x;

global x_geser
y = x_geser;

%Membaca N
N = str2num(get(handles.editBanyakTitik,'String'));

%==========================================================================
%Menghitung DFT[x((n-m) mod N)]
xn=y;
L=length(xn);
xn=[xn,zeros(1,N-L+1)];
k=[-N/2:N/2];
Xk=dft(xn,N+1);                           % DFT[x((n-m) mod N)]

%==========================================================================
%Menampilkan Real dari DFT[x((n-m) mod N)]
axes(handles.axes2), stem(k,real(Xk), 'c', 'LineWidth',2); grid
xlabel('k');
title('Bagian riil dari DFT[x((n-m) mod N)]'); ylabel('Magnitudo')

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

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

%==========================================================================
%Menampilkan Imajiner dari DFT[x((n-m) mod N)]
axes(handles.axes3), stem(k,imag(Xk), 'c', 'LineWidth',2); grid
xlabel('k');
title('Bagian Imajiner dari DFT[x((n-m) mod N)]'); ylabel('Imajiner')

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

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

%==========================================================================
%Menampilkan Real dari DFT[xn]WNmk
%==========================================================================
%Membaca nilai pergeseran m
m = str2num(get(handles.editM,'String'));
WN=exp(-j*2*pi/N);  % faktor WN
WNmk=WN.^(m*k);        % modulasi karena pergeseran sirkular DFT
xn=x;
L=length(xn);
xn=[xn,zeros(1,N-L+1)];
k=[-N/2:N/2];
Xk=dft(xn,N+1).*WNmk;                           % DFT[x((n-m) mod N)]

axes(handles.axes4), stem(k,real(Xk), 'c', 'LineWidth',2); grid
xlabel('k');
title('Bagian riil dari DFT[xn]WNmk'); ylabel('Magnitudo')

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

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

%==========================================================================
%Menampilkan Imajiner dari DFT[xn]WNmk
axes(handles.axes5), stem(k,imag(Xk), 'c', 'LineWidth',2); grid
xlabel('k');
title('Bagian Imajiner dari DFT[xn]WNmk'); ylabel('Imajiner')

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

%Memberikan warna keabuan  pada latar sumbu

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

No comments: