MATLAB
Matlab adalah singkatan dari Matrix Laboratory, software yang dibuat dengan menggunakan bahasa ini dibuat oleh The Mathworks.inc dan telah memasuki versi 6.5 Rilis 13. kekuatan matlab terletak pada :
1. Kemudahan manipulasi struktur matriks.
2. Jumlah routine-routine powerful yang berlimpah yang terus berkembang.
3. Kekuatan fasilitas grafik tiga dimensi yang sangat memadai.
4. Sistem scripting yang memberikan keleluasaan bagi pengguna untuk mengembangkan dan memodifikasi software untuk kebutuhan sendiri.
5. Kemampuan interface( misal dengan bahasa C, word dan mathematica).
6. Dilengkapi dengan toolbox, simulink, stateflow dan sebagainya, serta mulai melimpahnya source code di
1. Kemudahan manipulasi struktur matriks.
2. Jumlah routine-routine powerful yang berlimpah yang terus berkembang.
3. Kekuatan fasilitas grafik tiga dimensi yang sangat memadai.
4. Sistem scripting yang memberikan keleluasaan bagi pengguna untuk mengembangkan dan memodifikasi software untuk kebutuhan sendiri.
5. Kemampuan interface( misal dengan bahasa C, word dan mathematica).
6. Dilengkapi dengan toolbox, simulink, stateflow dan sebagainya, serta mulai melimpahnya source code di
internet yang dibuat dalam matlab( contoh toolbox misalnya : signal processing, control system, neural
networks dan sebagainya).
Semua itu merupakan perangkat yang powerful untuk menyelesaikan permasalahan sains dan teknik terutama untuk wilayah dimana komputasi numerik harus dibuat.
GUI di Matlab
Ketika kita membuka GUI Matlab kita bisa melihat lihat dan mencoba coba perintah pada GUI tersebut dan untuk lebih jelasnya bisa dilihat dalam demo tersebut. Kita bisa melihat contoh contoh program dan bisa disave dengan ektension .m(yang merupakan ektensi dari file matlab),Salah satu yang cukup menarik dari matlab ini adalah kemudahan dan kejelasannya dalam memahami contoh dan demo serta help yang ada pada matlab. Kita akan berkenalan lebih dekat dengan yang satu ini.Kita bisa lihat dari demo ini ternyata begitu banyak persoalan yang dapat dibangun dengan matlab dengan cara lebih mudah dan lebih singkat, tanpa mengurangi kepahaman kita pada suatu persoalan(bisa dibandingkan dengan bahasa C, pascal, delphi atau visual lainnya).Dengan dilengkapinya matlab dengan toolbox, simulink dan sebagainya maka semakin menambah kekuatan matlab untuk menyelesaikan permasalahan yang rumit menjadi lebih mudah.
Kontrol Program
Matlab bisa berlaku seperti bahasa pemrograman C ataupun pascal yang mempunyai struktur kontrol program, biasanya pemrograman dengan matlab memerlukan lebih dari satu baris dan memungkinkan untuk didokumentasikan dalam m-file, kontrol program ini digunakan untuk memperbaiki tampilan atau membuat tampilan sesuai yang kita inginkan. Dalam bagian dibahas sebagian kontrol program yang diperlukan dalam pemrograman menggunakan matlab :
1. loop for
Loop for meungkinkan sekelompok perintah diulang sebanyak suatu jumlah yang tetap. Bentuk umum dari loop for adalah :
. for x= array
1. loop for
Loop for meungkinkan sekelompok perintah diulang sebanyak suatu jumlah yang tetap. Bentuk umum dari loop for adalah :
. for x= array
statement
end
untuk tiap iterasi, x diisi dengan kolom array berikutnya, yaitu dalam iterasi ke-n dalam loop, x = array(:,n).
contoh 1 :
>>for n = 1 : 10
x(n)=sin(n*pi/10);
end
>> x
x =
Columns 1 through 8
0.3090 0.5878 0.8090 0.9511 1.0000 0.9511 0.8090 0.5878
Columns 9 through 10
0.3090 0.0000
end
untuk tiap iterasi, x diisi dengan kolom array berikutnya, yaitu dalam iterasi ke-n dalam loop, x = array(:,n).
contoh 1 :
>>for n = 1 : 10
x(n)=sin(n*pi/10);
end
>> x
x =
Columns 1 through 8
0.3090 0.5878 0.8090 0.9511 1.0000 0.9511 0.8090 0.5878
Columns 9 through 10
0.3090 0.0000
contoh 2 :
> for i=1:5
disp('Ini hasil looping 5 kali');
end
Ini hasil looping 5 kali
Ini hasil looping 5 kali
Ini hasil looping 5 kali
Ini hasil looping 5 kali
Ini hasil looping 5 kali
> for i=1:5
disp('Ini hasil looping 5 kali');
end
Ini hasil looping 5 kali
Ini hasil looping 5 kali
Ini hasil looping 5 kali
Ini hasil looping 5 kali
Ini hasil looping 5 kali
2. loop while
loop for mengerjakan sekelompok perintah yang diulang sebanyak suatu sejumlah, tetapi loop while
loop for mengerjakan sekelompok perintah yang diulang sebanyak suatu sejumlah, tetapi loop while
mengerjakan sekelompok perintah yang diulang secara tidak terbatas.Bentuk umum loop while adalah
while ekpresi
while ekpresi
statement
end
semua elemen yang dieksekusi diantara while dan end dan harus bernilai benar
contoh :
>> x=0;
>> while x<5
disp('Diulang 5 kali');
end
semua elemen yang dieksekusi diantara while dan end dan harus bernilai benar
contoh :
>> x=0;
>> while x<5
disp('Diulang 5 kali');
x=x+1;
end
Diulang 5 kali
Diulang 5 kali
Diulang 5 kali
Diulang 5 kali
Diulang 5 kali
end
Diulang 5 kali
Diulang 5 kali
Diulang 5 kali
Diulang 5 kali
Diulang 5 kali
3. Kontruksi if-else-end
Seringkali sederetan perintah harus dikerjakan dengan didasarkan pada hasil tes rasional. Dalam bahasa pemrograman, logika ini dikerjakan dengan variasi kontruksi if-else-end. Bentuk paling sederhana kontruksi if-else-end adalah :
If ekpresi
Pertintah
End
Contoh
>> angka=-4;
>> if angka > 0
disp('nilai nya adalah positif');
else
disp('nilainya adalah negatif');
end
nilainya adalah negatif
FUNGSI M-File
M-file selain dipakai sebagai penamaan file juga bisa dipakai untuk menamakan fungsi, sehingga fungsi fungsi yang kita buat di jendela editor bisa di simpan dengan ektensi .m sama dengan file yang kita panggi dijendela editor. Saat kita menggunakan fungsi Matlab seperti inv, abs, cos, sin dan sqrt, matlab menerima variabel berdasarkan variabel yang kita berikan.Fungsi M-file mirip dengan script file dimana keduanya merupakan file teks dengan ektensi .m . sebagaimana script M-file, fungsi m-file tidak dimasukkan dalam jendela command window tetapi file tersendiri yang dibuat dengan editor teks.Aturan dan sifat sifat Suatu fungsi M-file harus mengikuti beberapa aturan. Fungsi M-file juga mempunyai sejumlah penting. Aturan aturan tersebut meliputi ;
• Nama fungsi dan nama file harus identik. Contoh : fungsi flipud disimpan dalam file yang bernama flipud.m
• Pertama kali matlab mengeksekusi suatu fungsi M file matlab membuka file fungsi tersebut dan
mengkompilasi perintah perintah didalamnya menjadi suatu representasi internal dalam memori yang
mempercepat eksekusi untuk semua pemanggilan berikutnya.
• Setiap fungsi mempunyai ruang kerjanya sendiri yang berbeda dengan ruang kerja matlab. Satu satunya
hubungan antara ruang kerja matlab dengan variabel variabel dalam fungsi adalah variabel variabel input
dan output fungsi.
Contoh fungsi: Listing program animasi spiner.m
function spinner(action);
%SPINNER Colorful lines spinning through space.
% demonstrates some MATLAB animation capabilities.
% Ned Gulley, 6-21-93
% Copyright 1984-2002 The MathWorks, Inc.
% $Revision: 5.9 $ $Date: 2002/04/08 20:04:53 $
% Possible actions:
% initialize
% start
% Information regarding the play status will be held in
% the axis user data according to the following table:
play= 1;
stop=-1;
if nargin<1,
action='initialize';
end;
if strcmp(action,'initialize'),
oldFigNumber=watchon;
figNumber=figure( ...
'Name','Color Spinner', ...
'NumberTitle','off', ...
'Visible','off');
axes( ...
'Units','normalized', ...
'Position',[0.05 0.05 0.75 0.90], ...
'Visible','off');
text(0,0,'Press the "Start" button to see the Spinner demo', ...
'HorizontalAlignment','center');
axis([-1 1 -1 1]);
%===================================
% Information for all buttons
labelColor=[0.8 0.8 0.8];
yInitPos=0.90;
xPos=0.85;
btnLen=0.10;
btnWid=0.10;
% Spacing between the button and the next command's label
spacing=0.05;
%====================================
% The CONSOLE frame
frmBorder=0.02;
yPos=0.05-frmBorder;
frmPos=[xPos-frmBorder yPos btnLen+2*frmBorder 0.9+2*frmBorder];
h=uicontrol( ...
'Style','frame', ...
'Units','normalized', ...
'Position',frmPos, ...
'BackgroundColor',[0.50 0.50 0.50]);
%====================================
% The START button
btnNumber=1;
yPos=0.90-(btnNumber-1)*(btnWid+spacing);
labelStr='Start';
cmdStr='start';
callbackStr='spinner(''start'');';
% Generic popup button information
btnPos=[xPos yPos-spacing btnLen btnWid];
startHndl=uicontrol( ...
'Style','pushbutton', ...
'Units','normalized', ...
'Position',btnPos, ...
'String',labelStr, ...
'Interruptible','on', ...
'Callback',callbackStr);
%====================================
% The STOP button
btnNumber=2;
yPos=0.90-(btnNumber-1)*(btnWid+spacing);
labelStr='Stop';
% Setting userdata to -1 (=stop) will stop the demo.
callbackStr='set(gca,''Userdata'',-1)';
% Generic popup button information
btnPos=[xPos yPos-spacing btnLen btnWid];
stopHndl=uicontrol( ...
'Style','pushbutton', ...
'Units','normalized', ...
'Position',btnPos, ...
'Enable','off', ...
'String',labelStr, ...
'Callback',callbackStr);
%====================================
% The INFO button
labelStr='Info';
callbackStr='spinner(''info'')';
infoHndl=uicontrol( ...
'Style','push', ...
'Units','normalized', ...
'Position',[xPos 0.20 btnLen 0.10], ...
'String',labelStr, ...
'Callback',callbackStr);
%====================================
% The CLOSE button
labelStr='Close';
callbackStr='close(gcf)';
closeHndl=uicontrol( ...
'Style','push', ...
'Units','normalized', ...
'Position',[xPos 0.05 btnLen 0.10], ...
'String',labelStr, ...
'Callback',callbackStr);
% Uncover the figure
hndlList=[startHndl stopHndl infoHndl closeHndl];
set(figNumber, ...
'Visible','on', ...
'UserData',hndlList);
watchoff(oldFigNumber);
figure(figNumber);
elseif strcmp(action,'start'),
axHndl=gca;
figNumber=gcf;
hndlList=get(figNumber,'Userdata');
startHndl=hndlList(1);
stopHndl=hndlList(2);
infoHndl=hndlList(3);
closeHndl=hndlList(4);
set([startHndl infoHndl closeHndl],'Enable','off');
set(stopHndl,'Enable','on');
% ====== Start of Demo
cla
colormap([])
N=50; % number of lines
M=50; % number of colors
map=hsv(M);
set(figNumber,'BackingStore','off');
set(axHndl, ...
'XLim',[-0.01 1.01],'YLim',[-0.01 1.01], ...
'XTick',[],'YTick',[], ...
'Box','on', ...
'Drawmode','fast', ...
'ColorOrder',map, ...
'Visible','on', ...
'NextPlot','add', ...
'UserData',play);
h=plot([0 0],zeros(2,N),'EraseMode','background');
x=rand;
y=rand;
x1=rand;
y1=rand;
dx=.01;
dy=.01;
dx1=.01;
dy1=.01;
mind=.001;
maxd=.05;
i=0;
while get(axHndl,'Userdata')==play,
i=i+1;
x=x+dx;
y=y+dy;
x1=x1+dx1;
y1=y1+dy1;
if (x>1),
x=1;
dx=-(rand*(maxd-mind)+mind);
end
if (x<0),
x=0;
dx=(rand*(maxd-mind)+mind);
end
if (y>1),
y=1;
dy=-(rand*(maxd-mind)+mind);
end
if (y<0),
y=0;
dy=(rand*(maxd-mind)+mind);
end
if (x1>1),
x1=1;
dx1=-(rand*(maxd-mind)+mind);
end
if (x1<0),
x1=0;
dx1=(rand*(maxd-mind)+mind);
end
if (y1>1),
y1=1;
dy1=-(rand*(maxd-mind)+mind);
end
if (y1<0),
y1=0;
dy1=(rand*(maxd-mind)+mind);
end
set(h(rem(i,N)+1), ...
'Xdata',[x x1], ...
'Ydata',[y y1]);
%'Color',map(rem(i,M)+1,:));
drawnow;
end
% ====== End of Demo
set([startHndl infoHndl closeHndl],'Enable','on');
set(stopHndl,'Enable','off');
elseif strcmp(action,'info');
helpwin(mfilename);
end; % if strcmp(action, ...
%BAGAIMANA HASILNYA?????
% demonstrates some MATLAB animation capabilities.
% Ned Gulley, 6-21-93
% Copyright 1984-2002 The MathWorks, Inc.
% $Revision: 5.9 $ $Date: 2002/04/08 20:04:53 $
% Possible actions:
% initialize
% start
% Information regarding the play status will be held in
% the axis user data according to the following table:
play= 1;
stop=-1;
if nargin<1,
action='initialize';
end;
if strcmp(action,'initialize'),
oldFigNumber=watchon;
figNumber=figure( ...
'Name','Color Spinner', ...
'NumberTitle','off', ...
'Visible','off');
axes( ...
'Units','normalized', ...
'Position',[0.05 0.05 0.75 0.90], ...
'Visible','off');
text(0,0,'Press the "Start" button to see the Spinner demo', ...
'HorizontalAlignment','center');
axis([-1 1 -1 1]);
%===================================
% Information for all buttons
labelColor=[0.8 0.8 0.8];
yInitPos=0.90;
xPos=0.85;
btnLen=0.10;
btnWid=0.10;
% Spacing between the button and the next command's label
spacing=0.05;
%====================================
% The CONSOLE frame
frmBorder=0.02;
yPos=0.05-frmBorder;
frmPos=[xPos-frmBorder yPos btnLen+2*frmBorder 0.9+2*frmBorder];
h=uicontrol( ...
'Style','frame', ...
'Units','normalized', ...
'Position',frmPos, ...
'BackgroundColor',[0.50 0.50 0.50]);
%====================================
% The START button
btnNumber=1;
yPos=0.90-(btnNumber-1)*(btnWid+spacing);
labelStr='Start';
cmdStr='start';
callbackStr='spinner(''start'');';
% Generic popup button information
btnPos=[xPos yPos-spacing btnLen btnWid];
startHndl=uicontrol( ...
'Style','pushbutton', ...
'Units','normalized', ...
'Position',btnPos, ...
'String',labelStr, ...
'Interruptible','on', ...
'Callback',callbackStr);
%====================================
% The STOP button
btnNumber=2;
yPos=0.90-(btnNumber-1)*(btnWid+spacing);
labelStr='Stop';
% Setting userdata to -1 (=stop) will stop the demo.
callbackStr='set(gca,''Userdata'',-1)';
% Generic popup button information
btnPos=[xPos yPos-spacing btnLen btnWid];
stopHndl=uicontrol( ...
'Style','pushbutton', ...
'Units','normalized', ...
'Position',btnPos, ...
'Enable','off', ...
'String',labelStr, ...
'Callback',callbackStr);
%====================================
% The INFO button
labelStr='Info';
callbackStr='spinner(''info'')';
infoHndl=uicontrol( ...
'Style','push', ...
'Units','normalized', ...
'Position',[xPos 0.20 btnLen 0.10], ...
'String',labelStr, ...
'Callback',callbackStr);
%====================================
% The CLOSE button
labelStr='Close';
callbackStr='close(gcf)';
closeHndl=uicontrol( ...
'Style','push', ...
'Units','normalized', ...
'Position',[xPos 0.05 btnLen 0.10], ...
'String',labelStr, ...
'Callback',callbackStr);
% Uncover the figure
hndlList=[startHndl stopHndl infoHndl closeHndl];
set(figNumber, ...
'Visible','on', ...
'UserData',hndlList);
watchoff(oldFigNumber);
figure(figNumber);
elseif strcmp(action,'start'),
axHndl=gca;
figNumber=gcf;
hndlList=get(figNumber,'Userdata');
startHndl=hndlList(1);
stopHndl=hndlList(2);
infoHndl=hndlList(3);
closeHndl=hndlList(4);
set([startHndl infoHndl closeHndl],'Enable','off');
set(stopHndl,'Enable','on');
% ====== Start of Demo
cla
colormap([])
N=50; % number of lines
M=50; % number of colors
map=hsv(M);
set(figNumber,'BackingStore','off');
set(axHndl, ...
'XLim',[-0.01 1.01],'YLim',[-0.01 1.01], ...
'XTick',[],'YTick',[], ...
'Box','on', ...
'Drawmode','fast', ...
'ColorOrder',map, ...
'Visible','on', ...
'NextPlot','add', ...
'UserData',play);
h=plot([0 0],zeros(2,N),'EraseMode','background');
x=rand;
y=rand;
x1=rand;
y1=rand;
dx=.01;
dy=.01;
dx1=.01;
dy1=.01;
mind=.001;
maxd=.05;
i=0;
while get(axHndl,'Userdata')==play,
i=i+1;
x=x+dx;
y=y+dy;
x1=x1+dx1;
y1=y1+dy1;
if (x>1),
x=1;
dx=-(rand*(maxd-mind)+mind);
end
if (x<0),
x=0;
dx=(rand*(maxd-mind)+mind);
end
if (y>1),
y=1;
dy=-(rand*(maxd-mind)+mind);
end
if (y<0),
y=0;
dy=(rand*(maxd-mind)+mind);
end
if (x1>1),
x1=1;
dx1=-(rand*(maxd-mind)+mind);
end
if (x1<0),
x1=0;
dx1=(rand*(maxd-mind)+mind);
end
if (y1>1),
y1=1;
dy1=-(rand*(maxd-mind)+mind);
end
if (y1<0),
y1=0;
dy1=(rand*(maxd-mind)+mind);
end
set(h(rem(i,N)+1), ...
'Xdata',[x x1], ...
'Ydata',[y y1]);
%'Color',map(rem(i,M)+1,:));
drawnow;
end
% ====== End of Demo
set([startHndl infoHndl closeHndl],'Enable','on');
set(stopHndl,'Enable','off');
elseif strcmp(action,'info');
helpwin(mfilename);
end; % if strcmp(action, ...
%BAGAIMANA HASILNYA?????