Pengunjung

Minggu, 10 November 2013

Targetku Pada Bulan November 2013

Banyak orang yang sukses selalu memulainya dengan kebaikan. Begitu pula jika kita punya niat baik maka harus segera merencanakannya dan terpenting adalah berani memulai untuk merealisasikanya. Ketikan tangan yang mungil ini, ku mulai dengan ucapan basmalah agar apa yang saya tulis bisa tercapai. pada bulan yang berkah ini. 

Banyak pepatah mengatakan bahwa perjalanan 1000 mil selalu di mulai dengan langkah pertama. Proses pertama merupakan hal yang sangat penting dalam kehidupan ini. kalau openingnya jelek yah endingnya juga sudah bisa dipastikan ddengan tragis. hahahha ^_^. Mungkin saja orang membuat target tiap tahun. Tapi kini saya akan membuat target tiap bulan. biar lebih semangat. hahahhah


Targetku bulan November ini sangat penting dalam rangka menyukseskan targetku untuk bulan Desember. Mari kita mulai dengan ucapan bismillahirohmanirrohim.... Ya Alloh berikanlah kemudahan dalam menjalani rencana ini. Kami hanya bisa berencana. Tapi Engkaulah yang mengatur semua takdir dan skenarionya. Hanya Kepada-Mu ya Rabb Kami memohon pertolongan. amin
  1. Menabung uang 3 Juta Rupiah/bulan
  2. Membereskan Proposal penelitian untuk Study M.Sc di UNisZa Malaysia.
  3. Wajib Solat Duha, Hajat dan Tahajud
  4. Mulai menyusun paper untuk persiapan M.Sc
  5. Persiapan untuk mengjhitbah bulan Desember
  6. Memberi perlengkapan adik sekolah
  7. Rihlah ke Curug Cinulang ^_^
  8. Bulan ini harus Tadarus sampe 4 Juz 
  9. Membayar Hutang pihutang wkwkwkkw
Keep Spirit. Ya Alloh mudah2n 9 poin ini biisa saya laksanakan. amin ^_^

Sabtu, 28 September 2013

Aplikasi LDR untuk Lampu Taman, Hand Dryer dan Alarm Otomatis

Salah satu jenis resistor yang peka terhadap perubahan cahaya adalah LDR. Resistansi LDR akan berubah seiring dengan intensitas cahaya yang mengenainya. LDR digunakan untuk mengubah energi cahaya menjadi energi listrik Saklar cahaya otomatis dan alarm pencuri merupakan contoh alat yang menggunakan LDR. Akan tetapi karena respon terhadap cahaya cukup lambat, maka LDR tidak dapat digunakan ketika intensitas cahaya berubah secara drastis.

Sensor cahaya berfungsi untuk mendeteksi cahaya yang ada di sekitar kita, maka LDR dapat digunakan sebagai sensor cahaya. sensor ini akan berubah resistansinya jika ada perubahan tingkat kecerahan cahaya. Prinsip inilah yang akan digunakan untuk mengaktifkan transistor untuk menghidupkan LED pada lampu taman otomatis, menggerakan  motor DC pada hand dryer dan menghidupkan buzzer pada alarm otomatis.

Senin, 08 Juli 2013

Konvolusi Image Menggunakan MATLAB

Konvolusi adalah salah satu proses filtering image yang sering dilakukan pada proses pengolahan gambar. Pada MATLAB terdapat banyak sekali cara yang dapat dilakukan untuk melakukan proses konvolusi. Proses konvolusi dilakukan dengan menggunakan matriks yang biasa disebut mask yaitu matriks yang berjalan sepanjang proses dan digunakan untuk menghitung nilai representasi lokal dari beberapa piksel pada image.

 Secara umum konvolusi didefinisikan sebagai cara untuk mengkombinasikan dua buah deret angka yang menghasilkan deret angka yang ketiga. Didalam dunia seismik deret-deret angka tersebut adalah wavelet sumber gelombang, reflektivitas bumi dan rekaman seismik. Secara matematis, konvolusi adalah integral yang mencerminkan jumlah lingkupan dari sebuah fungsi a yang digeser atas fungsi b sehingga menghasilkan fungsi c. Konvolusi dilambangkan dengan asterisk (*). Sehingga, a*b = c berarti fungsi a dikonvolusikan dengan fungsi b menghasilkan fungsi c.

Kekurangan dari metode ini adalah mengonsumsi banyak waktu karena harus mengalikan pixel berulang-ulang, sehingga tidak cocok untuk aplikasi real time. untuk mengatasi keterbatasan ini, digunakan metode alternatif yaitu transformasi fourier yang mengutak-atik ranah frekuensi, bukan spasial layaknya konvolusi. Berikut source code untuk konvolusi image menggunakan MATLAB.

gambar=imread('aceng.jpg');
mask = [-1 -1 -1; -1 8 -1; -1 -1 -1];
gray=rgb2gray(gambar);
thresh=graythresh(gray);
imbw=im2bw(gray,thresh);
hasil=conv2(double(imbw),mask,'valid');
imshow(gambar)
figure, imshow(hasil)
%konvolusi image


Sabtu, 06 Juli 2013

Object Counting Menggunakan MATLAB

Object Counting adalah proses menghitung objek berdasarkan konektivitasnya terhadapap piksel disekitarnya, bisa berdasarkan 4 piksel koneksi atau menggunakan 8 piksel koneksi. Berikut saya lampirkan source code Matlab untuk image processing object counting.

gambar=imread('aceng.jpg');
gray=rgb2gray(gambar);
thresh=graythresh(gray);
imbw=im2bw(gray,thresh);
[labeled,numObjects] = bwlabel(imbw,8);
imlabel = label2rgb(labeled, @spring, 'g', 'shuffle');
imshow(imbw)
figure,imshow(imlabel)

%objek counting



Implementasi Region of Interest (ROI) Menggunakan Image Processing

Region of Interest (ROI) merupakan salah satu fitur yang tersedia dalam JPEG2000. ROI memungkinkan dilakukannya pengkodean secara berbeda pada area tertentu dari citra digital, sehingga mempunyai kualitas yang lebih baik dari area sekitarnya. Fitur ini menjadi sangat penting, bila terdapat bagian tertentu dari citra digital yang dirasakan lebih penting dari bagian yang lainnya.

Metode yang digunakan untuk pengkodean ROI ini adalah Metode Maxshift. Prinsip utama pada pengkodean ROI ini adalah dengan menggeser bitplane dari koefisien yang dipilih sebagai ROI, sehingga menempati posisi yang lebih tinggi daripada bitplane sekitarnya. Karena menggunakan metode Maxshift, pergeserannya dilakukan sampai batas maksimal, sehingga seluruh bitplane dari koefisien ROI berada di atas bitplane dari area sekitarnya. Hal ini menyebabkan, pengkodean pada ROI akan menghasilkan area dengan kualitas maksimal dibandingkan area sekitarnya. Pada tahapan pengkodean entropi, koefisien yang dipilih untuk ROI, akan dikodekan terlebih dahulu, daripada koefisien yang lainnya.

Untuk melakukan ROI, perlu diidentifikasi koefisien–koefisien yang termasuk dalam ROI. Hal tersebut dimaksudkan untuk menghasilkan sebuah ROI mask, yang merupakan indikator dari koefisien yang termasuk ROI atau bukan. Umumnya yang digunakan sebagai penanda merupakan sebuah angka biner, yang dimiliki oleh piksel–piksel yang termasuk area ROI. Penanda tersebut berperan sebagai pemetaan area dari citra digital yang termasuk ROI. Pada proses DWT pun, mask tersebut akan berubah, mengikuti transformasi yang dilakukan pada citra digital. Sehingga pada akhirnya akan diperoleh informasi mengenai koefisien yang termasuk ROI.

Bentuk lain atau area yang berbentuk tidak beraturan yang ingin dipisahkan dari image induk maka didefinisikan sebagai ROI (Region of Interest) dimana di MATLAB terdapat banyak sekali fungsi yang bisa digunakan, salah satunya yaitu  roipoly(I,c,r) dimana I adalah matrik gambar, c adalah matrik titik kolom daerah yang menjadi ROI dan r adalah matrik titik baris daerah yang menjadi ROI. Source code Matlab untuk ROI sebagai berikut:

gambar=imread('aceng.jpg')
I=gambar(:,:,1);
c = [625 685 733 798 816 753 667];
r = [327 282 247 288 221 402 427];
BW = roipoly(I,c,r);
j = roifill(I,c,r);
figure, imshow(gambar)
figure, imshow(I)
figure, imshow(BW)
figure, imshow(j)
% image procssing




Jumat, 05 Juli 2013

Menampilkan Video Gambar Menggunakan Matlab

Dalam pemrosesan video yaitu mengambil data dengan menggunakan perintah video input dan menentukan parameter seperti video resolusi, lebar, panjang dan band dari video kemudian membuat sebuah handle yang menampung  image frame tersebut. Setelah handle image didapatkan maka biasanya video dapat ditampilkan. 

Sebelum memulai mengambil data dari video camera perlu dipastikan bahwa adapter kamera kita sudah terbaca dengan baik oleh matlab, untuk melakukan hal tersebut dapat digunakan perintah imaqhwinfopada commond windows

>> imaqhwinfo
ans =
InstalledAdaptors: {'coreco'  'winvideo'}
MATLABVersion: '7.7 (R2008b)'
ToolboxName: 'Image Acquisition Toolbox'
ToolboxVersion: '3.2 (R2008b)'
Terlihat dari hasil diatas bahwa kamera yang terinstal  pada komputer bermerk coreo dan
menggunakan driver winvideo

Dalam proses image processing yang dilakukan secara real-time pastinya dibutuhkan input data yang diambil secara real-time. Data yang diambil dapat berupa data video maupun data gambar. Data input dapat diambil dari webcam,  maupun kamera yang terintegrasi langsung pada laptop  Contoh sederhana dari menampikan video pada matlab seperti dibawah ini.

vid= videoinput('winvideo',1);
set(vid,'ReturnedColorSpace','rgb');
vidRes = get(vid, 'VideoResolution');
imWidth = vidRes(1);
imHeight = vidRes(2);
nBands = get(vid, 'NumberOfBands');
hImage = image( zeros(imHeight, imWidth, nBands) );
preview(vid, hImage);  

Hasilnya adalah sebagai berikut:

Kamis, 04 Juli 2013

Membuat Pengolahan Citra Dengan Domain Frekuensi

Pada Domain frekuensi, citra dinyatakan sebagai kombinasi dari gelombang penyusun dengan frekuensi berbeda. Transformasi Fourier merupakan suatu proses yang banyak digunakan untuk memindahkan domain dari suatu fungsi atau obyek ke dalam domain frekuensi. Di dalam pengolahan citra digital, transformasi fourier digunakan untuk mengubah domain spasial pada citra menjadi domain frekuensi. Analisa-analisa dalam domain frekuensi banyak digunakan seperti filtering. Dengan menggunakan transformasi fourier, sinyal atau citra dapat dilihat sebagai suatu obyek dalam domain frekuensi.

Berikut adalah gambar orang ganteng yang belum diproses oleh image processing. ^_^


Setelah diselesaikan menggunakan image processing maka hasilnya sebagai berikut:


Source code Matlab untuk menyelesaikan citra menggunakan fft ini adalah sebagai berikut:

gambar=imread('aceng.jpg');% aceng merupakan fiel gambar jpg
red=gambar(:,:,1);
green=gambar(:,:,2);
blue=gambar(:,:,3);
f=fft2(gambar);
ff=abs(f);
flog=log(ff);
imshow(ff(:,:,3),[0 200]), colormap(jet),colorbar
figure,imshow(ff(:,:,3),[0 12]), colormap(jet),colorbar
%Mngolah citra dngan metode FFT

 Sumber ini saya ambil dari artikel muhammad iqbal IPB Bogor

Membuat GUI untuk Logika Fuzzy

Pada artikel sebelumnya saya sudah menulis judul artikel "Menyelesaikan Logika Fuzzy Mamdani Menggunakan Matlab". Secara lengkap saya telah membahas cara menyelesaikan prediksi banjir menggunakan logika fuzzy dengan bantuan software MATLAB. Pada artikel ini saya akan memberikan sedikit ilmu untuk membuat tampilan GUI logika fuzzy untuk studi kasus prediksi banjir yang saya jelaskan pada tulisan sebelumnya. 

 Untuk membuat GUI pada prediksi banjir menggunakan logika fuzzy. Pertama kita save file prediksi banjir yang telah diselesaikan dengan logika fuzzy dan file GUI untuk menyelesaikannya dalam satu folder. Ketik guide pada commond windows sehingga muncul tampilan sebagai berikut:


Klik ok. Kemudian klik Button Group pada menu disampingnya. kemudian kita edit menjadi input dan output. Sehingga tampilanya seperti gambar dibawah ini:


Selanjutnya kita klik Static Text. kemudian klik 2x sehingga muncul akan muncul tampilan inspector. Setelah itu ganti Static Text pada string dengan variabel inputan dan outputan dalam kasus prediksi banjir . Maka tampilanya sebagai berikut:

 
Selanjutnya kita klik Edit Text. kemudian klik 2x sehingga muncul akan muncul tampilan inspector. Setelah itu hapus semua Edit Text pada string dan ganti tag dengan curah_hujan, lama_hujan, debit_sungai dan prediksi  .Maka tampilanya sebagai berikut:


Selanjutnya kita klik Push button. kemudian klik 2x sehingga muncul akan muncul tampilan inspector. Setelah itu ganti Push button pada string dan tag dengan Running dan Exit  .Maka tampilanya sebagai berikut:


Selanjutnya save dan Running. Terus masukan source code berikut:

function varargout = bisa(varargin)
% BISA M-file for bisa.fig
%      BISA, by itself, creates a new BISA or raises the existing
%      singleton*.
%
%      H = BISA returns the handle to a new BISA or the handle to
%      the existing singleton*.
%
%      BISA('CALLBACK',hObject,eventData,handles,...) calls the local
%      function named CALLBACK in BISA.M with the given input arguments.
%
%      BISA('Property','Value',...) creates a new BISA or raises the
%      existing singleton*.  Starting from the left, property value pairs are
%      applied to the GUI before bisa_OpeningFcn gets called.  An
%      unrecognized property name or invalid value makes property application
%      stop.  All inputs are passed to bisa_OpeningFcn via varargin.
%
%      *See GUI Options on GUIDE's Tools menu.  Choose "GUI allows only one
%      instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help bisa

% Last Modified by GUIDE v2.5 12-Jun-2013 09:49:20

% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @bisa_OpeningFcn, ...
                   'gui_OutputFcn',  @bisa_OutputFcn, ...
                   'gui_LayoutFcn',  [] , ...
                   'gui_Callback',   []);
if nargin && ischar(varargin{1})
    gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
    gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT


% --- Executes just before bisa is made visible.
function bisa_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
% varargin   command line arguments to bisa (see VARARGIN)

% Choose default command line output for bisa
handles.output = hObject;

% Update handles structure
guidata(hObject, handles);

% UIWAIT makes bisa wait for user response (see UIRESUME)
% uiwait(handles.figure1);


% --- Outputs from this function are returned to the command line.
function varargout = bisa_OutputFcn(hObject, eventdata, handles)
% varargout  cell array for returning output args (see VARARGOUT);
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure
varargout{1} = handles.output;



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

% Hints: get(hObject,'String') returns contents of prediksi as text
%        str2double(get(hObject,'String')) returns contents of prediksi as a double


% --- Executes during object creation, after setting all properties.
function prediksi_CreateFcn(hObject, eventdata, handles)
% hObject    handle to prediksi (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end



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

% Hints: get(hObject,'String') returns contents of curah_hujan as text
%        str2double(get(hObject,'String')) returns contents of curah_hujan as a double
curah_hujan=str2double(get(hObject,'string'));
handles.curah_hujan=curah_hujan;
guidata(hObject, handles);
% --- Executes during object creation, after setting all properties.
function curah_hujan_CreateFcn(hObject, eventdata, handles)
% hObject    handle to curah_hujan (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end



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

% Hints: get(hObject,'String') returns contents of lama_hujan as text
%        str2double(get(hObject,'String')) returns contents of lama_hujan as a double

lama_hujan=str2double(get(hObject,'string'));
handles.lama_hujan=lama_hujan;
guidata(hObject, handles);
% --- Executes during object creation, after setting all properties.
function lama_hujan_CreateFcn(hObject, eventdata, handles)
% hObject    handle to lama_hujan (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end



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

% Hints: get(hObject,'String') returns contents of debit_sungai as text
%        str2double(get(hObject,'String')) returns contents of debit_sungai as a double

debit_sungai=str2double(get(hObject,'string'));
handles.debit_sungai=debit_sungai;
guidata(hObject, handles);

% --- Executes during object creation, after setting all properties.
function debit_sungai_CreateFcn(hObject, eventdata, handles)
% hObject    handle to debit_sungai (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end


% --- Executes on button press in Running.
function Running_Callback(hObject, eventdata, handles)
% hObject    handle to Running (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
a=readfis('fuzzy_banjir')
out=evalfis([handles. curah_hujan handles. lama_hujan handles. debit_sungai], a)
set(handles. prediksi, 'string', out);


% --- Executes on button press in Exit.
function Exit_Callback(hObject, eventdata, handles)
% hObject    handle to Exit (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
close

Maka Tampilan akhirnya sebagai berikut:


Rabu, 03 Juli 2013

Targetku pada tahun 2013

Hari semakin berlalu. Pada bulan Juli ini mungkin banyak sekali masalah yang saya hadapi. terutama dalam menyusun sebuah gagasan untuk kemajuan diri sendiri. Sebelumnya apa yang saya rencanakan sudah sukses saya gapai. Sekarang, saya harus mulai meniti kembali usaha yang sudah saya buat. Saya mempunyai cita2 yang belum saya tuntaskan. Oleh karena itu, untuk mewujudkan cita-cita itu maka saya membutuhkan perencanaan yang matang. saya ingat perkataan ibu Marwah Daud. Beliau berkata Sebelum berlayar ke laut pikiran kita harus sudah sampai dilaut duluan. kata2 yang bijak yang selalu saya ingat bahwa perencanaan yang matang akan membuat keberhasilan yang sangat gemilang. 


Pada tahun 2013 ini, saya akan menggoreskan target dan pencapaiaan yang harus dipenuhi dengan kerja keras dan do'a. saya ingin membuktikan bahwa the power of planning itu benar2 bisa diwujudkan dengan kerja keras.  Targetku pada tahun 2013 ini adalah sebagai berikut:
  1. Kuliah S2
  2. Publikasi Buku
  3. Publikasi paper 10 buah
  4. Penghasilan 4 juta lebih 
  5. Mempunyai 10 ekskul Robotik 
  6. Menyimpan uang 2.5 juta untuk membeli rumah.
  7. Mebiayai adik sekolah
  8. Khitbah 
  9. Menjadi pengajar SMP, SMA dan SMK. 
9 poin yang harus saya tuntaskan. Mudah2n bisa saya selesaikan dengan mudah.Bismillah....Hamba mohon berilah kemudahan dalam mengejar cita2 hamba ya Alloh. amin ^_^

Senin, 01 Juli 2013

Membuat GUI untuk sistem persamaan Differensial menggunakan metode RK 4

Sprott mempunyai beberapa bentuk fungsi sederhana tiga dimensi sistem dinamis yang menunjukkan chaos. Beberapa persamaan  jerk ditemukan memiliki fungsi nonlinier sederhana yang harus memungkinkan implementasi elektronik. Hasil Tampilan GUI untuk sistem Jerk bisa dilihat dibawah ini:


 Persamaan jerk telah dipilih  oleh Spott sebagai berikut:

Dimana Persamaan  ini memiliki sistem non-linear  dalam bentuk modulus variable dinamik. Persamaan perilaku chaos ini (untuk a=0.6 dan b = 1) telah diverifikasi oleh Sprott dan Linz  dengan menerapkan kondisi awal 0. Solusi numerik yang diperoleh dapat berupa diagram fasa dan diagram time series. Dengan menganalisis diagram fasa dan time series dari sistem, dapat diamati lintasan dari sistem tersebut yang kemudian dapat diklasifikasikan jenis geraknya. 

Untuk membuat GUI, pada tulisan sebelumnya sudah saya jelaskan. maka disini saya hanya memberi gambaran secara garis besar saja. GUI untuk tampilan sirkuit Jerk sebagai berikut:


Pada tampilan GUI diatas, y0 adalah kondisi awal sistem, T (start)= waktu awal, T (end)= waktu akhir, a,b dan c adalah parameter sistem. displayplot untuk menampilkan diagram fase dan timeplot untuk menampilkan time series.  Setelah membuat GUI seperti diatas, maka masukan source code kedalam matlab sebagai berikut:

 function varargout = lorenzGUI(varargin)

% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @lorenzGUI_OpeningFcn, ...
                   'gui_OutputFcn',  @lorenzGUI_OutputFcn, ...
                   'gui_LayoutFcn',  [] , ...
                   'gui_Callback',   []);
if nargin & isstr(varargin{1})
    gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
    gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT


%--------------------------------------------------------------------------
function lorenzGUI_OpeningFcn(hObject, eventdata, handles, varargin)

handles.output = hObject;
movegui(hObject,'onscreen')              % To display application onscreen
movegui(hObject,'center')                % To display application in the center of screen
set(handles.gridopt,'checked','on')      % To check the grid option
set(handles.animate2d_disp2,'Value',0)
set(handles.y13dlabel,'Visible','Off')
set(handles.y23dlabel,'Visible','Off')
set(handles.y2label,'String','y2','Visible','On','Position',[0.255 0.606 0.032 0.034])
xlimits = [-25  25];
ylimits = [-30  30];
zlimits = [-1   50];
ytime_limits = [-25 25];
xtime_limits = [1 40];
set(handles.display_plot,'XLim',xlimits,'YLim',ylimits,'ZLim',zlimits);
set(handles.time_plot,'XLim',xtime_limits,'YLim',ytime_limits);
handles.line_plot = [];
handles.line_plotd = [];
handles.line_time_plot = [];
handles.line_time_plotd = [];
guidata(hObject, handles);
%--------------------------------------------------------------------------
function varargout = lorenzGUI_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;

%--------------------------------------------------------------------------
function run_wave_Callback(hObject, eventdata, handles)

t0 = str2num(get(handles.t0,'String'));       % Get start time
tfinal = str2num(get(handles.tf,'String'));   % Get end time
b = str2num(get(handles.b,'String'));         % Get value of b
r = str2num(get(handles.r,'String'));         % Get value of r
sigma = str2num(get(handles.sigma,'String')); % Get value of sigma
y0 = str2num(get(handles.y0,'String'));       % Get initial solution
dy0 = str2num(get(handles.dyo,'String'));     % Get the change in the initial solution
dy = y0 - dy0;

C = sqrt(b*(r-1)).*[1 -1];
Cp2 = r-1;
y = y0(:);
y2 = dy(:);
i = 1;
set(handles.animate2d_disp1,'Enable','Off')
set(handles.animate2d_disp2,'Enable','Off')
set(handles.animate3d_disp,'Enable','Off')
set(handles.actual_yo,'Enable','Off')
set(handles.change_dyo,'Enable','Off')

if strcmp(get(handles.run_wave,'String'),'RUN/PLOT')
    set(handles.run_wave,'String','STOP');
    cla;
    set(handles.display_plot,'HandleVisibility','On')
    set(handles.time_plot,'HandleVisibility','Off')
    cla; % clear figure
    set(gca,'UserData',1)

    pause(0.01)
    options = odeset('RelTol',1e-4,'AbsTol',[1e-4 1e-4 1e-4]);
    [t1,Y] = ode45(@lorenzequation,[t0 tfinal],y0,options,b,r,sigma);
    [t2,DY] = ode45(@lorenzequation,[t0 tfinal],dy,options,b,r,sigma);
    ball_plot = line('XData',y(1),'YData',y(2),'ZData',y(3), ...
            'Color','Blue','Marker','.','Markersize',25,'Erase','Xor');
    line_plot = line('XData',[],'YData',[],'YData',[],'Color','Blue','LineStyle','-','Erase','None');
    ball_plotd = line('XData',dy(1),'YData',dy(2),'ZData',dy(3), ...
            'Color','Red','Marker','.','Markersize',25,'Erase','Xor');
    line_plotd = line('XData',[],'YData',[],'YData',[],'Color','Red','LineStyle','-','Erase','None');
  
  
    set(handles.display_plot,'Drawmode','Fast','Visible','On','NextPlot','Add')
    set(handles.display_plot,'HandleVisibility','Off')
    set(handles.time_plot,'HandleVisibility','On')
    ball_time_plot = line('XData',t0,'YData',y(1),...
            'Color','Blue','Marker','.','MarkerSize',25,'Erase','Xor');
    line_time_plot = line('XData',[],'YData',[],'Color','Blue','LineStyle','-','Erase','None');
    ball_time_plotd = line('XData',t0,'YData',dy(1),...
            'Color','Red','Marker','.','MarkerSize',25,'Erase','Xor');
    line_time_plotd = line('XData',[],'YData',[],'Color','Red','LineStyle','-','Erase','None');
  
  
    set(handles.time_plot,'Drawmode','Fast','Visible','On','NextPlot','Add')
    xlimits = [t0 tfinal];
    ylimits = [ceil(min(min(Y(:,1)),min(DY(:,1))))-5 ceil(max(max(Y(:,1)),max(DY(:,1))))+5];
    set(handles.time_plot,'XLim',xlimits,'YLim',ylimits,'Box','ON');
    set(handles.display_plot,'HandleVisibility','On')
    set(handles.time_plot,'HandleVisibility','Off')
    if get(handles.animate2d_disp1,'Value') == 1
        Yt = [Y(:,1)];
        DYt = [DY(:,1)];
        plot_view = [0,90];
        set(handles.display_plot,'View',plot_view);
        xlimits = [ceil(min(min(Y(:,1)),min(DY(:,1))))-5 ceil(max(max(Y(:,1)),max(DY(:,1))))+5];
        ylimits = [ceil(min(min(Y(:,2)),min(DY(:,2))))-5 ceil(max(max(Y(:,2)),max(DY(:,2))))+5];
        zlimits = [ceil(min(min(Y(:,3)),min(DY(:,3))))-5 ceil(max(max(Y(:,3)),max(DY(:,3))))+5];
        set(handles.display_plot,'XLim',xlimits,'YLim',ylimits,'ZLim',zlimits,'Box','ON');
        c_mark1 = line('Xdata',[C(1)],'Ydata',[C(1)],'Marker','.','MarkerSize',25,'Color','Green');
        c_mark2 = line('Xdata',[C(2)],'Ydata',[C(2)],'Marker','.','MarkerSize',25,'Color','Green');
        c_line = line('xdata',[C(1) C(2)],'ydata',[C(1) C(2)],'LineStyle',':','Linewidth',2,'Color','Green');
    elseif get(handles.animate2d_disp2,'Value') == 1
        plot_view = [0,90];
        set(handles.display_plot,'View',plot_view);
        Y = [Y(:,1) Y(:,3) Y(:,2)];
        DY = [DY(:,1) DY(:,3) DY(:,2)];
        Yt = [Y(:,1)];
        DYt = [DY(:,1)];
        xlimits = [ceil(min(min(Y(:,1)),min(DY(:,1))))-5 ceil(max(max(Y(:,1)),max(DY(:,1))))+5];
        ylimits = [ceil(min(min(Y(:,2)),min(DY(:,2))))-5 ceil(max(max(Y(:,2)),max(DY(:,2))))+5];
        zlimits = [ceil(min(min(Y(:,3)),min(DY(:,3))))-5 ceil(max(max(Y(:,3)),max(DY(:,3))))+5];
        set(handles.display_plot,'XLim',xlimits,'YLim',ylimits,'ZLim',zlimits,'Box','ON');
        c_mark1 = line('XData',[C(1)],'YData',[Cp2],'Marker','.','MarkerSize',25,'Color','Green');
        c_mark2 = line('XData',[C(2)],'YData',[Cp2],'Marker','.','MarkerSize',25,'Color','Green');
        c_line = line('XData',[C(1) C(2)],'YData',[Cp2 Cp2],'LineStyle',':','Linewidth',2,'Color','Green');
    elseif get(handles.animate3d_disp,'Value') == 1
        Yt = [Y(:,1)];
        DYt = [DY(:,1)];
        plot_view = [-37.5,30];
        set(handles.display_plot,'View',plot_view);
        xlimits = [ceil(min(min(Y(:,1)),min(DY(:,1))))-5 ceil(max(max(Y(:,1)),max(DY(:,1))))+5];
        ylimits = [ceil(min(min(Y(:,2)),min(DY(:,2))))-5 ceil(max(max(Y(:,2)),max(DY(:,2))))+5];
        zlimits = [ceil(min(min(Y(:,3)),min(DY(:,3))))-5 ceil(max(max(Y(:,3)),max(DY(:,3))))+5];
        set(handles.display_plot,'XLim',xlimits,'YLim',ylimits,'ZLim',zlimits,'Box','OFF');
    end
    set(gca,'UserData',1)
    while get(gca,'Userdata')==1
        if t1(i) >= tfinal
            set(gca,'Userdata',-1);
            set(handles.run_wave,'String','RUN/PLOT');
            break
        end
      
        if get(handles.actual_yo,'Value')==0
            set(line_plot,'Visible','Off')
            set(line_time_plot,'Visible','Off')
        elseif get(handles.actual_yo,'Value')==1
            set(line_plot,'Visible','On')
            set(line_time_plot,'Visible','On')
         end
        if get(handles.change_dyo,'Value')==0
            set(line_plotd,'Visible','Off')
            set(line_time_plotd,'Visible','Off')
        elseif get(handles.change_dyo,'Value')==1
            set(line_plotd,'Visible','On')
            set(line_time_plotd,'Visible','On')
        end
        set(ball_plot,'XData',Y(i,1),'YData',Y(i,2),'ZData',Y(i,3))
        set(ball_plotd,'XData',DY(i,1),'YData',DY(i,2),'ZData',DY(i,3))
        set(ball_time_plot,'XData',t1(i),'YData',Yt(i))
        set(ball_time_plotd,'XData',t2(i),'YData',DYt(i))
        set(line_plot,'XData',Y(1:i,1),'YData',Y(1:i,2),'ZData',Y(1:i,3))
        set(line_plotd,'XData',DY(1:i,1),'YData',DY(1:i,2),'ZData',DY(1:i,3))
        set(line_time_plot,'XData',t1(1:i),'YData',Yt(1:i))
        set(line_time_plotd,'XData',t2(1:i),'YData',DYt(1:i))
        handles.line_plot = line_plot;
        handles.line_plotd = line_plotd;
        handles.line_time_plot = line_time_plot;
        handles.line_time_plotd = line_time_plotd;
        guidata(hObject, handles);
        drawnow;
        pause(0.01)
        i = i + 1;
    end
    set(line_plot,'Erase','Background')
    set(line_plotd,'Erase','Background')
    set(line_time_plot,'Erase','Background')
    set(line_time_plotd,'Erase','Background')
   
else
    set(gca,'Userdata',-1);
    set(handles.run_wave,'String','RUN/PLOT');
end
set(handles.display_plot,'HandleVisibility','Off')
set(handles.time_plot,'HandleVisibility','On')
set(handles.animate2d_disp1,'Enable','On')
set(handles.animate2d_disp2,'Enable','On')
set(handles.animate3d_disp,'Enable','On')
set(handles.actual_yo,'Enable','On')
set(handles.change_dyo,'Enable','On')

%--------------------------------------------------------------------------
function animate2d_disp1_Callback(hObject, eventdata, handles)
cla;
set(handles.time_plot,'HandleVisibility','Off')
set(handles.display_plot,'HandleVisibility','On')
cla;
plot_view = [0,90];
set(handles.display_plot,'View',plot_view,'Box','On');
set(handles.y1label,'Visible','On')
set(handles.y2label,'String','y2','Visible','On','Position',[0.255 0.606 0.032 0.034])
set(handles.y13dlabel,'Visible','Off')
set(handles.y23dlabel,'Visible','Off')
set(handles.animate3d_disp,'Value',0)
set(handles.animate2d_disp2,'Value',0)

%--------------------------------------------------------------------------
function animate2d_disp2_Callback(hObject, eventdata, handles)
cla;
set(handles.time_plot,'HandleVisibility','Off')
set(handles.display_plot,'HandleVisibility','On')
cla;
plot_view = [0,90];
set(handles.display_plot,'View',plot_view,'Box','On');
set(handles.y1label,'Visible','On')
set(handles.y2label,'String','y3','Visible','On','Position',[0.255 0.606 0.032 0.034])
set(handles.y13dlabel,'Visible','Off')
set(handles.y23dlabel,'Visible','Off')
set(handles.animate3d_disp,'Value',0)
set(handles.animate2d_disp1,'Value',0)

%--------------------------------------------------------------------------
function animate3d_disp_Callback(hObject, eventdata, handles)
cla;
set(handles.time_plot,'HandleVisibility','Off')
set(handles.display_plot,'HandleVisibility','On')
cla;
plot_view = [-37.5,30];
set(handles.display_plot,'View',plot_view,'Box','OFF');
set(handles.y1label,'Visible','Off')
set(handles.y2label,'String','y3','Position',[0.245 0.6 0.032 0.034])
set(handles.y13dlabel,'Visible','On')
set(handles.y23dlabel,'Visible','On')
set(handles.animate2d_disp1,'Value',0)
set(handles.animate2d_disp2,'Value',0)

%--------------------------------------------------------------------------
function info_Callback(hObject, eventdata, handles)
helpwin('lorenzGUI.m')

%--------------------------------------------------------------------------
function close_button_Callback(hObject, eventdata, handles)
close(gcbf) % to close GUI

%--------------------------------------------------------------------------
function b_CreateFcn(hObject, eventdata, handles)

%--------------------------------------------------------------------------
function b_Callback(hObject, eventdata, handles)

%--------------------------------------------------------------------------
function sigma_CreateFcn(hObject, eventdata, handles)

%--------------------------------------------------------------------------
function sigma_Callback(hObject, eventdata, handles)

%--------------------------------------------------------------------------
function r_CreateFcn(hObject, eventdata, handles)

%--------------------------------------------------------------------------
function r_Callback(hObject, eventdata, handles)

%--------------------------------------------------------------------------
function t0_CreateFcn(hObject, eventdata, handles)

%--------------------------------------------------------------------------
function t0_Callback(hObject, eventdata, handles)

%--------------------------------------------------------------------------
function tf_CreateFcn(hObject, eventdata, handles)

%--------------------------------------------------------------------------
function tf_Callback(hObject, eventdata, handles)

%--------------------------------------------------------------------------
function y0_CreateFcn(hObject, eventdata, handles)

%--------------------------------------------------------------------------
function y0_Callback(hObject, eventdata, handles)

% --------------------------------------------------------------------
function Gridmenu_Callback(hObject, eventdata, handles)

% --------------------------------------------------------------------
function grid_onoff_Callback(hObject, eventdata, handles)
if strcmp(get(handles.gridopt,'checked'),'on')
    set(handles.gridopt,'checked','off')           % To uncheck the grid option
    set(handles.display_plot,'XGrid','Off','YGrid','Off','ZGrid','Off') % Make the grid invisible
    set(handles.time_plot,'XGrid','Off','YGrid','Off') % Make the grid invisible
else
    set(handles.gridopt,'checked','on')            % To check the grid option
    set(handles.display_plot,'XGrid','On','YGrid','On','ZGrid','On')   % Make the grid visible
    set(handles.time_plot,'XGrid','On','YGrid','On') % Make the grid invisible
end

% --------------------------------------------------------------------
% Funtion to solve the equations
function dy = lorenzequation(t,y,b,r,s)
dy = zeros(3,1);
dy(1) =y(2);
dy(2) =r*y(3);
dy(3) = abs(y(1))-1-b*y(2)-s*y(3);

% --- Executes during object creation, after setting all properties.
function dyo_CreateFcn(hObject, eventdata, handles)

function dyo_Callback(hObject, eventdata, handles)

% --- Executes on button press in actual_yo.
function actual_yo_Callback(hObject, eventdata, handles)
if get(handles.actual_yo,'Value')==0
    set(handles.line_plot,'Visible','Off')
    set(handles.line_time_plot,'Visible','Off')
elseif get(handles.actual_yo,'Value')==1
    set(handles.line_plot,'Visible','On')
    set(handles.line_time_plot,'Visible','On')
end

% --- Executes on button press in change_dyo.
function change_dyo_Callback(hObject, eventdata, handles)
if get(handles.change_dyo,'Value')==0
    set(handles.line_plotd,'Visible','Off')
    set(handles.line_time_plotd,'Visible','Off')
  
elseif get(handles.change_dyo,'Value')==1
    set(handles.line_plotd,'Visible','On')
    set(handles.line_time_plotd,'Visible','On')
end


Jumat, 28 Juni 2013

Akhirnya Jadi Sarjana Fisika Sains UIN Sunan Gunung Djati Bandung

Detik- detik sidang munaqosah yang sangat begitu alot akhirnya bisa dilalui juga dengan susah payah. Pada tanggal 22 Februari 2013, saya dinyatakan lulus sebagai sarjana fisika sains uin bandung dengan jangka waktu 3,5 tahun. Menjadi sebuah kebanggan menjadi orang yang pertama lulus dari teman angkatan fisika 2009. Tetapi itu semua masih belum berakhir masih banyak cita-cita yang mesti saya kejar dan saya raih. Selama menjadi mahasiswa banyak sekali kenangan yang indah dan lucu. 

 Pertama datang ke UIN Bdg dengan wajah yang polos saya mendaftar. Akhirnya setelah satu bulan menunggu tes, saya lulus pilihan 2  yaitu fisika sains. Pas masuk mungkin saya orang paling deso. tetapi kalo dari segi belajar saya masih bersaing. hahahha ^_^. Ketika saya keterima di UIN BDG saya mulai bekerja di paman sebagai pedagang pisang. lumayan buat jajan :). senang dan sedih menjadi pedagang saya rasakan selama 2 tahun. bekerjanya mulai dari jam 2 malam sampai jam 5 sore. kecuali lagi ada jadwal kuliah. setelah beres dagang saya beres2 rumah paman mulai dari bersihin lantai, cuci piring dan jagain toko. Jika waktu sudah magrib, saya mulai ngajar mengaji anak2 di mesjid. Huh.....h. Rutinitas seperti itu saya lakukan selama 2 tahun.

Semester 5 saya mulai ngontrak di aljawami, karena pada waktu itu kampus sedang direnovasi. Ketika ngontrak, kemudian saya membuka target hidup saya dalam kertas yang saya tulis ketika waktu OPAK di kampus. Isi kertas tersebut adalah
Saya harus

1. Membeli HP
2. Membeli Laptop 
3. Membeli modem

Luar biasa sekali tidak terasa target tersebut saya capai dengan tidak sadar. saking semangatnya kemudian saya membuat target lagi yang isinya:

1. Lulus 3,5 tahun
2. Membuat paper Nasional dan Internasional
3. Membeli motor
4. Melanjutkan S2
5. Tunangan kalo sudah siap
6. Bekerja apapun
7. Menulis buku

Setelah saya lulus, ternyata target itu mulai tercapai juga tanpa saya pikirkan. saya lulus 3,5 tahun, terus menerbitkan 13 paper nasional dan internasional yang terindexs Scopus, uang buat beli motor sudah ada di tangan meskipun motor yang jadul . wkwkwkwk. Tawaran S2 untuk melanjutkan studi di Malaysia sudah ada. meskipun ketika saya menulis pada blog ini belum ada pengumuman. setidaknya sudah ada harapan. hahah yang paling lucu tunangan, karena saya tidak punya uang banyak untuk melakukan itu. tetapi sudah dapet restu dari mertua. saya menjadi semngt bisa di terima oleh keluarganya. ^_^. hahah cerita yang satu ini membuat saya senang sekali. tetapi saya tidak akan menceritakanya. hehehe. Sebelum lulus sudah bekerja di perusahaan dosen yang dirintis yaitu bolabot (CV Sanjaya star Group) yang bergelut di dunia robot dan bimbel.  Alhamdulillah semua yang say tulis 90 % tercapai kecuali menulis buku. ya mudah2n tahun ini bisa mulai menulis buku.

Pengalaman akademik selama kuliah diantaranya:

1. Asisten Fisika dasar I (semester 3)
2. Asisten Fisika dasar II (semester 4)
3. Koordinator Asisten  Fisika dasar I (semester 5)
4. Koordinator Asisten  Fisika dasar II (semester 6)
5. Koordinator Asisten Komputasi  Robotik (semester 6)
6. 4 paper internasional, 3 diantaranya indexs Scopus.
7. Dapet 3x beasiswa

Akhirnya pada bulan maret 2013 saya melakukan wisuda. luar biasa perjuangan selama 3,5 tahun ini memberikan pengalaman yang sangat bersejarah dalam hidup ku. Sekarang saatnya saya bekerja keras supaya cepat sukses. Semangatz ^_^    






Kamis, 20 Juni 2013

Prinsip Kerja Motor DC

Motor Dc adalah alat yang mengubah energi listrik menjadi energi gerak. Motor Dc terbagi menjadi dua jenis, yaitu: motor DC yang bersifat mekanis dimana motor yang memiliki sifat karbon berfungsi sebagai pengubah arus pada kumparan sehingga arah tenaga putaran motor akan selalu sama. Motor DC tanpa sikat, menggunakan semikonduktor utuk merubah maupun membalik arus sehingga layaknya pulsa yang menggerakan motor tersebut. Biasa digunakan dalam sistem servo, karena mempunyai efesiensi tinggi dan tingkat kebisingan suara listrik rendah dan tingkat kebisingan suara listrik rendah.

Motor DC memerlukan suplai tegangan yang searah pada kumparan medan untuk diubah menjadi energi mekanik. Bagian utama motor DC adalah stator dan rotor dimana kumparan medan pada motor DC disebut stator (bagian yang tidak berputar) dan kumparan jangkar disebut rotor (bagian yang berputar). Bentuk motor paling sederhana memiliki kumparan satu lilitan yang bisa berputar bebas di antara kutub-kutub magnet permanen. Mekanika motor Dc dideskripsikan oleh Gambar  dibawah ini:

Catu tegangan Dc dari baterai menuju ke lilitan melalui sikat yang menyentuh komutator, dua segmen yang terhubung dengan dua ujung lilitan. Kumparan satu lilitan pada gambar di atas disebut angker dinamo. Angker dinamo adalah sebutan untuk komponen yang berputar di antara medan magnet.

Jika arus lewat pada suatu konduktor, timbul medan magnet di sekitar konduktor. Arah medan magnet ditentukan oleh arah aliran arus pada konduktor. Medan magnet yang membawa arus mengelilingi konduktor dapat dilihat pada Gambar di bawah ini:

Aturan genggaman tangan kanan bisa dipakai untuk menentukan arah garis fluks di sekitar konduktor. Genggam konduktor dengan tangan kanan dengan jempol mengarah pada arah ali-ran arus, maka jari-jari anda akan menunjukkan arah garis fluks. Gambar diatas menunjukkan medan magnet yang terbentuk di sekitar konduktor berubah arah karena bentuk U. Medan mag-net hanya terjadi di sekitar sebuah konduktor jika ada arus mengalir pada konduktor tersebut.

Jika konduktor berbentuk U (angker dinamo) diletakkan di antara kutub utara dan selatan yang kuat medan magnet konduktor akan berinteraksi dengan medan magnet kutub. Reaksi fluks dijelaskan pada Gambar  di bawah ini:

Lingkaran bertanda A dan B merupakan ujung konduktor yang dilengkungkan (looped con-ductor ). Arus mengalir masuk melalui ujung A dan keluar melalui ujung B. Medan konduktor A yang searah jarum jam akan menambah medan pada kutub dan menimbulkan medan yang kuat di bawah konduktor. Konduktor akan berusaha bergerak ke atas untuk keluar dari medan kuat ini. Medan konduktor B yang berlawanan arah jarum jam akan menambah medan pada kutub dan menimbulkan medan yang kuat di atas konduktor. Konduktor akan berusaha untuk bergerak turun agar keluar dari medan yang kuat tersebut. Gaya-gaya tersebut akan membuat angker dinamo berputar searah jarum jam.

Pada motor DC, daerah kumparan medan yang dialiri arus listrik akan menghasilkan medan magnet yang melingkupi kumparan jangkar dengan arah tertentu. Konversi dari energi listrik menjadi energi mekanik (motor) maupun sebaliknya berlangsung melalui medan magnet, den-gan demikian medan magnet disini selain berfungsi sebagai tempat untuk menyimpan energi, sekaligus sebagai tempat berlangsungnya proses perubahan energi, daerah tersebut dapat dilihat pada Gambar dibawah ini:




Agar proses perubahan energi mekanik dapat berlangsung secara sempurna, maka tegangan sumber harus lebih besar daripada tegangan gerak yang disebabkan reaksi lawan. Dengan mem-beri arus pada kumparan jangkar yang dilindungi oleh medan maka menimbulkan perputaran pada motor.

Untuk menentukan arah putaran motor digunakan kaedah Flamming tangan kiri. Kutub-kutub magnet akan menghasilkan medan magnet dengan arah dari kutub utara ke kutub selatan. Jika medan magnet memotong sebuah kawat penghantar yang dialiri arus searah dengan empat jari, maka akan timbul gerak searah ibu jari. Gaya ini disebut gaya Lorentz, yang besarnya sama dengan F.

Prinsip motor adalah aliran arus di dalam penghantar yang berada di dalam pengaruh medan magnet akan menghasilkan gerakan. Besarnya gaya pada penghantar akan bertambah besar jika arus yang melalui penghantar bertambah besar.

Menyelesaikan Solusi dari Superposisi gelombang menggunakan MATLAB

Superposisi gelombang terjadi apabila dua gelombang atau lebih merambat pada medium yang sama. Maka, gelombang-gelombang tersebut akan datang di suatu titik pada saat yang sama sehingga terjadilah superposisi gelombang. Artinya, simpangan gelombang-gelombang tersebut di tiap titik dapat dijumlahkan sehingga akan menghasilkan sebuah gelombang baru.

Jika diketahui:
y1=10*sin(2*pi*15+5)
y1=20*sin(2*pi*10+10)
y3=y1+y2 

Maka Source code untuk superposisi gelombang tersebut adalah sebagai berikut:

clc
clear
close

t=0:0.001:1;
disp (' ')
a1=input('masukan besar Amplitudo gelombang pertama=');
f1=input('masukan besar frekuensi gelombang pertama=');
theta1=input('masukan besar sudut gelombang pertama=');

disp (' ')
a2=input('masukan besar Amplitudo gelombang kedua=');
f2=input('masukan besar frekuensi gelombang kedua=');
theta2=input('masukan besar sudut gelombang kedua=');

disp(' ')
disp('==================================')
disp('==TEKAN ENTER UNTUK MEMPEROLEH SOLUSI==')
disp('==================================')
disp (' ')
pause
y1=a1*sin(2*pi*f1*t+theta1)
y2=a2*sin(2*pi*f2*t+theta2)

y3=y1+y2

figure
subplot(3,1,1)
plot(t,y1,'g:')
xlabel ('Waktu(s)');
ylabel('Amplitudo');
title('Gelombang pertama')

subplot(3,1,2)
plot(t,y2,'g:')
xlabel ('Waktu(s)');
ylabel('Amplitudo)');
title('Gelombang kedua')

subplot(3,1,3)
plot(t,y3,'g:')
xlabel ('Waktu(s)');
ylabel('Amplitudo)');
title('Gelombang superposisi')
 

Membuat GUI untuk Gerak Parabola menggunakan MATLAB

Gerak parabola merupakan gerak benda dengan lintasan berbentuk parabola (setengah lingkaran). Gerak parabola adalah gabungan dari 2 buah jenis gerakan yaitu Gerak Lurus Beraturan (GLB) yang arahnya mendatar dan Gerak Lurus Berubah Beraturan (GLBB) yang arahnya vertikal. Gerak vertikal dipengaruhi oleh percepatan gravitasi sehingga kecepatannya akan selalu berubah .Untuk membuat GUI gerak parabola. Maka pertama kita mengetikan "guide" di commond windows. sehingga muncul tampilan seperti dibawah ini:


Selanjutnya Klik ok. Kemudian pilih button group untuk membuat tampilan input dan output. Sehingga tampilanya seperti berikut:
Selanjutnya klik ststistic Text dan rubah inputan dan output di variable string. maka tampilanya seperti dibawah ini:

Selanjutnya klik edit text. Kemudian untuk kolom string kita kosongkan semuanya. Nah disini kita akan membuat callback program. untuk kec_awal pada kolom Tag kita isi dg v0, untuk sudut pada kolom Tag kita isi dg sudut, untuk waktu pada kolom Tag kita isi dg waktu, untuk gravitasi pada kolom Tag kita isi dg gravitasi, untuk kec_akhir pada kolom Tag kita isi dg velocity, untuk x pada kolom Tag kita isi dg px, untuk y pada kolom Tag kita isi dg py, untuk xmax pada kolom Tag kita isi dg xmax dan  untuk ymax pada kolom Tag kita isi dg ymax. maka tampilanya seperti berikut:


Kemudian selanjutnya klik axes. kemudian ganti axes1 menjadi grafik pada kolom Tag. Seperti tampilan dibawah ini:

Kemudian selanjutnya klik pushbutton. buat dua pushbutton. satu untuk hitung satu lagi untuk exit. Untuk pushbutton pertama kita ubah string sama tag dengan kata hitung. begitu juga exit: Untuk Tampilan bisa dilihat seperti dibawah ini:


Setelah beres. Kemudian klik Run untuk mejalankan sistem. Kemudian save. setelah itu hasil GUI anda close. kemudian anda masukan source code pada function Hitung_Callback(hObject, eventdata, handles) sebagai berikut:

proyek=guidata(gcbo);

v0=str2double(get(proyek.v0,'String'));

sudut=str2double(get(proyek.sudut,'String'));

waktu=str2double(get(proyek.waktu,'String'));

gravitasi=str2double(get(proyek.gravitasi,'String'));

v0x=v0*cos(sudut*pi/180);

v0y=v0*sin(sudut*pi/180);

vy=v0y-gravitasi*waktu;

tx=2*v0*sin(sudut*pi/180)/gravitasi;

if (waktu>tx)

msgbox('waktu melebihi maksimal,inputkan nilai waktu yang lain');

else

v=sqrt(v0x^2+vy^2);

set(proyek.velocity,'String',num2str(v));

x=v0x*waktu;

y=v0y*waktu-0.5*gravitasi*(waktu^2);

tinggi=v0^2*((sin(sudut*pi/180))^2)/(2*gravitasi);

jauh=v0^2*sin(2*sudut*pi/180)/gravitasi;

set (proyek.py,'String',num2str(y));

set (proyek.px,'String',num2str(x));

set(proyek.ymax,'String',num2str(tinggi));

set(proyek.xmax,'String',num2str(jauh));

xx=0:x;

yy=xx*(tan(sudut*pi/180))-0.5*gravitasi*(xx.^2)/(v0*cos(sudut*pi/180))^2;

for i=1:x

axes(handles.grafik);

plot(xx(i),yy(i),'*','linewidth',2);

axis([0 (jauh+5) 0 (tinggi+5)]);

grid on

pause(0.01);

end

axes(handles.grafik);

plot(xx,yy,'*','linewidth',2);

axis([0 (jauh+5) 0 (tinggi+5)]);

grid on

end

Setelah memasukan source code tersebut. kemudian anda Run source code tersebut pada file editor. Sehingga muncul tampilan



Selanjutnya kita isi input sesuai yang kita inginkan. Kemudian kita klik Hitung maka akan muncul tampilan seperti ini:

Menyelesaikan sistem persamaan differensial dengan metode RK 4 Menggunakan MATLAB

Sprott mempunyai beberapa bentuk fungsi sederhana tiga dimensi sistem dinamis yang menunjukkan chaos. Beberapa persamaan  jerk ditemukan memiliki fungsi nonlinier sederhana yang harus memungkinkan implementasi elektronik.Persamaan jerk telah dipilih  oleh Spott sebagai berikut:


Dimana Persamaan  ini memiliki sistem non-linear  dalam bentuk modulus variable dinamik. Persamaan perilaku chaos ini (untuk a=0.6 dan b = 1) telah diverifikasi oleh Sprott dan Linz  dengan menerapkan kondisi awal 0. Solusi numerik yang diperoleh dapat berupa diagram fasa dan diagram time series. Dengan menganalisis diagram fasa dan time series dari sistem, dapat diamati lintasan dari sistem tersebut yang kemudian dapat diklasifikasikan jenis geraknya.Source code untuk memecahkan sistem persamaan diferensial diatas adalah menggunakan RK4 sebagai berikut:

Fungsi M-File Jerk Sirkut
function dx=jerkcircuit(t,x)
a=0.6;
b=1;
dx=zeros(3,1);
dx(1)=x(2);
dx(2)=x(3);
dx(3)=-a*x(3)-b*x(2)+abs(x(1))-1;

return

Script Eksekusi Program M-File Jerk Sirkuit

tspan=[0 300];
y0=[0 0 0];
[t,y]=ode45('jerkcircuit',tspan,y0);
figure(1)
plot(t,y(:,2))
figure(6)
plot(t,y(:,3))
figure(2)
plot(y(:,1),y(:,2))
figure(3)
plot(y(:,1),y(:,3))




 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | Lady Gaga, Salman Khan