You are on page 1of 75

Yeni Balayanlar iin

MATLAB
Yardmc Ders Notlar

Do. Dr. Cneyt AYDIN

Yldz Teknik niversitesi

stanbul-2012
indekiler

Giri
Matris ilemleri
Say Formatlar
Temel Lineer Cebir lemleri
Diziler (Arrays)
Program Dallandran fadeler (if-end , switch-case yaplar)
Dngler (for-end ve while-end dngleri)
Grafik
Dosya yazdrma-okuma
Fonksiyon dosyas oluturma

1
Kaynaka

Doan, U., (2009), Temel Bilgisayar Bilimleri Ders Notlar, YT,


Lisans Ders Notlar, stanbul.
Demirel, H., (2005), Dengeleme Hesab, YT, Lisans Ders Notlar,
stanbul.
Uzunolu M., vd. (2002), Matlab, Trkmen Kitabevi, stanbul.
http://www.mathworks.com/matlabcentral/
http://www.mathworks.com/matlabcentral/fileexchange/

2
MATLAB (MATrix LABoratuary)

http://www.mathworks.com/matlabcentral/

MATLAB, yksek performansl bir uygulama yazlm ve bir programlama


dilidir.

MATLABin temelindeki yap, boyutlandrma gerektirmeyen matrislerdir.

Yaptmz tm girdi ve ktlar, belirte gerektirmeksizin bir matris


tanmlar.

lk olarak Fortran dili ile yazlan MATLAB, daha sonra C ile yazlmtr.

3
MATLAB (MATrix LABoratuary)

Matlabde hazr programlar vardr. Bu programlara fonksiyon ad


verilir.
Matlab fonksiyonlarnn kullanm, matematikteki y=f(x) fonksiyonunun
kullanmyla zdetir.
rnein, a=sin(x) fonksiyonunda, sin fonksiyonu, x asnn (input-
girdi) deerini hesaplar; kullanc bu deeri, rnein, bir a deikenine
atar. a deeri sin fonksiyonunun bir ktsdr (output).

4
MATLAB (MATrix LABoratuary)

Avantajlar:

Kullanm kolayl,

letim sistemi uyumluluu,

Saysal analiz ilemlerindeki kolaylklar,

Hazr fonksiyonlar (function files),

Grntleme (visualization) kolayl (grafik izim),

GUI gelitirme kolayl,

MATLAB derleyicisi (exe: executable dosya ile win32 uygulamalar),

Toolboxes (Ara kutular) :hazr programlar!

5
MATLAB/Command window (komut penceresi)

Current directory
(alma klasr)

Dinamik komut satr


Her trl mat. ilem,
Demo, program altrma vb.
M-file editr
Programlarn yazld editr

6
MATLAB/Workspace ( alan)

Atanan
deiken Workspace penceresini
amann komut yolu

Workspace Workspace, ilgili oturumda kullanlan


penceresi tm deikenlerin tutulduu alandr.

7
MATLAB/Array Editor (Dizi editr)

Matris, vektr ve saylar iin excel zelliindeki editrdr.

ki farkl biimde grntlenir:

>>open('a')
workspace penceresinde ilgili
deiken iki kez tklanr.
Daha nce atanan bir deikenin
boyutlar istenildii gibi deitirilebilir!

8
MATLAB/Temel Komutlar

clc Command windowu temizler.


clear lgili oturumda atanm tm deikenleri siler.
clear a Yalnzca a deikenini siler.
demo Matlab demosunu altrr.
date Gn-Ay-Yl grntler (rnein, 17-Oct-2009)
exit Matlab oturumundan kar.
help Yardm mensn aar.
help f_na f_na fonksiyonu hakknda bilgi verir.
save d a a deikenini d dosya ismiyle mat uzantl olarak kaydeder.
load d a deikenini d dosyasndan geri arr.

Save ve load komutlar, matris vb. yaplarn kaydedilmesi iin ok nemlidir.

9
MATLAB/Temel dosya trleri

*.m MATLAB program dosyalar

*.fig Grafik dosyalar ve GUIlerin grafik paralar

*.mat Deiken ve matris dosyalar

*.p pre-parsed pseudo-code dosyalar (bu dosyalarn ierii


grntlenemez ancak program olarak arlabilir, yani MATLABde
altrlabilir!)

10
MATLAB/Matrislerin Girilmesi

Matris ve vektrler [ ] keli parantezleri ile tanmlanr.

Matris ve vektr girmenin 3 farkl yolu vardr:

rnein:
1.yol 2.yol
1 3 5 A=[1 3 5
A = 7 8 11 7 8 11 A=[1 3 5;7 8 11;100 1 4]
100 1 4]
100 1 4

3.yol
A(1,1)=1, A(1,2)=3, A(1,3)=5
A(2,1)=7, A(2,2)=8, A(2,3)=11
A(3,1)=100, A(3,2)=1, A(3,3)=4

11
MATLAB/Matrislerin Kaydedilmesi
Matris ve vektrler *.mat uzantl olarak save komutuyla kaydedilir, load
ile de istenilen yerden geri arlr.

rnein, girilmi bir a matrisini D:\yildiz klasrne katsayilar.mat


olarak kaydetmek isteyelim: Bunun iin aadaki komut dizisi kullanlr;

save D:\yildiz\katsayilar a

katsayilar.mat olarak kaydedilen a matrisinin herhangi bir zamanda geri


arlmas iin,

load D:\yildiz\katsayilar

komut dizisi kullanlr. Geri arma ileminden sonra, ilgili matris a


dizisi olarak workspacede kaydedilir (workspacee kaydetme ileminin
geici olduunu hatrlaynz!)

Yeni bir matrisi katsayilar.mat olarak kaydettiimizde, nceki matrisi bir daha
grme imkan kalmaz. Yani save overwrite (zerine yazma) zelliklidir.

12
MATLAB/Matrislerin Kaydedilmesi

*.mat uzantl dosyalar, ayrca MATLABden open files ksa yolundan da


geri arlabilir:

Open files

Dosyadaki
Dosya deiken
trn workspacede
MAT-files oluturulur.
olarak
deitir.

13
MATLAB/Say Formatlar
>> format long >> format short
>> a=1.123000123123123123; >> a=1.123000123123123123;
>> a >> a
a = 16 karakter a = 6 karakter

1.12300012312312 1.1230

>> a=100004545.99923423499111; >> a=100004545.99923423499111;


>> a >> a
a = 108 a = 108

1.000045459992342e+008 1.0000e+008

Bir saynn istenilen hanesinin gsterilmesi iin fprintf veya sprintf komutlar
kullanlr:
>>a=100004545.99923423499111; Matris elemanlarnn istenilen hanede
>>fprintf(%1.10f,a) gsterilmesi iin,
printmatrix fonksiyonu olduka
kullanlldr (File-exchange sayfasndan
100004545.9992342300 download edilebilir!)

14
MATLAB/Temel lineer cebir komutlar
inv(a) Bir a kare matrisinin tersini (inversini) alr.

a a matrisinin devriini (transpozesini) alr.

det(a) a matrisinin determinantn hesaplar.

a+b Boyutlar ayn olan a ve b matrisini toplar.

a-b Boyutlar ayn olan a ve b matrislerinin farkn alr.

a*b Stun says m olan a matrisiyle satr says m olan b matrisini arpar.

a/b b dzenli kare bir matrisse (determinant sfrdan farklysa), ayn boyutlu
a matrisiyle; a*inv(b) ilemini yapar.

a.*b Boyutlar ayn olan a ve b matrislerinin elemanlarn karlkl olarak


arpar.

a./b Boyutlar ayn olan a ve b matrislerinin elemanlarn karlkl oranlar.

15
MATLAB/Temel lineer cebir komutlar

trace(a) Bir a matrisinin izini (kegen elemanlarnn toplamn) hesaplar.

diag(a) Bir kare a matrisinin kegen elemanlarn bir stun vektre atar. Ya da
a bir vektr ise kegenleri bu vektrn elemanlarndan oluan bir
kegen matris oluturur.

sum(a) a matrisinin her bir stununun toplamn hesaplar. a bir vektr ise
sonu, vektr elemanlarnn toplam olur.

triu(a) Bir matrisin st gen matrisini oluturur.

tril(a) Bir matrisin alt gen matrisini oluturur.

zeros(m,n) mn boyutlu sfr matrisi oluturur.

ones(m,n) mn boyutlu elemanlar 1 olan matris oluturur.

eye(m) mm boyutlu birim matris oluturur.

16
MATLAB/Temel matris operatrleri
a(:) a matrisinin stunlarnn ard arda dizilmesinden oluan bir stun
vektr oluturur (vec operatr)

a(:,i) a matrisinin i. stununu alr.

a(j,:) a matrisinin j. satrn alr.

a(:,[i j]) a matrisinin i ve j. stununu alr.

a([i j],:) a matrisinin i ve j. satrn alr.

e=a:b:n a, (a+b),,n saylarndan oluan bir satr vektr oluturur.

rnein,

e=1:1:n, 1 ile n arasndaki tam saylardan oluan bir vektr.


e=2:2:n, 1 ile n arasndaki ift saylardan oluan bir vektr.
e=1:2:n, 1 ile n arasndaki tek saylardan oluan bir vektr.
e=-10:0.1:n, -10dan 0.1 artmla nye kadar olan saylardan oluan bir vektr.

17
MATLAB/Temel matris operatrleri
length(a) a matrisinin stun saysn verir. a bir vektr ise sonu, a vektrnn
eleman saysdr.

[m,n]=size(a)a matrisinin satr saysn (m) ve stun saysn (n) verir.

max(a) Bir a vektrnn en byk elemann gsterir.

min(a) Bir a vektrnn en kk elemann gsterir.

[m,i]=max(a) Bir a stun vektrnn en byk elemann (m) ve bunun satr


numarasn verir.

[m,i]=min(a) Bir a stun vektrnn en kk elemann (m) ve bunun satr


numarasn verir.

sort(a) Bir a vektrnn elemanlarn kkten bye sralar.

a(:,i)=[] Ann i. stununu siler.

a(i,:)=[] Ann i. satrn siler.

18
MATLAB/Temel matris operatrleri

sortrows(a,i) Bir a matrisinin elemanlarn i.stuna gre sralar.

rnek:
a = a =
1 1000 1 1000
3 10 3 10
2 5 2 5
4 1 4 1

>> sortrows(a,1) >> sortrows(a,2)

ans = ans =

1 1000 4 1
2 5 2 5
3 10 3 10
4 1 1 1000

19
MATLAB/Uygulama-1
Aadaki ilemleri command windowda yapnz.
1 3 5
A = 7 8 11 1) A matrisini giriniz.
2) A matrisinin determinantn hesaplaynz.
100 1 4 3) A matrisinin tersini bulunuz. kan sonucu bir B
matrisine ataynz.
4) A*B ilemini yapnz. Elde edilen sonucu irdeleyiniz.
5) A matrisinin 1. stununu a1, 3. stununu a3
vektrlerine ataynz.
6) Kegenleri A matrisinin kegenlerinden oluan bir C
kegen matrisi oluturunuz.
7) a1in devrii ile a3 vektrn arpnz.
8) a1 ile a3 vektr elemanlarn karlkl arpnz.
9) Ann 3. satrn, dier satr elemanlarn girmeden,
[5 6 7] olarak deitiriniz.
10)Ann 1 ve 2. satrlarn siliniz.

20
MATLAB/Uygulama-1:zm

1 >> A=[1 3 5;7 8 11;100 1 4]; 8 >> a1.*a3


2 >> det(A) ans=
ans = 5
-728 77
3 >> inv(A) 400
ans =
9 >>A(3,:)=[5 6 7]
-0.0288 0.0096 0.0096 A =
-1.4725 0.6813 -0.0330
1.0893 -0.4107 0.0179 1 3 5
>> B=ans; 7 8 11
>> A*B Birim matris 5 6 7
4
ans =
10 >> A([1 2],:)=[]
1.0000 0 0.0000 A =
0 1.0000 0.0000
0 0.0000 1.0000 5 6 7
>>
5 >>a1=A(:,1);a3=A(:,3);
6 >>C=diag(diag(A));
7 >>a1*a3
ans=
482

21
MATLAB/Uygulama-2

Aadaki ilemleri command windowda yapnz.


10 5 5
B = 70 8 7 1) B matrisini giriniz.
10 1 3 2) B matrisini mevcut alma klasrnze
katsayilar ismiyle kaydediniz.
3) Dosyann kaydedilip kaydedilmediini kontrol ediniz.
(Open Files penceresinden)
4) MATLAB oturumundaki tm deikenleri siliniz (clear)
5) Command windowda yazlm tm ifadeleri
temizleyiniz. (clc)
6) B*2 ilemini yapnz.
7) B matrisini geri arnz.
8) B matrisinin st ve alt gen matrislerini oluturunuz.
9) C=[B zeros(3,2)] ilemini yapnz.

22
MATLAB/Uygulama-2:zm

1 3
>> B=[10 5 5;70 8 7;10 1 3];
2 >> save katsayilar B

4 >> clear

5 >> clc

6 >> B*2
??? Undefined function or Neden?
variable 'B'.

7 >> load katsayilar


8 >> triu(B)
ans = 9 >> C=[B zeros(3,2)]
10 5 5
C =
0 8 7
0 0 3
10 5 5 0 0
>>tril(B)
70 8 7 0 0
ans =
10 1 3 0 0
10 0 0
70 8 0
10 1 3

23
MATLAB/Diziler (Arrays)

Saylar : Say dizileri (numeric array)


Karakterler : Karakter dizileri (character array)
rnek:
c=1999 (numeric array)
d='Yildiz Teknik Universitesi' (character array)
f=[1999 2000] (numeric, matrix)
g=[d ' Insaat Fakultesi'] (character, matrix)

Not: Numeric ile character dizileri bir matriste bir arada bulunamaz! Yani,
bir matris hem say hem de bir kelimeyi ayn anda ieremez!

Hcreler : Hcre dizileri (cell array)


Yaplar : Yap dizileri (structure array)

24
MATLAB/Diziler (Arrays)
Hcre Dizileri (Cell arrays) { } ile tanmlanr. Bylesi bir dizi, farkl matrisleri
ayn isim altnda tutmak ve ilemek iin kullanlmaktadr.

rnein,

C{1}=[1 2;3 5],C{2}=[4 4 4 4];C{3}=[('yildiz teknik'),(' insaat')];

girildiinde, C bir hcre dizisi olur. Bu hcre geri arldnda,

C =

[2x2 double] [1x4 double] [1x20 char]

C{1} hcresi C{2} hcresi C{3} hcresi

Her bir hcre ayr ayr ilenir.

25
MATLAB/Diziler (Arrays)
C=cell(n) nn hcreden oluan bo bir hcreyi Cye atar. rnein n=2 iin

>> C=cell(2)

C =

[] []
[] []

hcresi oluturulur.

Bir hcrenin iine istenilen sayda yeni hcreler eklemek mmkndr; rnein,
C{1}{1}=[2 3] ile C aadaki biimde deiir;

C =

{1x1 cell} []
[] []

26
MATLAB/Diziler (Arrays)
C=cell(3,2) hcresi
C{1,2} hcresi

C{1,1} C{1,2}

C{1,2}{1,1} C{1,2}{1,2}

C{2,1} C{2,2}
C{1,2}{2,1} C{1,2}{2,2}

C{3,1} C{3,2}

Yeni alt
hcre(ler)

C{1,2}{2,2} hcresi

27
MATLAB/Diziler (Arrays)
Yap dizileri (Structure arrays), veri tabanlar iin olduka kullanll bir dizi
trdr.
A yap dizisi arldnda,

A.name='Cneyt'; >>A
A.sname='Aydin';
A =
A.univ='YTU'; name: 'Cneyt'
A.city='Istanbul'; sname: 'Aydin'
A.email='caydin@yildiz.edu.tr'; univ: 'YTU'
A.year=2009; city: 'Istanbul'
email: 'caydin@yildiz.edu.tr'
year: 2009
ile A, bir structure array olur.

Hcre ve yap dizileri, mat uzantl dosyalar olarak, daha nce aklanan save
komutuyla kaydedilip, load komutuyla geri arlabilir.

28
MATLAB/Diziler arasnda dnmler

num2str(a) Bir a saysn bir karaktere atama (From numeric to (2) string)

str2num(a) Karakter olan bir a saysn say deerine atama

mat2str(a) Bir a matrisini bir karakter dizisine atama

int2str(a) Bir a tam saysn bir karaktere atama

char(a) Bir a hcresini bir karakter dizisine atama

cellstr(a) Bir a karakterini bir hcre dizisine atama

num2cell(a) Bir a saysn bir hcre dizisine atama

29
MATLAB/Diziler arasnda dnmler

rnek: Bir ilem sonucunda a=10.234 elde edilsin. Elde edilen sonuc=10.234
karakterini grntlemek iin,
Her iki ifade karakter olmaldr!
['Elde edilen sonuc=' num2str(a)]

yaps dnlmelidir.

Bunun daha gelimi biimi, fprintf ile salanr:


Karakter

fprintf('%s%1.4f',('Elde edilen sonuc='), a )

Say

30
MATLAB/Uygulama-3
Aadaki ilemleri command windowda yapnz.

1. fprintf fonksiyonunu kullanarak, a=10.45623 saysn 3 haneye kadar yazdrnz.


2. [sayinin degeri= a] ifadesini, a virglden sonra 2 hane olacak biimde
yazdrnz.
3. Yukardaki ifadeyi bir b deikenine ataynz (sprintf ile)
4. bnin bir karakter dizisi olup olmadn denetleyiniz.
5. a deerini nnde 5 karakter boluk kalacak biimde 2 haneye kadar yazdrnz.
6. a deikenini msgbox(a,sonuc) ifadesiyle bir GUIye yazdrnz.
7. b deikenini msgbox(b,sonuc) ifadesiyle bir GUIye yazdrnz.
8. ann karakkn c deerine ataynz. b ve [sayinin karakoku, c] ifadesi alt alta
olacak biimde (c, virglden sonra 5 hane gsterilecek) msgbox iinde
yazdrnz.

31
MATLAB/Uygulama-3:zm
1 >> a=10.45623;fprintf(%1.3f,a) 7 >> msgbox(b,sonuc)
10.456 >>
>> 8 >>c=sqrt(a)
2 >>fprintf('%s%1.2f',('sayinin c =
degeri='),a)
sayinin degeri=10.46 3.2336
3
>> >>b1=sprintf(%s%1.5f,(sayinin
>>b=sprintf(%s%1.2f,('sayinin karakoku=),c);
degeri='),a) >>g=char(b,b1);
b = >>msgbox(g,sonuc)
4
sayinin degeri=10.46

>>ischar(b) 5 boluk+5 karakter


5
ans=
1
6 >>fprintf(%10.2f,a) Not: b ve b1 karakter dizilerini alt alta
10.46 yazdrmann bir dier yolu, bunlar bir
>>msgbox(num2str(a),sonuc) hcre dizisi altnda dnmektir;

G=cell(2,1);G{1}=b;G{2}=b1;
msgbox(G,sonuc)

benzer sonucu retir.

32
MATLAB/Uygulama-4

Aadaki ilemleri command windowda yapnz.

1. Sonraki ilemlerde kullanlacak bir a say deerini, inputdlg fonksiyonu ile girdiren komutu
yaznz.
2. a deerinin bir say olup olmadn irdeleyiniz.
3. a*2 ilemini yapnz. Bu ilemin neden sonu vermediini irdeleyiniz.
4. a deerini, gerekli ise, say dizisine dntrnz.

33
MATLAB/Uygulama-4:zm

1
>> a=inputdlg(Bir sayi giriniz,YTU-2009)

a =
inputdlg ile karakter hcre dizisi oluturulur.
'150.123135465' Bu nedenle, girilen verinin say yaplmas
2 >>isnumeric(a) gerekir.
ans =
0
3 >>a*2
>>?? Error using ==> *
Function '*' is not defined for values of class 'cell'.
4 >>a=str2num(char(a))
>>
a =

150.1231

34
MATLAB/Program Dallandran fadeler

Dal yaplar, program kodlarndan istenilenleri seen ve onlar ileten,


istenilen kodlar ise deerlendirme d brakabilen MATLAB
ifadeleridir.

if
Switch, case
try/catch

yaplar ile oluturulur. Bu blmde try/catch yapsna


deinilmeyecektir.

35
MATLAB/if,end yaps
if (eer) yaps bir koulun gereklemesi durumunda bir ilemi yaptrmak iin sklkla kullanlr.
Bu ifade,

if koul
ilem
end

biimindedir.

rnek: Girilen bir saynn negatif olmas durumunda, sayy doal logaritmasyla deitiren bir kod
dnelim:

a=input(' bir sayi giriniz= '); Else yaps kullanlmasayd


if a<0
a=input(' bir sayi giriniz= ');
a=log(a);
if a<0
else a=log(a);
a=a; Dier durumda end
end anlamndadr: if a>0
a Burada, a>0 a=a;
koulunu temsil eder. end
a

36
MATLAB/switch,case yaps
switch (deitir) if yapsna benzer. Burada daha ok szel olarak belirtilen
durumlara gre ynlendirme ilemi yaplr. Bu yapnn kullanm case ile aadaki
gibidir;
switch durum
case durum1
ilem1
case durum2
ilem2
otherwise
Kullanm kiiye baldr.
ilem3
end

rnek: gun degiskeninin, is gunu olup olmadna karar vermek iin aadaki kodlar
dnlr;
clear,clc
gun=input('hangi gun=', 's');
switch lower(gun)
case {'pazartesi', 'sali','carsamba','persembe','cuma'}
disp('i gn')
case {'cumartesi','pazar'}
disp('TATL!')
end

37
MATLAB/switch,case yaps

Kullanc tarafndan girilen bir a=10.2424542


deikeninin virglden sonra 2mi 3 hane mi
yazdrlacan sorgulayan bir questdlg GUIsini
dnelim: questdlg GUIsi

a=10.2424542;
dummy=questdlg('Virglden sonra ka...
hane verilsin?','Sonuc',...
'2 hane', '3...
hane','3 hane');
switch dummy
case {'2 hane'}
fprintf('%1.2f',a)
2 hane dmesinin tklanmas durumunda,
case {'3 hane'}
fprintf('%1.3f',a), end 10.24

sonucu grntlenir.

38
MATLAB/Uygulama-5
1 ve 2. noktann X ve Y koordinatlarnn girilmesinden sonra, (1-2) aklklk asnn
kanc blgeye dtn belirleyen, ilgili blgeyi bir msgbox kutusunda yazdran
bir program yaznz.
clear
zm clc
X1=input('X1=');Y1=input('Y1=');
X2=input('X2=');Y2=input('Y2=');
DX=X2-X1;DY=Y2-Y1;
if (DX>0) & (DY>0)
a=('Aci 1. bolgede');
end

if (DX<0) & (DY>0)


a=('Aci 2.bolgede');
end

if (DX<0) & (DY<0)


a=('Aci 3.bolgede');
end

if (DX>0) & (DY<0)


a=('Aci 4.bolgede');
end

msgbox(a,'Bolge?')

39
MATLAB/Uygulama-6
1 ve 2. noktann X ve Y koordinatlarnn girilmesinden sonra, (1-2)
aklklk asn hesaplayan bir program yaznz.

clear
zm clc
X1=input('X1=');Y1=input('Y1=');
X2=input('X2=');Y2=input('Y2=');
DX=X2-X1;DY=Y2-Y1;

if (DX~=0)&(DY~=0),a=atan(DY/DX);a=a*200/pi;
if (DX>0)&(DY>0),a=a;end
if (DX<0)&(DY>0),a=a+200;end
D koul if (DX<0)&(DY<0),a=a+200;end
if (DX>0)&(DY<0),a=a+400;end
end

if (DX==0)&(DY>0),a=100;end
if (DX==0)&(DY<0),a=300;end
if (DX>=0)&(DY==0),a=0;end
if (DX<0)&(DY==0),a=200;end
a
%veya output a, aadaki biimde yazdrlabilir.
fprintf('%s%1.5f%s','(1-2) aciklik acisi=',a,' grad')

40
MATLAB/Uygulama-7
1 ve 2. noktann X ve Y koordinatlarnn girilmesinden sonra, (1-2)
aklklk asn ve (1-2) kenar uzunluunu hesaplayan bir program yaznz.
clear
zm clc
X1=input('X1=');Y1=input('Y1=');
X2=input('X2=');Y2=input('Y2=');
DX=X2-X1;DY=Y2-Y1;

if (DX~=0)&(DY~=0),a=atan(DY/DX);a=a*200/pi;
if (DX>0)&(DY>0),a=a;end
if (DX<0)&(DY>0),a=a+200;end
D koul if (DX<0)&(DY<0),a=a+200;end
if (DX>0)&(DY<0),a=a+400;end
end
Sonular, ayrca sprintf fonksiyonu
if (DX==0)&(DY>0),a=100;end ile bir msgboxa alt alta yazdrnz.
if (DX==0)&(DY<0),a=300;end
if (DX>=0)&(DY==0),a=0;end
if (DX<0)&(DY==0),a=200;end

S=sqrt(DX^2+DY^2);%kenar
ki ifadeyi alt
alta yazdrmak fprintf('%s%1.5f%s','(1-2) aciklik acisi=',a,' grad')
iin fprintf('\n')
fprintf('%s%1.3f%s','(1-2) kenar uzunlugu=',S,' m')

41
MATLAB/Uygulama-9
Kullancy,1i semesi durumunda YT web sayfasina, 2yi semesi durumunda
istediiniz bir web sayfasina ynlendiren bir men program yaznz.

clear
zm clc
disp('[1]...YTU web sayfasi')
disp('[2]...Cneyt Aydn web sayfasi')
a=input('<Selection>=');

if (a>2)|(a<=0)
menu %Kullancnn 0,negatif veya 3den byk say girmesi
end durumunda, program yeniden balatmak iin

if a==1
web www.yildiz.edu.tr -browser
end
if a==2
web www.yildiz.edu.tr/~caydin -browser
end

42
MATLAB/for,end dngs
for,end dngs bir ilemin birden daha fazla sayda yaptrlmasnda kullanlr.
(rnein, kk bulma problemlerinde kullanlan iterasyon zmleri). Kullanm,

for i=1:n (iTam say (integer))


ilem
end

biimindedir.

rnek: 1den Nye kadar olan saylarn toplamn yapan bir program dnelim.

clear,clc
N=input('bir sayi giriniz=');
say=0; %sayac
for i=1:N
say=say+i; %birikimli (kmlatif toplam)
end
say

43
MATLAB/while,end dngs
while,end dngs, belirli bir durumun gereklemesi durumunda bir ilemin birden
daha fazla sayda yaptrlmasnda kullanlr.
1. Buradaki, while,end dngs, done deikeni ancak ve
done=0; ancak 0 olduu zaman alacaktr.
while done==0 2. Bir nceki satrda, done deikeni 0 olarak atanm olduu
iin while,end dngs alr.
ilem (while, end dngsn altran farkl algoritmalara burada
end deinilmeyecektir).

rnek: 1den Nye kadar olan saylarn toplamn while,end dngs ile yapan bir
program dnelim.
clear,clc
N=input('bir sayi giriniz=');
say=0; i=0;done=0;
while done==0
i=i+1; %bir nceki rnekte for,end dngsndeki i ye karlk gelir.
if i==N
i, son sayya (Nye) ulatnda, done deikenine 0dan farkl bir say
done=1;
atanr. Bylece, whilen olduu satra gelindiinde, done 0 olmad
end iin while, end dngs almaz (dng sonlanr). Program, bu
say=say+i; dngnn end satrnn hemen altndaki satrdan ileme devam eder
end (burada, say deikeni command windowda yazdrlr.).
say

44
MATLAB/Uygulama-10
n sayda lnn tek tek dzeltmesi ve standart sapmas girildiinde ilgili lnn
kaba hatal olup olmadn belirleyen, kaba hatal lleri (varsa) yazdran bir program oluturunuz.

zm clear,clc
n=input('olcu sayisi=');say=0;
for i=1:n
v=input('duzeltme=');
s=input('standart sapma=');
if abs(v)>=(3*s)
disp('--------------------------')
disp([int2str(i) '. olcu kaba hatali'])
disp('--------------------------')
say=say+1;KH(say,1)=i;
end
if abs(v)<(3*s)
disp('--------------------------')
disp([int2str(i) '. olcu normal'])
disp('--------------------------')
end
end
if say==0
disp('Kaba hatali olcu yok')
end
if say>0
disp('Kaba hatali olan olculer')
KH
end

45
MATLAB/Grafik
Matlabde grafikler figure penceresinde izdirilir.

ki ve boyutlu izim yan sra, kutupsal koordinat sisteminde de izim olana


bulunur (bak., polar).

ki Boyutlu Koordinat Sistemi Boyutlu Koordinat Sistemi


Ordinat (Y)

Apsis (X) Y
X

46
MATLAB/Grafik
Matlabde en temel izim fonksiyonu plotdur.

rnein, x=0:0.1:5 olan bir dizi vektr elemanlarna karlk, y=x.^3+x.^2


fonksiyon deerleri hesaplatlsn.
plot(x,y) ile aadaki grafik izdirilir.
Edit plot
izilen grafiin zerinde birok deiiklik
yapmak mmkndr.

Bunun iin Edit plot dmesi tklanr.

lgili nesne (izdirilen eri, eksenler vb.) iki


kez tklanarak beliren Property Editor
penceresinden istenilen deiiklikler
yaplabilir.

Property Editor penceresinden yaplan her


trl deiiklii, komut olarak yaptrmak
mmkndr.

rnein, plot(x,y,'-o') hem ardk


noktalar ekildeki gibi birletirir, hem de
x,y nokta iftlerini grafik zerinde bir o
sembol ile iaretler.

47
MATLAB/Grafik
plot(x,y,'-o') ile ilgili grafik aadaki gibi olur.

Aadaki ifadelerle izimi


tekrarlaynz:
plot(x,y,'-o')
plot(x,y,'-*')
plot(x,y,'-+')
plot(x,y,'-^')
plot(x,y,'-.')

Sz edilen grafik zerindeki o,*,+


gibi sembollere marker denir.

plot fonksiyonu ile ilgili erinin


rengini deitirmek de mmkndr:
plot(x,y,'r') krmz (red)
plot(x,y,'k') siyah
plot(x,y,'b') mavi (blue)
plot(x,y,'g') yeil (green)

48
MATLAB/Grafik-Kaydetme ve kopyalama
izilen grafikleri kaydetmek iin Figure penceresindeki File mensnden Save veya
Save As seenekleri seilir. Grafikler, fig uzantl dosyalar olarak ilgili klasre
kaydedilirler.

izilen grafiklerin baka bir ortama aktarlmalar iin, Edit mensnn altndaki Copy
Figure seenei seilir. (Not: Kopyalamann arka plan rengini ayarlamak iin Copy
Options seeneine baknz.)

49
MATLAB/Grafik-Ayn eksen takmna farkl grafikler izdirme

Ayn eksen takmna farkl grafikleri izdirmek iin hold on ve hold off komutlar
kullanlr. Bu iki komut arasna yazlan her trl grafiin izimi ayn eksen
takmnda gsterilir.

rnein, ya=[1;1.2;2.4;4.5] ve yb=[0.5;0.8;1.8;0] vektrleri ile ifade


edilen iki farkl l grubunu x=[1;2;3;4] vektrne gre ayn eksen takmnda
izdirmek iin aadaki komutlar yazmak yeterlidir:

hold on, plot(ya), plot(yb,'r'),hold off

Not: Eer x ekseni, bu rnekte


olduu gibi, y deerlerinin indisini,
yani kanc deer olduunu,
gsteriyorsa, plot fonksiyonunda
xin yeniden belirtilmesine gerek
yoktur.

50
MATLAB/Grafik-Grafik yoluyla bilgi retme
rnek: ya=randn(1000,1) ve yb=randn(1000,1)*3 biiminde iki l grubu
oluturalm. (randn fonksiyonu, beklenen deeri 0, standart sapmas 1 olan normal
dalm say retir). yann standart sapmas 1, ybnin standart sapmas ise 3tr.

Bu llerin, a ve b kaynaklarndan elde edildiini ve de standart sapmalarn


bilmediimizi dnelim. Hangi l grubunun daha kaliteli olduunu (standart sapmasnn
dk olduunu) grafik zerinden grebilmek iin, bir nceki rnekteki hold on/hold off
komutlarn kullanarak bunlar izdirmek yeterli olacaktr:

hold on, plot(ya), plot(yb,'r'),hold off

Bylece, krmz ile


gsterilmi yb llerinin
sfrdan daha ok saptklar,
dolaysyla standart
sapmasnn daha yksek
olduu bilgisi grafik zerinden
kolaylkla okunabilmektedir.

Not: sqrt(yb*yb/999) ilemi, yann deneysel standart sapmasn verecektir (bkz. statistik
Ders Notlar). Bu deerin 3 kuramsal standart sapma deerine yakn olacana dikkat ediniz.

51
MATLAB/Grafik-Grafik yoluyla bilgi retme
Bir nceki rnekte kullanlan ya ve yb llerinin birbirleriyle nasl bir ilikide olduunu
grmek iin,

plot(ya,yb,'.')

komutunu kullanmak yeterlidir.

lgili grafikten, ya ve yb lleri


arasnda anlaml bir iliki
(korelasyon) olmad bilgisi
hemen tretilebilir. nk
beklenen deerleri 0 olan bu iki
gruba ilikin l iftleri, 0
merkezinde dzgn olarak
(daire biiminde) dalmlardr.
ki l grubu arasnda
korelasyon olabilmesi iin, bu
nokta bulutunun bir doru
etrafnda gzlenmesi gerekir.

52
MATLAB/Grafik-Grafik yoluyla bilgi retme
Bir nceki rnekte kullanlan yb llerini, yb=2+3*ya+randn(1000,1)*1,
biiminde ya llerine bal olarak retelim. Bu durumda,

plot(ya,yb,'.')

ile oluturulan grafikten ya ve yb lleri arasndaki korelasyonun varl hemen


grlecektir.

53
MATLAB/Grafik-Grafik yoluyla bilgi retme
Mhendislik uygulamalarnda en ok karlalan problemlerden biri de F(x)=0
biimindeki bir denklemin ilgili aralktaki kkn (fonksiyonu sfr yapan x deerini)
bulmaktr. Saysal analizde kullanlan Newton-Raphson gibi yntemlerde kkn
yaklak deerine ihtiya vardr. Bu yaklak deeri bulmak iin grafik izimi olduka
kullanl olmaktadr. rnein,

F(x)=x3+x2-5=0 gibi bir denklemin -2 ile 2 arasndaki yaklak kkn bulmak iin,
x=-2:0.1:2 biiminde x deerleri ve y=x.^3+x.^2-5 ile de bu xlere karlk y
deerleri retilir.

plot(x,y),grid on

komutlaryla aadaki grafik izdirilir.(grid on komutu ekildeki grid an izer)

y=0 dorusunun eriyi kestii


noktadan, x eksenine hayali bir dik
inilirse, bu dikin gsterdii x deeri,
F(x) denklemini salayan kk
olacaktr. Buradan kkn yaklak
deerinin 1.4 olduu sonucuna
kolaylkla ulalr.
y=x3+x2-5 erisi
Not: Figure penceresindeki bytme
zellii ile, ilgili kesiim noktasna
zoom yaplarak, yaklak kk daha
hassas biimde belirlenir.

54
MATLAB/Grafik-Basic Fitting Tool

Bir mhendis, bir olay gzler ve gzlem sonucunda elde ettii ller yoluyla olay
matematiksel eitliklerle aklamaya alr. Bylesi eitliklere, ksaca model ad
verilir.
Figure penceresinde yer alan Tools mens iindeki Basic Fitting seenei grafik
zerindeki x ve bunlara karlk gelen y deerlerini kullanarak, bunlara en iyi uyan
y=f(x) polinomunu tanmlar. Bylece olduka pratik bir biimde model oluturulur.

Burada hatrlatlmas gereken iki nokta vardr:

(1) Eer nokta ifti (x,y) says uydurulan polinomun bilinmeyen saysna eitse,
bulunan fonksiyon bir enterpolasyon polinomudur.

(Not: n. dereceden bir polinomun n+1 adet bilinmeyeni olduunu hatrlaynz: rnein 4.
dereceden bir polinom; y=ax4+bx3+cx2+dx+e dir ve bilinmeyen says 5dir)

(2) Eer nokta ifti says, uydurulan polinomun bilinmeyen saysndan fazlaysa en
uygun polinom bir en kk kareler kestirim yntemi sonucudur. y deerleri hatal
byklklerse (yani l ise), basic fitting ile uydurulacak polinomun bilinmeyen says
her zaman l saysndan kk olmaldr!

55
MATLAB/Grafik-Basic Fitting Tool
rnek: Aadaki tabloda f= 5, 10, 15 ve 20 deerlerine karlk t-dalmnn =%5 gven
snrlar (t, deerleri) verilmektedir. t=af3+bf2+cf+d polinomunu basic fitting zelliini kullanarak
belirleyiniz. f=9 iin t=2.26 olduuna gre elde edilen enterpolasyon polinomun doruluunu test
ediniz.
f 5 10 15 20
t 2.57 2.23 2.13 2.09

zm: x=[5;10;15;20] ve y=[2.57;2.23;2.13;2.09] olsun. plot(x,y) ile ilgili eri izilir.

Figure penceresindeki Tools


mensnden, Basic Fitting
seenei seilir.
Alan, Basic Fitting
penceresinden ilgili polinom
(burada, cubic, yani 3.derece) ve
ardndan, show equations
seenei iaretlenir.
ekil zerinde gsterilen f(x)
eitlii, bize enterpolasyon
polinomunu vermektedir.
Bu denklemde, x=9 girilirse,
y=2.24 deeri elde edilir. f=9 iin
t=2.26 olduu bilindiine gre,
enterpolasyon polinomumuzun
doruluu-bu aralk iin-%2dir.

56
MATLAB/Grafik-Basic Fitting Tool
rnek: Aadaki tabloda, x zamanlarna karlk y lleri elde edilmitir. llere en iyi
uyan y=a+bx dorusunu belirleyiniz (En kk kareler kestirim yntemi)

x 0 1 2 3 4 5
y 10.06 9.36 16.69 22.28 25.44 27.75

zm: Tablodaki deerler x ve y vektrlerine atanr. plot(x,y,'o')ile ilgili eri izilir.


Basic Fitting penceresinde, linear, show equation, plot residuals seenekleri iaretlendiinde,
aadaki grafik oluturulur.
En kk kareler
yntemine gre
belirlenen
en uygun doru
denklemi (model)*

llerin, belirlenen
doru denkleminden
sapmasn (dzeltmeleri-
residuals) gsterir.
* Demirel H (2005), Dengeleme Hesab
Ders Notlar, YT, stanbul

57
MATLAB/Grafik-ubuk (bar) ve stem grafii
Matlabde farkl gsterimlere gre izim yapmak mmkndr. Bunlardan ikisi bar()
ve stem() izim fonksiyonlardr.

rnek: x=[5;10;100;20;2] vektr elemanlarnn bar ve stem grafik olarak gstermek


isteyelim. bar(x) ve stem(x) aadaki grafikleri izdirecektir.

Bar grafii Stem grafii

58
MATLAB/Grafik-Histogram
llerin hangi istatistiksel dalma uyduunu grebilmek iin, frekans (sklk)
deerleri hesaplanr ve histogram grafikleri izilir.

Elimizde, ayn dalmda olduu bilinen bir x l vektr varsa, hist(x) fonksiyonu
otomatik olarak bir histogram grafii izer.

rnein, x=randn(100,1)*3 biiminde normal dalm bir l grubu retelim.


hist(x) ile aadaki histogram grafii oluturulur (Her bir barn st noktas
birletirildiinde oluan erinin bir normal dalm erisi veya dier adyla an erisi
biiminde olduu grlecektir.)

Sklk

59
MATLAB/Grafik-Vektr izimi
x ve y koordinat deerlerine sahip bir noktann dx ve dy kadar yer deitirdii dnlsn.
Bu noktadaki (dx,dy) vektrn izdirmek istediimizde, quiver fonksiyonu kullanlr.

rnein, bir jeodezik dik koordinat sisteminde iki noktann koordinatlar x=[1000;2000],
y=[5000;1000] vektrleri, bu noktadaki deiimler ise dx=[1;2] ve dy=[-0.5;0.8] ile
tanmlansn.

quiver(y,x,dy,dx) (Not: Bir jeodezik dik koordinat sisteminde x ve ynin yer deitirdiini hatrlaynz!)

komutu ile bir jeodezik dik koordinat sisteminde vektr izimi gerekletirilir.
Vektrleri leklendirmek iin, s
lek faktr quiver fonksiyonuna
beinci bir deiken olarak
eklenmelidir;

quiver(y,x,dy,dx,s)

60
MATLAB/Grafik-Kanava izimi

Bir jeodezik dik koordinat sistemindeki x ve y koordinatlar verilen jeodezik noktalar, nokta
sembolleri gen olacak biimde izdiriniz.

Nokta P1 P2 P3 P4
x (m) 500.00 550.00 1000.00 1200.00
y (m) 500.00 750.00 1500.00 800.00

plot(y,x,'^')
axis([200 1700 200 1500])
axis equal

axis([Xmin Xmax Ymin Ymax])


fonksiyonu, eksenlerin en kk
ve en byk deerlerini ayarlar,

axis equal ise x ve y


eksenlerindeki lek faktrn
(byme ve klme oranlarn)
eitler.

61
MATLAB/Grafik-nterpolasyon
x ve y koordinatlar bilinen noktalara ilikin nc bir bilgi (rnein, ykseklik, ykseklik
deiimi, scaklk, nem, basn, gelgit deformasyonu, anomali vb.) olduunda, noktalarn
evreledii alann iindeki hayali noktalar iin bu bilgiler, eitli matematiksel yaklamlarla
retilebilir: Bu ileme, ksaca, interpolasyon denir.

Bylesi hayali noktalar, alann iindeki belirli byklkteki kareler ann ke noktalar
olabilir. Bu noktalara grid noktalar denir. Matlabde, sonraki interpolasyon ilemlerinde
kullanlmak zere, meshgrid fonksiyonu ile bu noktalarn x-y koordinatlar belirlenir.

ncelikle, x ve y eksenleri, sz konusu karenin kenar bykl kadar paralara ayrlr.


rnein, kenar bykl 10 m olsun: Bylece eksenler aadaki biimde 10 mlik paralara
blnr;

x1=xmin:10:xmax; y1=ymin:10:ymax

Daha sonra, [XI, YI]=meshgrid(x1,y1)ile gridlerin ke nokta koordinatlar XI ve YI


matrislerine yazdrlr.

HI=griddata(y,x,H,YI,XI,'v4') fonksiyonu ile x ve y koordinatlarna sahip jeodezik


noktalardaki nc bilginin topland H, koordinatlar XI ve YIda tanmlanm grid noktalar
iin v4 yntemiyle interpole edilir; grid noktalarna ilikin nc bilgi HI vektrnde toplanr.
(Not: v4 ynteminden baka, cubic, linear gibi interpolasyon yntemleri de bulunur)

62
MATLAB/Grafik-nterpolasyon
rnek: Nokta koordinatlar, x=[1000;1200;4000;1000], y=[1500; 2000;3000;3500] ile ve
bu noktalarn ykseklikleri, H=[100.0000;95.9850;50.5000;140.1200] ile tanmlansn.
Blgeyi 10 mlik gridlere blerek, blgenin ykseklik deerlerini gsteren bir renk haritas
hazrlaynz.

clear,clc
x=[1000;1200;4000;1000];
y=[1500;2000;3000;3500];
H=[100.0000;95.9850;50.5000;140.1200];
x1=1000:10:4500;
y1=1500:10:4000;

[XI,YI]=meshgrid(x1,y1);

HI=griddata(y,x,H,YI,XI,'v4');
hold on,

pcolor(YI,XI,HI),
shading interp
colormap('jet')
plot(y,x,'o','MarkerFacecolor','b')
hold off

Not: v4 interpolasyonu yerine, dier interpolasyon yntemlerini kullanarak aradaki farklar irdeleyiniz.

63
MATLAB/Grafik-Contour Haritas ve 3B izim

Contour (rnein, e ykselti erileri) haritas iin contour ve clabel


fonksiyonlarna,

boyutlu yzey izimleri iin mesh, surf, surfl ve surfc fonksiyonlarna


baknz.

surfc fonksiyonu ile oluturulmu bir yzey grafii

64
MATLAB/Dosya Yazdrma-Okuma

Program sonularnn otomatik olarak farkl bir dosyaya yazdrlmas veya bir dosyadaki
bilgilerin okunarak program ierisinde kullanlmas, programclkta olduka sk bavurulan
kt alma ve veri girii yntemleridir.

Dosya yazdrma, kt almaya; Dosya okuma ise veri giriine karlk olan ilemlerdir.

Matlabde dosya yazdrma, en basit biimde, diary komutuyla gerekletirilir. Kullanm ise
aadaki biimdedir;

a=10; ki diary komutu arasndaki


command window da yazdrlacak
diary sonuc.txt her trl bilgi, sonuc.txt dosyasna
disp('-----------------') yazdrlr. sonuc.txt dosyas,
mevcut klasrn iinde oluturulur,
disp(a)
diary end rnekteki, sonuc.txt dosyas yerine
baka dosya tr ve isimleri
kullanlabilir.

Yazdrlacak olan dosya, daha


nce oluturulmu bir dosya ise,
kt dosyann iindeki metinin
altna yazdrlr.

65
MATLAB/Dosya Yazdrma-Okuma

Daha gelimi dosya yazdrma, fopen, fprintf ve fclose fonksiyonlarnn kullanm ile
gerekletirilir.

Bu fonksiyonlar ile dosya yazdrmada, yazdrlacak olan metnin command window da


gsterilmesine gerek yoktur.

fopen, program ktlarnn yazdrlaca dosyay aar, fprintf yazdrr ve fclose ise yazdrma
ilemini sonlandrr.

rnein, bir a kenar programda hesaplatlm olsun. Bu programn a ktsn, kenar.txt


isimli bir dosyaya yazdrmak iin, aadaki kodlar dnlr;

a=150.0234234;
fid=fopen('kenar.txt','w'); w bu dosyann zerine yazlacan gsterir.
fprintf(fid,'%s%1.4f','kenar uzunlugu=',a); (a mevcut metnin altna yaz demektir)
fclose(fid);

66
MATLAB/Dosya Yazdrma-Okuma

rnek: a=[3.12356 4.12456 1;5.8463 6.45111 2;4 5 6] biiminde verilen bir a matrisini,
elemanlar virglden sonra 4 hane olacak biimde, mat.out dosyasna yazdran bir program
yaznz.

a=[3.12356 4.12456 1;5.8463 6.45111 2;4 5 6]


fid = fopen('mat.out','w');
fprintf(fid,'%1.4f%10.4f%10.4f\n',a);
fclose(fid);

rnek: kenar=1500.123 m ve aciklik=103.3367 grad olan deikenleri, sonuc.out


dosyasna alt alta yazdrnz.

kenar=1500.123;
aciklik=103.3367;
fid=fopen('sonuc.out','w')
fprintf(fid,'%s%1.3f%s\r\n','kenar=',kenar,' m');
fprintf(fid,'%s%1.4f%s','aciklik=',aciklik,' grad');
fclose(fid)

67
MATLAB/Dosya Yazdrma-Okuma

Matlabde dosyalarn iindeki metnin okunmas iin textread fonksiyonu bulunmaktadr.


rnein, aada koordinat.txt dosyasndaki verilerin okunmas istensin:

P1 1000.1234 1300.23423
P2 1300.5673 1450.98563
P3 2000.1500 2000.11000
P4 3500.3100 1000.12000

Nokta isimleri x koordinatlar y koordinatlar

Bunun iin,

[nokta,x,y]=textread('koordinat.txt','%s%f%f')

fonksiyonu kullanlr. nokta, nokta isimlerini ieren bir hcre dizisi; x, x koordinat vektr
ve y, y koordinat vektr olarak atanr.

68
MATLAB/Dosya Yazdrma-Okuma

rnek: Koordinat dosyas, aadaki gibi olan bir koordinat.txt dosyasndan, nokta isimlerini,
x ve y koordinatlarn textread fonksiyonu kullanarak uygun deikenlere ataynz.

Nirengi koordinatlar
NN x(m) y(m)
P1 1000.1234 1300.23423
P2 1300.5673 1450.98563
P3 2000.1500 2000.11000
P4 3500.3100 1000.12000

[nokta,x,y]=textread('koordinat.txt','%s%f%f','headerlines',2)

'headerlines komutu ve ardndan gelen say, dosyann balangcndan itibaren ka tane satrn
dikkate alnmayacan gsterir.

koordinat.txt dosyasnda ilk iki satr alnmadan nokta isimleri, x ve y koordinatlar okunmutur.

69
MATLAB/Fonksiyon Dosyas Oluturma

Matlab fonksiyonlar (rnein, inv, disp, num2str,det, textread) kullancnn bir baka
programa gerek duymakszn temel ilemleri kolayca yapabilmesini salar.

Kullanclar kendi fonksiyonlarn gelitirebilirler.

Fonksiyonlar, bir m-dosyas biiminde saklanr ve bu dosyalara, fonksiyon dosyalar ad


verilir.

Fonksiyon oluturmann iki nemli getirisi vardr:

Srekli olarak uygulanan bir ilem iin kod tekrarn nler (rnein, aklk as iin yazlm bir
fonksiyon aciklik ise, programn ilgili yerinde aciklik(X1,Y1,X2,Y2) fonksiyonu (1-2)
veya (2-1) aciklik acisini dorudan retecektir.

Fonksiyonlarda kullanlan deikenler yereldir (local variables). Yani workspace iinde dier
program trlerinin deikenleri (global variables) gibi yer igal etmezler.

70
MATLAB/Fonksiyon Dosyas Oluturma

rnek: Koordinatlar bilinen iki nokta arasndaki yatay uzunluu hesaplayan kenar isimli bir
fonksiyon oluturunuz.

Fonksiyonlarn, biim olarak, dier


programlardan tek fark,

function output=fonk_ismi(input)

ile balamas ve fonksiyon dosyasnn


sonunda end ile bitmesidir.

function komutunun bulunduu ilk


satrdan hemen sonra gelen aklama
(comment) satrlar, ilgili fonksiyonun
yardm metinleridir.

Fonksiyon ismiyle, fonksiyon


dosyasnn ismi ayn olmaldr.

71
MATLAB/Fonksiyon Dosyas Oluturma

rnek: Hem aklk asn hem de kenar uzunluunu reten aci_kenar isimli bir fonksiyon
oluturunuz.

Bir fonksiyonun birden fazla kts olabilir.


Bu rnekte a ve S gibi iki kt
bulunmaktadr.

a, aklk asn, S ise kenar uzunluunu


gstermektedir.

aci_kenar(X1,Y1,X2,Y2) komutuyla, ilk


output, yani aklk asn belirten a
deikeni retilir.

72
Matlab Hzl Eriim Klavuzu

Temel Komutlar Semboller

help y Bir y fonksiyonu iin yardm % Aklama getirme ifadesi


clear Atanan tm deikenlerin [ ] Matris girme ifadesi
silinmesi ( ) ndis ve deer girme ifadesi
clear x Bir x deikeninin silinmesi = Deiken atama ifadesi
pwd alma klasr yolu ; Matrislerde satr ayrac.
demo Matlab demo penceresi Ayrca, iinde "=" bulunan
save Matris kaydetme bir ilemin gsterilmemesi
load Matris geri arma : Kolon ifadesi
clc alma penceresinin ans Deiken atanmam en son
temizlenmesi ilem iin varsaylan
deiken ismi (answer)
Matematiksel Operatrler { } Hcre dizisi
x.adi x yap dizisi
+ Toplama
- karma Sabit terimler
* arpma
/ Blme pi says
^ st alma eps 2.2204e-016 says
.* Elemanter arpm inf Sonsuz (belirsiz) ifadesi
./ Elemanter blme
.^ Elemanter st alma Trigonometrik Fonksiyonlar
sqrt Kk alma
abs Mutlak deer sin,cos,tan,cot Trig. Fonksiyonlar

Mantksal Operatrler asin,acos,atan,acot Ters Trig. ifadeler

& Ve Logaritmik Fonksiyonlar


| Veya
~ Deil log Doal logaritma
/ Blme exp Eksponansiyel

Karar Operatrleri Lineer Cebir Fonksiyonlar


> Byktr det(x) Bir x matrisinin determinant
< Kktr inv(x) Bir x matrisinin tersi
>= Byk eittir trace(x) Bir x matrisinin izi
<= Kk eittir diag(x) Bir x matrisinin kegen
== Eittir elemanlar
~= Eit deildir diag(y) Kegenleri, bir y vektrnn
elemanlar olan kegen matris
zeros Sfr matris
ones Birler matrisi
eye Birim matris
eig zdeer ve zvektr bulma

1
Matlab Hzl Eriim Klavuzu

Yazdrma Fonksiyonlar Baz matematiksel fonksiyonlar

fprintf Bir ifadenin yazdrlmas sum(x) Bir x vektr elemanlarnn


sprintf Bir ifadenin bir karakter dizisine toplam
atanmas diff(x) Bir x vektr elemanlarnn
disp Bir ifadenin ekran kts olarak ardk farklandrlmas
gsterilmesi mean(x) Bir x vektr elemanlarnn
ortalamas
Karakter dizisi fonksiyonlar median(x) Bir x vektr elemanlarnn
orta deeri (medyan)
num2str(x) Bir x saysn bir karaktere sort(x) Bir x vektr elemanlarnn
atama kkten bye sralanmas
str2num(x) Karakter olan bir x saysn max,min En byk ve en kk deer
say deerine atama bulma
char(a) a hcresini bir karaktere sortrows lgili stuna gre kkten
atama bye sralama
char(s1,s2,) s1,s2, karakterlerinden
yeni bir karakter dizisi
Programlama
oluturma
lower(s) Bir s karakter dizisinin tm
elemanlarn kk harf
if/end Eer koulu
yapma for/next Dng
upper(s) Bir s karakter dizisinin tm while/end while dngs
elemanlarn byk harf input Deiken girdirme
yapma
isnumeric Bir deikenin say olup izim
olmadn sorgulama
ischar Bir deikenin karakter plot 2 boyutlu grafik
olup olmadn sorgulama plot3 3 boyutlu grafik
iscell Bir deikenin hcre olup hist,bar Histogram ve bar grafikleri
olmadn sorgulama surf,mesh Yzey grafikleri
Hazr GUI'ler figure izim penceresi oluturma
(ki veya daha fazla saydaki
grafikleri ayr pencerelerde
msgbox leti penceresi gstermek iin)
inputdlg Deer girme penceresi hold on, Farkl grafikleri ayn eksen
questdlg Soru diyalog penceresi hold off takmnda izdirme
uigetfile Open file diyalog penceresi komutlar
uigetdir Open directory diyalog pen. axis Eksen komutu
Uiputfile Save file diyalog penceresi axis equal Eksenleri eit lek katsays
ile leklendirme
Say yuvarlatma fonksiyonlar stem ubuk grafik
plotyy ift y eksenli grafik
fix Sfra yuvarlatma errorbar Hata bar grafii
floor Negatif sonsuza yuvarlatma
ceil Pozitif sonsuza yuvarlatma
round En yakn tam sayya
yuvarlatma

You might also like