You are on page 1of 47

1

GR

MATLAB, bilimsel almalar ve mhendislik hesaplarnda kullanlabilecek matris esasl
etkileimli bir sistemdir. Aslnda programlamaya ok yatkn olan MATLAB ile karmak saysal
problemler gerek anlamda bir program yazmakszn kolaylkla zlebilir. MATLAB ad
ngilizce MATrix LABoratory (MATris LABoratuar) kelimelerinden elde edilmi bir
ksaltmadr.
Bu notlarn amac, MATLAB kullanmaya balayanlara yardmc olmaktr. Kk bir el
kitab olarak dnlmtr. Notlar okurken bir taraftan da bilgisayarda almak ve eitli
rnekler yapmak faydal olacaktr.
Ayrntl aklamalar iin annda yardm kullanmanz mmkndr. Daha sonra
aklanaca gibi MATLABa girdikten sonra help komutu ile annda yardm alnabilecek
fonksiyonlar listesini grebilirsiniz. help fonksiyonad komutu size zel bir
fonksiyon hakknda ayrntl bilgi verecektir. Mesela help eig komutu ile zdeer
fonksiyonu eig hakkndaki tm kullanm detaylarna ulamak mmkndr. demo komutu
ile MATLABn baz zelliklerini inceleyebilirsiniz.
MATLABn gc ve etkisi bu notlarda gsterilebilenlerin ok tesindedir. Konuyu daha
detayl irdeleyen kitaplar vardr. MATLABn, WINDOWS ortamnda alan eitli srmleri
vardr, ancak bu srmler arasndaki farklar burada anlatlanlar itibariyle nemli deildir.

1. MATLABa giri

WINDOWS ortamnda alrken masa stndeki MATLAB simgesini tklatarak giri
yaplabilir.

2. Matris Girii

MATLABda btn deikenler matris olarak gzetilirler. Boyutu 11 olan bir matrise skaler
ad verilir. O halde mesela 5 says bir skaler veya boyutu 11 olan bir matristir. Btn
deikenlerin bir matris olarak gzetilecei unutulmamaldr. Tek satrl veya tek stunlu
matrislere vektr ad da verilir. Bir skalere de tek elemanl vektr olarak baklabilir.
Yukarda sylenenleri birer rnekle gsterelim.
Skaler veya 11 boyutlu matris veya tek elemanl vektrler:

5 -3 0 1e6 0.55 -6.6666 -1.2e-2 3*0.4/2 6^2.5

Tek satrl matrisler veya vektrler:

[1 2 3] [-1 0 3*6.7] -4:4 [5 exp(1) -402,0]

Tek stunlu matrisler veya vektrler:


[3 [-2;5;5;cos(0)]
5
0]




2
Matrisler

[1 2 3;4 5 6;7 8 9]





Buradaki ilem de ayn sonucu verir.
Bir satr iindeki elemanlar birbirlerinden bolukla veya virglle ayrlmaldr. Saylarn
stel yazlmnda boluk verilmemelidir, 3.49e-7 gibi.

Deikenler
a=[1 2 3;4 5 6;7 8 9] ifadesi 33 lk bir matris oluturacak ve bunu a
deikenine atayacaktr. Deiken isimleri mutlaka alfabetik bir karakterle balamaldr.
Bunun dnda nemli bir snrlama yoktur. te bir ka rnek:
a1=10:-1:0; matlab_degikeni=[a1;2*a1]; x2x=[ ]; cs=cos(0)
nk='Newton Kanunu'; NK='Newton Yasasi'

Matris boyutlarnn bulunmas
MATLABda her deikenin bir matris olarak gzetildii daha nce aklanmt. Bir
matrisin, bir vektrn ya da bir skalerin boyutunu bulmak iin size fonksiyonu kullanlr.
rnekler:

size(4)
ans =
1 1

x=1:10;
size(x)
ans =
1 10

y=x';
size(y)
ans =
10 1

z=[1 2;0 0];
size(z)
ans =
2 2

d1000=[1:1000;2:1001];
size(d1000)
ans =
2 1000

Yukardaki size fonksiyonu yerine length fonksiyonu kullanlrsa bir matrisin en
byk boyutu elde edilir. Yani length(x), max(size(x)) ile edeerdir. Deneyiniz.

Matris elemanlar
Matris elemanlarn bulmak iin ilgili satr ve stunlarn numaralar parantez iinde
virglle ayrlm olarak verilmelidir. Mesela a=[1 2 3;4 5 6;7 8 9] olmak zere a(2,3),
a matrisinin ikinci satr nc stunundaki eleman yani 6 y verecektir. Ayn ekilde x=4:7
olarak tanmlanrsa x(1), 4 olacaktr. y=[0;2;4;6] olarak ifade edilirse y(4), 6 olacaktr.

rnekler:

d=5;
d(1,1)
ans =
5
d(1)
ans =
5

[1 2 3 [
4 5 6 1:3
7 8 9] 4:6
7:9
]

3
r=[0.5 7.6 0 -1];
r(2)
ans =
7.6000

r(1,2)
ans =
7.6000

r(2,1)
??? Index exceeds matrix
dimensions. (indis matris
boyutlarn ayor)

r(3)=4
r =
0.5 7.6 4 -1

r(1:3)
0.5 7.6 4

r(6)=-3
r =
0.5 7.6 4 -1 0 -3

r(5) iin 0 yerletirilmi olduuna dikkat
ediniz.
r([2 2])
7.6000 7.6000

y=r'
y =
0.5000
7.6000
4.0000
-1.0000
0
-3.0000

y(2)
ans =
7.6000

y(2,1)
ans =
7.6000

y(1,2)
??? Index exceeds matrix
dimensions.

y(5)=12
y =
0.5000
7.6000
4.0000
-1.0000
12.0000
-3.0000

a=[1 2 3;4 5 6;7 8 9];

a =

1 2 3
4 5 6
7 8 9

a(2,3)
ans =
6

a(2,:)
ans =
4 5 6

a(:,3)
ans =
3
6
9

a(2:3,[1 3])
ans =
4 6
7 9

a(1:2,3)
ans =
3
6

a([1 2],3)
ans =
3
6

a(1:2,3)=[-3;-6]
a =
1 2 -3
4 5 -6
7 8 9


Matris indisleri vektr ya da matris olabilir. a([1 2;2 3]), veya p=[1 2;2 3] olmak
zere a(p)komutlarn deneyiniz. a([1 2;2 3]) ile a([1 2],[2 3]) arasndaki
fark anlamak iin bu ikisini ayr ayr mutlaka deneyiniz. a(:,2) komutunda st ste iki
noktann (:), ilgili matrisin ikinci stunundaki tm satrlar gsterdiine dikkat ediniz.
4
Yukardaki son rnek matris elemanlarnn nasl deitirilebileceini gstermektedir. a(:) ve
b=a(:) komutlaryla neler bulursunuz, deneyiniz?


3. Matris lemleri

MATLABla aadaki matris ilemlerini yapmak mmkndr:

+ toplama
karma
arpma
^ s
transpoz
\ sadan blme
/ soldan blme

Bu matris ilemleri skalerlere de uygulanabilir. Matris ilemlerinde matris boyutlar
uyumlu deilse bir hata mesaj belirecektir. Ancak bir skalerle bir matris arasndaki ilemlerin
ounda herhangi bir sorun ortaya kmayacaktr. ki matris arasndaki ilemler bir ka trl
olabilir. Mesela iki matrisi eleman eleman arpmakla matris olarak arpmak farkl eylerdir
(matris arpmn hatrlaynz). ki satr matrisinin (vektrnn) matris arpm her zaman bir
hata verecektir (x=1:3 ve y=4:6 olarak tanmlaynz ve x*y ilemini yapmaya alnz).
x ve y satr matrislerini eleman eleman arpmak iin x.*y yazmak gerekecektir. Ayn
ekilde x vektrnn karesini almak iin ya x.*x veya x.^2 yazmak gerekir (sonu [1
4 9]).
Sylediklerimizi rneklemeye alalm.

a) Skaler-skaler ilemleri

3+5
ans =
8

-4+5*2
ans =
6

4-8/2*5
ans =
-16
cos(0)+3^2
ans =
10

-4^2
ans =
-16

(-4)^2
ans =
16

9\18
ans =
2

b) Vektrlerle ilemler

Vektr ilemleri terimi ile eleman eleman yaplan ilemler anlalmaldr. Bunun iin
toplama ve karma hari olmak zere bir ilem iaretinden nce . (nokta) iareti kullanmak
gerekir. Ancak arpmada bir skalerle bir vektr arasndaki ilemde buna gerek yoktur.
Blmede ise vektr bir sayya blerken deil bir sayy vektre blerken nokta iaretine
5
ihtiya vardr. rnekleri dikkatle inceleyiniz. s alrken her durumda nokta iaretine ihtiya
vardr.

3+[1 2 3]
ans =
4 5 6

1:3+1
ans =
1 2 3 4

(1:3)+1
ans =
2 3 4

a=[1 2 3 4]
5*a
ans =
5 10 15 20

a*5
ans =
5 10 15 20

a/0.5
ans =
2 4 6 8

2/a
??? Error using ==> / (/
yanl kullanlyor)
Matrix dimensions must
agree. (matris boyutlar uyumlu olmal)

a/2
ans =
0.5 1 1.5 2

(1:4)^3
??? Error using ==> ^
Matrix must be square.
(^ yanl kullanlyor)
(Matris kare olmal)

(2:2:10)^2
??? Error using ==> ^
Matrix must be square.


Yukardaki ilemlerde + iaretini - iareti ile deitirerek tekrar yapnz.
Grld gibi ilemlerin bazlarnda hata mesaj belirmektedir. Mesela 2/a iin hata
mesaj kmtr.

a=[2 4 8]

a/2
ans =
1 2 4

a./2
ans =
1 2 4

2/a
??? Error using ==> /
Matrix dimensions must
agree.

2./a
ans =
1 0.5 0.25


a.\2
ans =
1 0.5000 0.2500

2\a
ans =
1 2 4

2.\a
ans =
1 2 4

(1:3)+(6:8)
ans =
7 9 11

x=[1 2 3];
y=[4 5 6];
z=x.*y
z =
4 10 18

z=x./y
z =
0.25 0.4 0.5

z=x.\y
z =
4 2.5 2

z=y./x
z =
6
4 2.5 2

z=y.\x
z =
0.25 0.4 0.5

x=[1;2;3];
y=[4;5;6];
z=x.*y
z =
4
10
18

z=x./y
z =
0.2500
0.4000
0.5000

z=x.\y
z =
4.0000
2.5000
2.0000

z=y./x
z =
4.0000
2.5000
2.0000

z=y.\x
z =
0.2500
0.4000
0.5000

p=[1 2 3]; q=[4 3 0];
z=p.^q
z =
1 8 1
s bir skaler olabilir:

z=p.^2
z =
1 4 9

Taban da bir skaler olabilir:

z=2 .^[p q]
z =
2 4 8 16 8 1

Yukardaki ilemde 2 den sonra bir
boluk vermekte fayda vardr

Bir matris ya da vektrn transpozu satr ve stunun yer deitirmesi olarak tanmlanr.
Bu anlamda bir matris ya da vektrn transpozunu almak iin iareti kullanmak gerekir. te
bir ka rnek:

v1=0:2:6
v1 =
0 2 4 6

v=v1'
v =

0
2
4
6

v2=[0 1 2 -1]'

v2 =
0
1
2
-1

v3=v2'
v3 =
0 1 2 -1



c) Matrislerle ilemler

Yukarda satr ve stun matrislerinin transpozu verilmitir. Bir matrisin transpozuyla
ilgili aadaki rnekleri inceleyiniz.

m=[1:3;4:6] m =
7

1 2 3
4 5 6

n=m'
n =

1 4
2 5
3 6

k=[1 0;1 -9]'
k =
1 1
0 -9

Matematikten bilindii gibi, matris arpm matrislerin karlkl elemanlarnn arpm
deildir. Matris arpm iin sadece * iaretini kullanmak gerekir. Matris elemanlarn
karlkl arpmak iinse .* iaretlerinin birlikte kullanlmas gerekir. rnekleri inceleyiniz ve
kendi kendinize satr ve stun matrisleri de oluturarak matris arpmlar gerekletiriniz.


x=[1 2;3 4]

x =
1 2
3 4

y=[0 -1;2 10]

y =
0 -1
2 10

x*y
ans =
4 19
8 37

x.*y
ans =
0 -2
6 40

v1=0:2:6; v2=1:2:7;
z=v1*v2
??? Error using ==> *
Inner matrix dimensions must
agree. (Birinci matrisin stun says
ikinci matrisin satr saysna eit olmal)

z=v1*v2'
z =
68

z=v1'*v2
z =
0 0 0 0
2 6 10 14
4 12 20 28
6 18 30 42

z=v2*v1'
z =
68

z=v2'*v1
z =
0 2 4 6
0 6 12 18
0 10 20 30
0 14 28 42


Karmak Saylar:

MATLABdaki tm ilemlerde ve fonksiyonlarda karmak saylar kullanmak mmkndr.
Karmak saylar i ya da j kullanlarak girilir. Karmak saylar i=(-1)^0.5 eklindeki tanmla
verilebilecei gibi, mesela jj=(-1)^0.5 eklindeki bir tanmla da girilebilir. Herhangi bir
alma alannda (workspace) karmak saylar rnein i ile verilmise, i deikenine
yaplacak baka bir atamadan sonra karmak saylarla ilem iin i nin tekrar
kullanlamayaca unutulmamaldr. Aada karmak saylarla ilgili bir ka rnek verilmitir.


i
ans =
0 + 1.0000i

z1=1+3i
z1 =
8
1.0000 + 3.0000i

z2=2-4i
z2 =
2.0000 - 4.0000i

z=z1+z2
z =
3.0000 - 1.0000i

z=z1*z2
z =
14.0000 + 2.0000i

z1/z2
ans =
-0.5000 + 0.5000i

z1^2
ans =
-8.0000 + 6.0000i

(1+i)*[2-3i 5 4i]
ans =
5 - 1.0i 5 + 5i -4 + 4i

[i 1+i 2].*[i 1-i i-1]
ans =
-1 2 -2+2i

x=[1+i 1-i;-2-i 4];
y=[3 2-3i;4-5i 6-2i];
x*y
ans =
2 - 6i 9 - 9i
10 - 23i 17 - 4i

x.*y
ans =
3 + 3i -1 - 5i
-13 + 6i 24 - 8i

x
x =
1 + 1i 1 - 1i
-2 - 1i 4

x'
ans =
1 - 1i -2 + 1i
1 + 1i 4

x.'
ans =
1 + 1i -2 - 1i
1 - 1i 4

Son iki transpoz ilemine dikkat ediniz. x
elenik alarak transpoz ilemini yaparken,
x. bildiimiz anlamda transpoz
almaktadr.

alma alan (workspace) bilgileri:

Bir alma yaplrken verilen ve elde edilen deikenler bir alma alannda saklanmtr.
Bunlarn neler olduunu grmek iin who komutunu girmek gerekir. Daha detayl bilgi elde
etmek iinse whos komutu kullanlr. Bilgisayarmz yeni atmz varsayalm ve baz
deikenler tanmlayarak bu komutlar kullanalm.

clear
x=12;y=[-2 4 6 -1 0];
z=(1+i)*x;
m=[1 2;3 0];
[p q]=size(m);

[p q]
ans =
2 2

who

Your variables are:

ans p x z
m q y


Srm 4.2 de:

9

whos
Name Size Elements Bytes Density Complex

ans 1 by 2 2 16 Full No
m 2 by 2 4 32 Full No
p 1 by 1 1 8 Full No
q 1 by 1 1 8 Full No
x 1 by 1 1 8 Full No
y 1 by 5 5 40 Full No
z 1 by 1 1 16 Full Yes

Grand total is 15 elements using 128 bytes

Srm 5.2 de:

whos
Name Size Bytes Class

ans 1x2 16 double array
m 2x2 32 double array
p 1x1 8 double array
q 1x1 8 double array
x 1x1 8 double array
y 1x5 40 double array
z 1x1 16 double array (complex)

Grand total is 15 elements using 128 bytes

Buradaki deikenleri alma alanndan silmek iin clear komutu kullanlr. clear
komutu yalnz bana kullanlrsa tm deikenler silinir. clear deiken_adlar ise
sadece verilen deikenlerin silinmesini salar. Yukardaki deikenlerden bazlarn silerek
who ya da whos komutunu tekrar kullannz.

alma alannn saklanmas

Daha nce sylendii gibi programdan kmak iin quit ya da exit komutlar kullanlr.
Ancak programdan kmadan nce elde ettiimiz deikenleri daha sonra kullanmak zere bir
alma alannda saklamak isteyebiliriz. Bunun iin save alma_alan_ad komutu
kullanlr. Ancak saklamak istediimiz alma alannn farkl bir klasre (directoryye)
yerletirilmesini istiyorsak bunun belirtilmesi gerekir. Byle bir ilemi yaptktan diyelim ki
gn sonra daha nceki alma alann elde etmek ve oradaki deikenleri kullanmak
istiyorsunuz. Bunun iin de load alma_alan_ad komutu kullanlr. rnekleri
inceleyiniz.

cd
C:\MATLAB\BIN

cd \mak

x=1;y=-10:2:10;z=1+i;
m=[-2:1;2:5;9:-1:6];
p=m';

who
Your variables are:
m p x y z

clear x
who
Your variables are:
m p y z

save ders
10

Bu komutlar sonunda mak adl klasrde ders.mat adl bir dosya oluur. ders.mat adl
dosyann uzants olan mat program tarafndan oluturulur. imdi gn sonra yeniden
almaya baladmz varsayalm. ders.mat adl alma alann elde etmek iin u
ilemlere ihtiya vardr:

cd

C:\MATLAB\BIN

cd \mak

load ders

who
Your variables are:
m p y z

yeni=y.^2;

size(yeni)

ans =
1 11

who
Your variables are:
ans p yeni
m y z


Disk Ynetimi

MATLABda baz DOS komutlarn kullanmak mmkndr. Bunlarn balcalar unlardr: dir,
chdir veya cd, delete, type. imdi MATLABn alt klasrden DERS adl klasre geerek
bu komutlar rnekleyelim. Bu klasrde matrisp.m ve seqpow.m adl MATLABla yazlm iki
program vardr. Bu programlarn yaps hakknda daha sonra bilgi verilecektir.

cd

C:\MATLAB\BIN

cd \ders

dir
. .. matrisp.m seqpow.m

dir komutu uzantsna bakmakszn tm dosyalar listeleyecektir. Eer sadece MATLAB'a
ilikin dosyalar olan m ve mat uzantl dosyalar elde etmek istersek what komutunu
kullanmalyz.

type seqpow.m
% seqpow.m
% bir say dizisinin muhtelif kuvvetlerinin hesab
z=1;
while z==1
a=input('diziyi gir ');
b=input('en ok kanc kuvvet ');
n=max(size(a));
c=zeros(b,n);
for i=1:b
c(i,:)=a.^i;
end
c
z=input(' yeni hesap iin 1, kmak iin sfr yaz ');
end
11

imdi delete komutuyla matrisp.m adl dosyay silelim ve yeniden dir komutunu
deneyelim.

delete matrisp.m

delete seqpow
File not found or permission denied.

dir

. .. seqpow.m

seqpow.m adl dosyay da silmek istiyoruz ancak uzants verilmedii iin hata oluuyor. Bir
alma alanndaki deikenlerin clear, bir klasrdeki program ya da dier adyla
fonksiyonlarn silinmesi iin delete komutunun kullanldn unutmaynz. Ekrann
temizlenmesi iin clc, daha sonra grlecek olan grafiklerin silinmesi iin clg veya clf
komutlarnn kullanldn da not ediniz.

kt format

MATLABda btn ilemler ift duyarllkla yaplr (double precision). Ancak bir ilemin
sonucunun ekranda gsterimi iin bir ka seenek vardr. Eer bir matrisin btn elemanlar
tam say ise saylarn ondalkl ksmlar gsterilmez. rnein

s=[0 1 -1 6/3]

eklindeki bir tanmla her zaman

s =
0 1 -1 2

elde edilir. Ancak elemanlardan herhangi birisi tam say deilse, saynn ekranda gsterili
biimi olarak eitli seenekler vardr. Bunlar srasyla format short, format short
e, format long, format long e, format hex ve format + olarak sralanabilir.
format hex, saynn hegzadesimal gsterimi anlamndadr. format + ile matrisin pozitif
elemanlar +, negatif elemanlar -, sfr olan elemanlar bolukla temsil edilir. Dierlerini
rnekleri inceleyerek kavrayabiliriz.

s=[4/3 1.2345e-6 ]

s =
1.3333 0.0000

format short e
s
s =
1.3333e+000 1.2345e-006

format long
s
s =
1.33333333333333 0.00000123450000
12

format long e
s
s =
1.333333333333333e+000 1.234500000000000e-006

format hex
s
s =
3ff5555555555555 3eb4b6231abfd271

format +
s
s =
++

Normal gsterime gemek iin format short ya da ksaca format komutu yeterlidir.

format
s
s =
1.3333 0.0000

s matrisinin ikinci eleman sfr olarak gzkmektedir. Ancak bu sadece ekrandaki
grntdr. Bellekte say gerek haliyle saklanmaktadr. Bunu anlamak iin saynn kendisine
ve 100 ile arpmna bakalm.

s(2)
ans =
1.2345e-006

100*s(2)
ans =
1.2345e-004

format short ile format short g arasndaki fark gzlemek iin aadaki komutlar dikkatle
izlemek yueterlidir.

format short g
s

s =
1.3333 1.2345e-006

Eer bir matrisin en byk eleman 1000 den byk veya 0.001 den kkse tm elemanlara
uygulanmas gereken ortak bir faktr belirir:

s=[5/3 1.2345e-3 -1.25e3]
s =
1.0e+003 *

0.0017 0.0000 -1.2500

Son olarak format compact ve format rat komutundan sz edilebilir. format compact
saylarn ekranda gsteriminde satrlar arasnda boluk verilmesini nler. format rat ise
saylar baya kesir biiminde elde etmek iin kullanlr.
13

format rat
s

s =
5/3 45/36452 -1250

Yardm Kullanm

MATLAB iinde her trl konuda yardm kullanmak mmkndr. Herhangi bir alma
alannda help komutuyla hangi hususlarda yardm alnabilecei grlebilir. zel bir iaret ya
da fonksiyon iin de yardm kullanmak mmkndr. Bunun iin help konu (rnein help
[ veya help inv) komutu yeterlidir. te bir ka rnek:

help inv
INV Matrix inverse.
INV(X) is the inverse of the square matrix X.
A warning message is printed if X is badly scaled or
nearly singular.

help polyfit
POLYFIT Polynomial curve fitting.
POLYFIT(x,y,n) finds the coefficients of a polynomial
p(x) of degree n that fits the data, p(x(i)) ~= y(i),
in a least-squares sense.

See also POLY, POLYVAL, ROOTS.

help sin
SIN Sine.
SIN(X) is the sine of the elements of X.




Basit matematiksel fonksiyonlar

Basit matematiksel fonksiyonlar matrislere eleman eleman uygulanr. Bunlar nce liste
halinde gsterip daha sonra birer rnekle aklamaya alalm. Bu arada 3.1415926
eklindeki pi saysnn MATLABda pi yazlarak elde edildiini hatrlayalm.

Basit matematiksel fonksiyonlar (x bir matrisi gsteriyor)
abs(x) mutlak deer veya karmak saynn modl
angle(x) faz as (karmak sayda), sonu radyan cinsinden
sqrt(x) kare kk
real(x) karmak saynn gerel ksm
imag(x) karmak saynn sanal ksm
conj(x) karmak saynn elenii
round(x) en yakn tam sayya yuvarlama
fix(x) sfra doru yuvarlama
floor(x) a doru yuvarlama
ceil(x) + a doru yuvarlama
sign(x) iaret fonksiyonu (say pozitifse 1, negatifse -1, sfrsa 0 verir)
14
rem(x,a) x deki bir saynn a ya blmnden kalan
exp(x) e
x

log(x) e tabanna gre logaritma
log10(x) 10 tabanna gre logaritma

imdi yukardaki fonksiyonlar birer rnekle aklamaya alalm:

x=[-2.25 4 -9i 3+4i]
x =
-2.2500 4.0000 0-9.0000i 3.0000+4.0000i

abs(x)
ans =
2.2500 4.0000 9.0000 5.0000

angle(x)*180/pi
ans =
180.0000 0 -90.0000 53.1301

Sonucun derece cinsinden bulunmas iin 180/pi ile arpldn not ediniz.

sqrt(x)
ans =
0+1.5000i 2.0000 2.1213-2.1213i 2.0000+1.0000i

real(x)
ans =
-2.2500 4.0000 0 3.0000

imag(x)
ans =
0 0 -9 4

conj(x)
ans =
-2.2500 4.0000 0+9.0000i 3.0000-4.0000i

k=[2 -3 4.1 -4.1 4.4 -4.4 4.5 -4.5 4.9 -4.9 4.999];

round(k)
ans =
2 -3 4 -4 4 -4 5 -5 5 -5 5

fix(k)
ans =
2 -3 4 -4 4 -4 4 -4 4 -4 4

floor(k)
ans =
2 -3 4 -5 4 -5 4 -5 4 -5 4

ceil(k)
ans =
2 -3 5 -4 5 -4 5 -4 5 -4 5

sign([1 2 0 -4 -2.44])
ans =
15
1 1 0 -1 -1

Karmak say halinde, yani X bir karmak say ise,
sign(X) = X ./ abs(X).
Bunun bir dorultunun birim vektrn bulurken yaplan ilemle benzerliini not ediniz.

sign(3-4i)
ans =
0.6000 - 0.8000i

m=[4 5]; b=[2 3];
rem(m,b)
ans =
0 2

4 2 ye blnce 2 kar 0 kalr, 5 i 3 e blnce 1 kar 2 kalr. Benzer bir fonksiyon mod
olup detaylar iin help mod komutundan yararlanabilirsiniz.

x=[0 0.5 1 2 ]

exp(x)
ans =
1.0000 1.6487 2.7183 7.3891

exp(-x)
ans =
1.0000 0.6065 0.3679 0.1353

p=[0.25 1 exp(1) 10 1e2]
p =
0.2500 1.0000 2.7183 10.0000 100.0000

log(p)
ans =
-1.3863 0 1.0000 2.3026 4.6052

log10(p)
ans =
-0.6021 0 0.4343 1.0000 2.0000





Trigonometrik Fonksiyonlar

sin sins
cos kosins
tan tanjant
asin arksins
acos arkkosins
atan arktanjant
atan2 arktanjant (ann birim emberdeki yeri - aadaki aklamaya baknz)
sinh hiperbolik sins
cosh hiperbolik kosins
16
tanh hiperbolik tanjant
asinh hiperbolik arksins
acosh hiperbolik arkkosins
atanh hiperbolik arktanjant

Trigonometrik hesaplarda alarn radyan olarak verilmesi gerektii unutulmamaldr. Ayn
ekilde ters trigonometrik hesaplar sonucunda da sonular radyan cinsinden kacaktr.
Aadaki ilemlerde alar nce derece olarak tanmlanm daha sonra radyana evrilmitir.

d=[0 30 60 90 120 150 180];
r=pi/180*d;

sin(r)
ans =
0 0.5000 0.8660 1.0000 0.8660 0.5000 0.0000

cos(r)
ans =
1.0000 0.8660 0.5000 0 -0.5000 -0.8660 -1.0000

tan([0 30 60 120 150 180]*pi/180)
ans =
0 0.5774 1.7321 -1.7321 -0.5774 0.0000

s=[0 1 -1 0.5 3^0.5/2];

180/pi*asin(s)
ans =
0 90.0000 -90.0000 30.0000 60.0000

180/pi*acos(s)
ans =
90.0000 0 180.0000 60.0000 30.0000

180/pi*atan(s)
ans =
0 45.0000 -45.0000 26.5651 40.8934

atan2 fonksiyonunun genel yaps atan2(y,x) eklindedir. Birim emberi dnelim. y ve x,
iaretleriyle gz nne alnarak ann pozitif x ekseninden llen deeri elde edilir. rnek:



aci=180/pi*atan2(1,1)
aci =
45

aci=180/pi*atan2(-1,1)
aci =
-45

aci=180/pi*atan2(1,-1)
aci =
135

aci=180/pi*atan2(-1,-1)
aci =
-135

aci=180/pi*atan2(-1,0)
aci =
-90

aci=180/pi*atan2(0,-1)
aci =
180

17
nce y eksenindeki deerin verildiini not ediniz.



sinh([1 -1 0 2])
ans =
1.1752 -1.1752 0 3.6269

cosh([1 -1 0 2])
ans =
1.5431 1.5431 1.0000 3.7622

tanh([1 -1 0 2])
ans =
0.7616 -0.7616 0 0.9640

asinh([1 -1 0 2])
ans =
0.8814 -0.8814 0 1.4436

acosh([1 -1 0 2])
ans =
0 0 + 3.1416i 0 + 1.5708i 1.3170

atanh([1 -1 0 2])
Warning: Divide by zero
Warning: Log of zero
ans =
Inf NaN -Inf NaN 0 0.5493+1.5708i

(Dikkat: sfrla blme)
(Dikkat: sfrn logaritmas)
(Inf: sonsuz)
NaN: say deil)





liki Operatrleri

MATLABn iliki operatrleri saylarn karlatrlmasnda kullanlr. Bunlar u ekilde
sralanabilir:


liki Operatrleri
== eit
~= eit deil
< kk
> byk
<= kk eit
>= byk eit

18
liki operatrleri elemanlar karlatrr ve 0 ve 1 lerden oluan ayn boyutta bir matris verir.
Karlatrmada soruya 'evet' cevab veriyorsak sonu 1, 'hayr' cevab veriyorsak 0 dr. Bunu
nermemiz doruysa sonu 1, yanlsa 0 dr diyerek de aklayabiliriz.

u rnekleri inceleyelim:
P=1:9,Q=9-P

P =
1 2 3 4 5 6 7 8 9


Q =
8 7 6 5 4 3 2 1 0
imdi P vektrnn 4 ten byk elemanlarn elde edelim
d=P>4
d =
0 0 0 0 1 1 1 1 1

P nin 4 ten byk elemanlar iin 1 bulunurken, 4 ten kk elemanlar iin 0 elde edilmitir.
"P ile Q nn karlkl elemanlar arasnda eit olan var m" sorusuna cevap arayalm. Bunun
iin esitmi adl bir deiken tanmlayalm

esitmi=P==Q
esitmi =
0 0 0 0 0 0 0 0 0

Burada = ile == iaretlerinin iki farkl maksat iin kullanldklarn gzden karmayalm. P
ile Q nn karlkl elemanlar arasnda birbirine eit eleman olmad iin sonuta hep 0
bulunmutur. P==3 ile Q==3 komutlarn deneyiniz, neler buluyorsunuz?

P>2 komutu ile sfr ve birlerden oluan bir vektr bulunur. Bu ilemin sonucunu baka bir
vektrle ileme sokabiliriz. te basit bir rnek:

yeni=Q-(P>2)
yeni =
8 7 5 4 3 2 1 0 -1

imdi u komutu dikkatle inceleyelim:

yepyeni=Q-P>2

yepyeni =
1 1 1 0 0 0 0 0 0

Grld gibi yeni ile yepyeni deikenleri farkldr. Birincide nce P>2 ilemi yaplp
bulunan Q dan kartlrken, ikincide nce Q dan P kartlm daha sonra 2 ile karlatrma
yaplmtr.

Sz bu noktaya gelmiken MATLAB'da ilemler arasndaki ncelik srasn belirtmekte de yarar
vardr:

MATLAB operatrleri ncelik sras

19
^ .^ ' .'
* / \ .* ./ .\
+ -
: > < >= <= == ~=
| &

Bu tabloda ncelik satra gre belirlenir. O halde s alma ilemi arpma ileminden nce
yaplr. Her satrdaki ilemlerin birbirine gre ncelii yoktur. kinci satr gz nne alalm.
Bir ilemde nce arpma varsa arpma, blme varsa blme yaplr. 2*3-4/2*5 gibi bir ifadede
ilem sras arpma, blme, arpma ve karma eklinde oluur. Btn bunlarn yannda
parantez ii ilemlerin en byk ncelie sahip olduunu hatrlayalm.

Aadaki rnek sfrla blme ileminden kurtulmak iin bavurulan pratik bir yntemi ve
basit bir uygulamay gstermektedir:

Q=Q+(Q==0)*eps
Q =
8.0000 7.0000 6.0000 5.0000 4.0000 3.0000 2.0000 1.0000 0.0000

Burada Q nn son eleman olan 0 zel bir MATLAB says olan eps ile deitirilmitir. eps nin
deeri yaklak olarak 2.2204e-016 dr. Bunun sfr olarak gzkmesi kullanlan format short
dolaysyladr. u komut durumu aklamaya yetecektir:

Q(9)
ans =
2.2204e-016

x sfra giderken
x
x) sin(
lim ifadesi 1 deerini alr. Bu banty u ekilde rnekleyebiliriz:
x=(-3:3)/3

x =
-1.0000 -0.6667 -0.3333 0 0.3333 0.6667 1.0000

sin(x)./x
Warning: Divide by zero.
ans =

0.8415 0.9276 0.9816 NaN 0.9816 0.9276 0.8415

sin(0)/0 tanmsz olduu iin bir uyar alyoruz. imdi 0 erine eps deerini yerletirerek
yeniden deneyelim:

x=x+(x==0)*eps;
sin(x)./x

ans =
0.8415 0.9276 0.9816 1.0000 0.9816 0.9276 0.8415

imdi x=0 iin sin(x)/x doru bir ekilde elde edilmitir.

U ve V matrislerini ele alalm:
20

U =
1 2 4
1 1 1
2 3 1

V =

2 2 2
2 2 2
2 2 2

Aadaki rnekleri inceleyerek iliki operatrleri blmn kapatabiliriz.

U>V
ans =
0 0 1
0 0 0
0 1 0

U==V
ans =
0 1 0
0 0 0
1 0 0

U~=V
ans =
1 1 1
1 0 1
0 1 1

U>=V
ans =
0 1 1
0 0 0
1 1 0

U>1
ans =
0 1 1
0 0 0
1 1 0


U<=1
ans =
1 0 0
1 1 1
0 0 1

Dd=U(:);D=Dd'
D =
1 1 2 2 1 3 4 1 1

D~=1
ans =
0 0 1 1 0 1 1 0 0
21


Bir vektr iindeki negatif saylar sfrla deitirmenin basit bir yolu olarak u rnei
inceleyebiliriz.

y =
1 -3 2 0 7 4 -1 5 4

p=(y>=0).*y
p =
1 0 2 0 7 4 0 5 4

imdi de sfrlar 0.5 ile deitirelim:

p=p+0.5*(p==0)
p =
1 0.5 2 0.5 7 4 0.5 5 4


Mantksal Operatrler

nce bunlar sralayalm, daha sonra rnekleri ele alalm.

Operatr Tanm ve aklama (a ve b birer sayy gsteriyor)

&

VE

a&b, a ve b nin her ikisi de sfrdan farklysa
sonu 1, biri sfrsa sonu 0
| VEYA a|b, a ve b den biri sfrdan farklysa sonu 1,
her ikisi de sfrsa sonu 0
~ DEL ~a, a sfrsa sonu 1, sfrdan farklysa sonu 0

Tablodaki tanmlar a ve b birer say kabulyle verilmitir. Bu operatrlerin matris ve
vektrlerle de kullanlabileceklerini nemle hatrlatalm. Bu durumda operatrlerin matrislerin
karlkl elemanlar zerinde ileme girecekleri aktr. A ve B matrislerini yle
tanmlayalm:








Yukardaki operatrleri A ve B matrislerini gz nne alarak uygulayalm. Uygulamann
karlkl elemanlar zerinde olduunu bir kere daha hatrlayalm.

A&B
ans =
1 0 1
0 1 1
0 0 0

A|B
A =
1 3 -2
0 1 4
0 -1 0
B =
1 0 3
0 2 -2
-1 0 1
22
ans =
1 1 1
0 1 1
1 1 1
~A
ans =
0 0 0
1 0 0
1 0 1


~B
ans =
0 1 0
1 0 0
0 1 0

Ayrca u rnekleri de ilave etmek faydal olacaktr.

[1&1 1&0 0&1 0&0]
ans =
1 0 0 0

[1|1 1|0 0|1 0|0]
ans =
1 1 1 0

~[1 0 -2 2]
ans =
0 1 0 0



Mantksal fonksiyonlar

Fonksiyon Tanm ve aklama (a ve b birer sayy gsteriyor)

xor(a,b)

a ve b den yalnz biri sfrdan farklysa sonu 1, her ikisi de sfrsa
veya her ikisi de sfrdan farklysa sonu 0
any(y) y vektrnn iinde sfrdan farkl bir eleman varsa sonu 1, aksi
takdirde 0
all(y) y vektrndeki btn elemanlar sfrdan farklysa sonu1, aksi
takdirde 0

any ve all fonksiyonlar matrisler iin de kullanlabilir. Bu durumda matrisin her stunu iin
bu fonksiyonlar ayr ayr uygulanm olur. rnekleri dikkatle izlemek konunun anlalmas
iin yeterli olacaktr:

A =
1 3 -2
0 1 4
0 -1 0


xor(A,B)
ans =
0 1 0
0 0 0
1 1 1

any(A)
B =
1 0 3
0 2 -2
-1 0 1
23
ans =
1 1 1


any(any(A))
ans =
1

all(A)
ans =
0 1 0

all(all(A))
ans =
0

imdiye kadar anlatlanlar zellikle if ve while gibi komutlarla birlikte kullanlrlar. lerde
programlama konusunu tartrken bu hususlar zerinde ayrca durulacaktr. Ancak konuyu
kapatmadan bo matris ve find komutu zerinde durmakta yarar vardr. Bo matris elde etmek
iin kullanlacak komut udur:

bm=[]
bm =
[]

Bo matris sfrlar matrisi deildir. Bunun iin yukarda tanmlanm olan bm bo matrisinin
boyutlarna bakalm:

size(bm)
ans =
0 0

imdi de bir sfrlar matrisi oluturup bunun boyutlarn bulalm.

sm=zeros(2)
sm =
0 0
0 0

size(sm)
ans =
2

Bo matrisin ok kullanld bir durum kk bir program parac olarak aada
verilmitir. (Bu program parasn MATLAB komut satrndayken de yazabilirsiniz, aada ilk
satrn bandaki MATLAB komut iaretine dikkat ediniz)

if length(bm)==0
for k=1:3
bm=[bm k^2]
end
end

bm =
1
bm =
24
1 4
bm =
1 4 9

liki operatrlerini kullanarak matris ve vektrlerden belli artlar salayan elemanlar
semek mmkndr. te arpc bir rnek:

sec=[-1 5 0 2 8 4 3 6 -4 0 1 2]
sec =
-1 5 0 2 8 4 3 6 -4 0 1 2

imdi sec adl deikende 1 den byk ve 5 e eit ya da kk olanlar tespit etmeye
alalm:

bs=(sec>1)&(sec<=5)
bs =
0 1 0 1 0 1 1 0 0 0 0 1

imdi bs yi kullanarak yukardaki artlar salayan saylar kartalm:

sec(bs)
ans =
5 2 4 3 2

u husus ilgin bir noktay aklamaya yarayacaktr: Bir deikenin mantksal bir ilemin
sonucu olup olmadn anlamak iin islogical komutu kullanlr. Sonu 1 ise nerme
doru, 0 ise yanltr. Yukardaki bs deikeni mantksal bir ilem sonucunda elde edilmitir
ve bu sebeple sec adl deikenle birlikte kullanlabilmitir.

islogical(bs)
ans =
1

te yandan mantksal bir ilemin sonucu olmayan 0 ve 1 lerden olumu vektrler eleman
seiminde kullanlamazlar. Bir rnekle aklamaya alalm:

qq =
8 -1 -2 7 1 0

birvesfr=[0 1 1 0 0 1];
qq(birvesfr)
??? Index into matrix is negative or zero. See release notes on
changes to logical indices. (Matris indisleri bir veya sfr.
Mantksal indislere ilikin deiiklikler iin kartlan notlara
baknz)

islogical(birvesfr)
ans =
0

bs1ve0=qq<=0
bs1ve0 =
0 1 1 0 0 1
qq(bs1ve0)
ans =
25
-1 -2 0

islogical(bs1ve0)
ans =
1

birvesfr==bs1ve0
ans =
1 1 1 1 1 1

u hususu not edelim: birvesfr ile bs1ve0 deikenleri ayn saylardan olumutur,
yani eittirler. Ancak ikinci deiken mantksal bir ilemin sonucuyken birincisi byle bir
ilemden elde edilmi deildir, yani islogical(bs1ve0) iin 1,
islogical(birvesfr) iin 0 elde ediyoruz. Dolaysyla 1 ve 0 lardan oluan
saylarn matris indisi olarak kullanmlarnda farkl sonular elde edilmitir.

Bir baka nemli fonksiyon olan find geni bir kullanm alanna sahiptir. find komutu ile bir
matris iinde sfrdan farkl olan elemanlarn indisleri elde edilir. te birka rnek:

p =[ 8 0 -2 7 1 0];
find(p)
ans =
1 3 4 5

p nin iinde sfrdan farkl elemanlarn indisleri elde edildi. Yani p nin 1 3 4 ve 5 inci sradaki
elemanlar sfrdan farkldr.

p<=1
ans =1 0 1 1
find(p<=
0 1 1)
ans =
2 3 5 6






GRAFK

MATLABda grafik izmek olduka basittir. ki ve boyutlu grafik izmek iin kullanm
ok kolay bir ok komut vardr. Bunlardan bazlar unlardr:

GRAFK
plot lineer x - y grafii
loglog x ve y eksenleri logaritmik
semilogx yar logaritmik (x ekseni logaritmik)
semilogy yar logaritmik (y ekseni logaritmik)
polar polar grafik
mesh 3 - boyutlu grafik
contour contour grafik
bar ubuk eklinde grafik
26
stairs basamakl grafik

Grafik elde edildikten sonra eksenlerin hangi byklkleri gsterdiini ve grafiin adn
vermek, zgara izgilerini izmek ve grafiin istediimiz bir yerine bir metni yerletirmek
mmkndr. Bunun iin kullanlan komutlar unlardr:

title grafiin ad
xlabel x ekseninin etiketi
ylabel y ekseninin etiketi
grid zgara izgileri
text grafik zerine metin
gtext fareyle konumlandrlan metin

Dier grafik kontrol komutlar:

axis manuel eksen lei
hold (on-off) ekrandaki grafii tut
subplot birden ok grafik iin ekran bl
ginput mouse konumlu girdi
figure yeni grafik penceresi a

imdi bu komutlarn bazlarnn kullanllar zerinde durabiliriz. Burada ele alnmayanlar
iin help komutundan yararlanlabileceini yineleyelim.

Bir deney yaptmz ve aadaki deerleri bulduumuzu dnelim.

Deney No llen Deer
1 0.3
2 0.37
3 0.41
4 0.46
5 0.54
6 0.56
7 0.65
8 0.50

imdi bu tabloyu bir grafik halinde gstermek iin nce llen deerleri d adl bir vektrde
toplayalm:

d=[0.3 0.37 0.41 0.46 0.54 0.56 0.65]

Bunu, x ekseni deney numarasn, y ekseni llen deerleri gstermek zere grafik halinde
grmek iin u komutu kullanabiliriz.

plot(d)

27

ekil 1 lm sonularnn deney numarasna gre grafii

Grld gibi x ekseninde bu eksen iin herhangi bir belirleme yaplmad halde 1 den 8 e
kadar saylar vardr. Bu, ksaca programn eriyi d deki her deeri indis numarasna gre
gstererek izdii eklinde aklanr. Ayn grafii elde etmek iin plot(1:8,d) komutu da
kullanlabilirdi.

imdi de y=sin(x) fonksiyonunun grafiini elde edelim. nce peryodun 2 olduunu
hatrlayalm. 0 ile 2 arasnda x iin muhtelif deerler semek gerekir. Bu deerler grafiin
yatay eksenini oluturacaktr. Daha sonra her x deerine kar gelen sins deeri
hesaplanmaldr. Bunlar da grafiin y eksenini oluturacaktr. Her (x
i
,y
i
) ifti eksen takmnda
iaretlenerek birer izgi ile birletirilirler. O halde hassas eriler elde etmek iin olabildiince
ok (x
i
,y
i
) iftine ihtiya vardr. Hatrlanaca gibi trigonometrik fonksiyonlarn
argmanlarn radyan olarak vermek gerekmektedir. Ancak bunlar derece olarak
deerlendirmek daha kolaydr. Dolaysyla sins fonksiyonunun grafiini izmek iin nce
birer derece aralkla 0 dan 360 dereceye kadar uzanan bir vektr elde edip daha sonra bunu
radyana evirmek mmkndr. Aadaki rnei dikkatle takip edelim:

xd=0:360;
x=xd*pi/180;
y=sin(x);
plot(x,y);

Grafiin yatay eksenindeki deerler radyan olarak gsterilmitir. Bunlar derece olarak
gstermek iin gerekli komut yledir:

plot(xd,y);



28
ekil 2 Sins fonksiyonunun grafii. Yatay eksendeki alar radyan



ekil 3 Sins fonksiyonunun grafii. Yatay eksendeki alar derece

imdi sins ve kosins fonksiyonlarn ayn grafik zerinde gsterelim:

z=cos(x);
plot(xd,y,xd,z)





ekil 4 Sins ve kosins fonksiyonlar ayn grafik zerinde

Bu rnek ayn anda birden ok grafiin izilebileceini gstermektedir. Bunun baka bir yolu
hold fonksiyonunu kullanmaktr. hold fonksiyonu mevcut bir grafii koruyarak bir sonraki
izimin ayn grafik zerinde gsterilmesini salar. Bu moddan kmak iin hold off
komutunu kullanmak gerekir.

plot(xd,y)
hold
Current plot held
plot(xd,z)

Sonu yukardaki grafiin ayns olacaktr. Daha fazla detay iin help hold komutunu
kullannz.

Eer plot komutunun argmanlarndan birisi matris dieri vektr ise plot komutu yatay
eksene vektr, dey eksene matrisin stunlarn yerletirerek izim yapar.
29

m=[y;z];
plot(x,m)

Sonu bir nceki grafiin aynsdr.

Eer argmanlarn yeri deitirilirse, ekil 90 derece dnecektir. Bunun iin plot(m,x)
komutunu kullanmak gerekir. Grnm ekil 5 teki gibidir.




ekil 5 Sins ve kosins fonksiyonlar. Alar dey eksende.

plot komutunun kullanmyla ilgili baka detaylar da vardr. Daha fazla bilgi iin help
plot komutunu deneyiniz.
linspace(m,n) komutu ile m ile n saylar arasnda lineer olarak eit aralkl dalm 100
adet say elde edilir. linspace(m,n,k) komutu ile say adedini k olarak belirleme imkan
vardr. Bu fonksiyonlar kullanarak karmak saylarn grafik komutuyla kullanmlarn ele
alalm.

clear i % i kompleks
r=linspace(0,2); % r vektrn oluturur
theta=linspace(0,10*pi); % theta asn oluturur
[x, y]=pol2cart(theta,r); % polar koordinatlar kompleks
z=x+i*y; % sayya dntrr
plot(z) % kompleks z yi izer














-2 -1.5 -1 -0.5 0 0.5 1 1.5 2
-2
-1.5
-1
-0.5
0
0.5
1
1.5
2
30



ekil 6 plot(z) veya plot(real(z),imag(z)) komutlar, z kompleks.

imdi izgiler, iaretler ve renklere ilikin hususlar gzden geirdikten sonra grafikle ilgili
baz zelliklere tekrar dneceiz.

izgiler, iaretler ve renkler:

Yukardaki rneklerde, MATLAB grafikleri izerken kesiksiz renkli izgi semitir (Burada
siyah olarak baslmtr). plot komutu iinde ilave argmanlar kullanarak izgi biimini ve
renkleri deitirmek mmkndr. Bunun iin kullanlabilecek seenekler unlardr:

Sembol Renk Sembol izgi Biimi Sembol izgi Biimi
y sar . nokta s Kare
m mor o ember d Elmas
c ak mavi x x iareti v gen (yukar)
r krmz + art ^ gen (aa)
g yeil * yldz < gen (sa)
b mavi - kesiksiz izgi > gen (sol)
w beyaz : noktal izgi p Begen
k siyah -. izgi-nokta h Altgen
- - kesikli izgi

Bask teknii burada renkli grafik gsterimine imkan vermemektedir. Ancak aadaki
komutu bilgisayarnzda kullanrsanz hem renklerin, hem de iaretlerin nasl kullanldn
grebilirsiniz. xd, y ve z nin alma sahanzda bulunduundan emin olunuz. ekil 7, siyah ve
beyaz kullanlarak elde edilen bu grafii gstermektedir.

>>plot(xd,y,'g:',xd,z,'r-',xd,y,'wo',xd,z,'c+')








31
ekil 7 Renkler ve iaretlerin kullanl.

plot(0:100,'c')
hold
Current plot held
plot(100:-1:0,'b')
plot(0:100,50*ones(1,101),'g')
plot(50*ones(1,101),0:100,'m')


















ekil 8 Grafik iin deiik bir rnek. Yatay ve dey izgilerin
nasl elde edildiine dikkat ediniz. Bu izgiler eksen izgileri
olarak kullanlabilirler.

Izgara izgileri ve eksen etiketleri

Grafikleri kolay deerlendirme asndan zgara izgileri faydaldr. imdi bir rnek fonksiyon
alp grafiini elde delim ve zgara izgilerini grid komutuyla yerletirelim. Bu komut plot
komutuyla ayn satrda olabilecei gibi ayr bir satr halinde de verilebilir.

y=sin
2
x.cosx
x=linspace(0,2*pi);
y1=sin(x);
y2=cos(x);
y=y1.^2 .*y2;
plot(x*180/pi,y)
grid,shg










0 10 20 30 40 50 60 70 80 90 100
0
10
20
30
40
50
60
70
80
90
100
0 50 100 150 200 250 300 350 400
-0.4
-0.3
-0.2
-0.1
0
0.1
0.2
0.3
0.4
A lar, derece
o
r
d
i
n
a
t
,

m
m
y=(sinx)
2
.cosx
32










ekil 9 Izgara izgileri ve eksen etiketleri

Bu grafiin x eksenine "Alar, derece", y eksenine "ordinat, mm" yazalm. Bunun iin

xlabel('Alar, derece')
ylabel('ordinat, mm')

komutlar kullanlr. Bu iki komut tek satrda da verilebilir. eklin bal olarak da
"y=sin
2
x.cosx" yerletirelim. Bunun iin de u komutu kullanrz:

title('y=(sinx)^2.cosx')

Parantez iindeki ifade ile eklin balndaki ifadeyi karlatrnz, ekil 9. Burada x ekseni
iin kullanlan ifadede Trke karakterler vardr, ancak bunlar zaman zaman beklenmedik
sorunlara yol amaktadr. Zorunlu olmadka ekil iinde Trke karakterler kullanmaktan
kanmakta fayda vardr.





Grafik iine metin yerletirmek

Hazrladmz grafikler zerine aklayc bilgiler yerletirmek istediimizde
kullanabileceimiz komut vardr. Bunlar text, gtext ve legend komutlardr. nce u iki
fonksiyonu tanmlayarak grafiklerini elde edelim.

T
d
=2500 + 300.Sin ; T

=A + 500.Sin2

te gerekli komutlar:

q=(0:360)*pi/180;
Td=2500 + 300*sin(q); T=2500 + 500*sin(2*q);
plot(q*180/pi,Td,'-.k',q*180/pi,T,'k')
grid,shg
axis([0 360 2000 3000]),shg

Grafik ekil 10 da gsterilmitir. axis komutu grafik eksenlerinin leklerini ayarlamak
iin kullanlr. Genel yaps axis([xmin xmak ymin ymax]) eklindedir. Burada axis
komutu kullanlmadan x ekseninin limitleri 0 - 400 olarak belirlenmiken kullanldktan sonra
0 - 360 olarak deimitir. Bu deiiklikleri gzlemek iin yukardaki komutlarn bazlarna
shg ilave edilmitir. Bu komut eklin ekranda fare kullanlmakszn aktif hale getirilmesini
33
salar. Ekran ikiye blp yarsn matlab komut sayfas, yarsn grafik ekran olarak
kullanarak da grid ve axis komutlarnn etkilerini annda gzlemek mmkndr.

nce eksen yazlarn ve bal yerletirelim:

xlabel('ACILAR, derece'),ylabel('Tork, Nm'),title('Kuvvet Analizi')

imdi grafik zerinde (100,2950) konumuyla belirli yere "Makine Dinamii" yazsn
yerletirmeye alalm. Bunun iin text komutu kullanlr.

text(100,2950, 'Makina Dinamii')

O halde text komutunda ller ekil zerinden alnmaldr.

text komutunda koordinatlarn verilmesi zarureti vardr. Bu klfetten kurtulmak iin
gtext komutu kullanlabilir. gtext komutu ile istenilen metin fare ile yerletirilir. te
rnek:

gtext('birinci fonksiyon')
gtext('ikinci fonksiyon')

Bu komutlar girildiinde grafik kendiliinden aktif hale gelir ve fare nerede tklanrsa metin
oradan balanarak yerletirilir. gtext komutu ile yerletirilen bir metni deitirme imkan
yoktur. Dolaysyla kullanmda dikkatli olmak gereklidir.

legend komutu da grafik zerine bir etiket yerletirmek amacyla kullanlabilir.

legend('Td','T')

komutu ile Td ve T nin yerletirilii ekil zerinden izlenebilir. Renkli grafikler halinde
hangi rengin hangi fonksiyona ait olduunun belirtilmesi legend komutu ile salanabilir.
Aadaki grafikte nce Td izildii iin legend komutu nce kesikli izgiyi, sonra kesiksiz
izgiyi gstermitir (yukardaki plot komutuna baknz). Siz grafii renkli izerek legend
komutunu kullanmay deneyiniz.

















0 50 100 150 200 250 300 350
2000
2100
2200
2300
2400
2500
2600
2700
2800
2900
3000
ACILAR, derece
T
o
r
k
,

N
m
Kuvvet Analizi
Makina Dinami i
birinci fonksiyon
ikinci fonksiyon
Td
T
34

ekil 10 text, gtext ve legend kullanarak grafik zerine metin
yerletirilmesi

legend iin genel yapy legend('metin1','metin2',...) olarak verebiliriz. legend
ile yerletirilen metin fare ile tutularak istenilen yere srklenebilir. Yeni legend komutu
eskisini deitirir. Bu komutun kullanmyla ilgili baka detaylar da vardr. help legend ile
detaylar incelemek faydal olacaktr.

Subplot Komutu

Subplot komutu bir grafik ekrann blmeye yarar. Kullanm subplot(m,n,p) eklindedir.
Ekran m tane satr n tane stundan oluan p tane grafik ekran haline getirir. Mesela
subplot(2,2,1) komutu ekran drde bler ve bunlardan birincisini aktif hale getirir. yle bir
tablo yararl olabilir.


subplot(2,2,1)

subplot(2,2,2)

subplot(2,2,3)

subplot(2,2,4)

Aadaki komutlar bir denklemin terimlerinin ayr ayr grafiklerini elde etmekte
kullanlmtr. Hangi grafii aktif hale getirmek istiyorsak o ekranla ilgili subplot komutunun
kullanldna dikkat ediniz. imdi, snml titreim hareketini gsteren u denklemi alalm:
)
3
4
5 sin( 1O ) 5 cos 4 5 sin 3 ( 2
1 25 . O 25 . O
+ = + = |g | c | | c q
| |





















0 2 4 6 8
-2
-1
0
1
2
zaman, s
g
e
n
l
i
k
,

m
m
2*exp(-x)
-2*exp(-x)
0 2 4 6 8
-5
0
5
zaman, s
g
e
n
l
i
k
,

m
m
3*sin(5*t)+4*cos(5*t)
0 2 4 6 8
-10
-5
0
5
10
zaman, s
g
e
n
l
i
k
,

m
m
denklem ve stel zarf
0 2 4 6 8
-10
-5
0
5
10
zaman, s
g
e
n
l
i
k
,

m
m
y1.*y3
35



ekil 11 subplot kullanlarak elde edilmi bir grafik

Bu denklemi, 0<=t<=8 aralnda izelim.

t=linspace(0,8,500);

subplot(2,2,1)
y1=2*exp(-0.25*t); y2=-2*exp(-0.25*t);
plot(t,y1,t,y2),shg
legend('2*exp(-x)','-2*exp(-x)')
xlabel('zaman, s'),ylabel('genlik, mm'),grid

subplot(2,2,2)
y3=3*sin(5*t)+4*cos(5*t);
plot(t,y3),shg
xlabel('zaman, s'),ylabel('genlik, mm'),grid
title('3*sin(5*t)+4*cos(5*t)')

subplot(2,2,3)
plot(t,5*y1,t,5*y2,t,y1.*y3),shg
xlabel('zaman, s'),ylabel('genlik, mm'),grid
title('denklem ve stel zarf'),shg

subplot(2,2,4)
plot(t,y1.*y3),grid,shg
xlabel('zaman, s'),ylabel('genlik, mm')
legend('y1.*y3')

subplot

Yalnz bana subplot komutu ekrann eski haline dnmesini salar. Yani subplot komutu
ile subplot(1,1,1) komutlar ayn ileve sahiptirler. Drdnc grafikle ilgili ilemler
tamamlandktan sonra diyelim ikinciye dnmek mmkndr. kinciyi aktif klmak iin
subplot(222) yazmak gerekir. Saylar arasna virgl koyma mecburiyeti yoktur.

Zoom Komutu

Zoom yakn plan gsterimi olarak anlamlandrlabilir. Bir grafii elde ettikten sonra herhangi
bir ksmna daha yakndan bakmak iin fare ilgili nokta zerinde sol tu kullanlarak tklatlr.
Sol tua her bas grafiin o blgesini bytecektir. Eski hale gelmek iin farenin sa tuu
kullanlmaldr. imdi u denklemin kklerini aradmz dnelim:








36












ekil 12 zoom kullanarak bir denklemin kklerinin yaklak tayini

O sin
2
=

x c
x


stel terim ve harmonik terim ayr ayr izilerek kesim noktalar bulunursa denklemin kkleri
bulunmu olur. Ancak kkleri belirlemek iin ekil 12 deki hassasiyet yeterli deildir. zoom
kullanarak x=3 ile x=4 arasndaki kk daha hassas bir ekilde grlebilir. Sonucu ekil 13 den
izleyiniz.

x=linspace(-5,5,1000);

y5=exp(-x.^2);
y6=sin(x);
plot(x,y5,x,y6)

grid
zoom

imdi grafikte erilerin x=3 ile x=4 arasndaki kesim noktasnda fareyi tklayarak kesim
noktasn daha hassas bir ekilde belirleyebiliriz. Ard arda ikikere tklayarak erinin ilk haline
dnebiliriz. Farenin sa tuu da bu i iin kullanlabilir. MATLAB'n 5.3 ve daha sonraki
srmlerinde zoom zellii grafik ekran zerinde de kullanlabilir. Ayrca grafiin edit
edilmesine olanak salayan zellik, grafik etiketlerinin yerletirilmesine, renklerin
deitirilmesine ve zel renk tanmlamaya, eksenlerin lineer ya da logaritmik olarak
tanmlanmasna ve eksen leklerinin deitirilmesine imkan vermektedir. Izgara izgilerinin
de eksenlere gre seilmesi yine grafiin edit edilmesi ile mmkn olmaktadr.

xlabel('x'), ylabel('f(x)')
legend('exp(-x^2)','sin(x)')

Bu komutlardan sonra yine grafik ekran zerindeki zellikleri kullanarak ekil ierisine metin
yerletirmek izgi ve ok kullanmak mmkn olmaktadr. ekil 13 deki oklar, 'Kok bulma',
'sin(x)' ve 'exp(-x
2
)' ifadeleri bu ekilde yerletirilmitir.






-5 -4 -3 -2 -1 0 1 2 3 4 5
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
37
















ekil 13 zoom kullanarak kklerin daha hassas tayini. Bu ekil,
ekil 12'deki x=3 ile X=4 arasnn bytlmdr.


ekil 13, kkn yaklak 3.1415 olduunu gstermektedir. Bunun da hemen hemen pi saysn
verdiini not ediniz. ekil 12 de eklin simetrisinden bir dier kkn 3.1415 olduunu
grebiliriz. 0 ile 1 arasndaki kk ise yine zoom komutunu veya grafik zerindeki dmeleri
kullanarak 0.6806 olarak elde edilir.

ginput

Grafik zerindeki noktalarn koordinatn elde etmek iin kullanlan bir komuttur.

[x,y]=ginput(n)

komutuyla grafik zerinde bulunan n tane noktann koordinatlarn fareyi kullanarak elde
etmek mmkndr. n noktay tamamlamadan ilemi bitirmek iin enter tuunu kullanmak
gerekir. Bu komut n parametresini vermeden kullanlrsa enter tuuna basana kadar x ve y iin
veri toplamaya devam eder. ekil 12 ya da ekil 13'deki kesim noktalarnn koordinatlarn
elde etmek iin bu komutu deneyiniz. Hassasiyetin nasl deitiini her iki ekilde de kesim
noktalarnn koordinatlarn karlatrarak inceleyiniz. Bu amala, ekil 12 iin
[x1,y1]=ginput(3) ve ekil 13 iin [x2,y2]=ginput(3) ile elde edilen x1 ve x2
deerlerini kullanabilirsiniz.

Bir grafik izdikten sonra onu kaybetmeden baka bir grafik elde etmek iin figure komutunu
kullanmamz gerekir. te rnek: lk komut btn grafik pencerelerini kapatmaya yarar.

close all
x=pi/180*linspace(0,360);

y1=sin(x).^2;
plot(x,y1)

imdi eskisi kalmak zere yeni bir grafik elde edelim.

3.137 3.138 3.139 3.14 3.141 3.142 3.143 3.144 3.145 3.146
-8
-6
-4
-2
0
2
4
6
8
10
x 10
-4
x
f
(
x
)
exp(-x
2
)
sin(x)
Kok bulma
sin(x)
exp(-x
2
)
38
figure
y2=sin(x);
plot(x,y2)

Bir grafik daha oluturup ncekileri de muhafaza etmek iin

h3=figure;
plot(x,y1.*y2)

Daha nce iki grafik bulunduu iin h3'n deeri 3 dr. imdi hangi grafii aktif hale
getirmek istiyorsak ya fareyi onun zerine srkleyip tklamalyz ya da aadaki komutlar
kullanmalyz.

figure(1)
figure(2)
figure(h3)

Bu komutlar grafikleri aktif hale getirmek iin kullanlr. Pencerelerden diyelim ki ikincisini
kapatmak istiyoruz. Bunun iin close(2) komutunu kullanmak gerekir. Kapatmakszn bir
grafik penceresinin sadece ieriini silmek iin clf komutu kullanlr.

Matlab komut sayfasn silmek iin clc komutu kullanlr.








Polar Grafik

Polar koordinatlar kullanarak izilen grafikler baz durumlarda ok daha kullanl
olmaktadr. Bu tr grafikler polar(,r)komutu ile izilir. radyan olarak verilmelidir. te
bir rnek:

) cos( 1 | r + =

fonksiyonunu alalm.

t=linspace(0,2*pi);
r=1+cos(t);
polar(t,r)









0.5
1
1.5
2
30
210
60
240
90
270
120
300
150
330
180 0
1+cost fonksiyonu
Polar Grafik
39












Polar grafik, makine tasarmnda kinematik byklkler deitike farkl deerler alan bir
bileke kuvvetin deiimini izlemekte etkin bir biimde kullanlabilir. Yukardaki fonksiyonu
plot komutunu kullanarak da elde ediniz.

Aada bir drt kol mekanizmasnda gvdeye iletilen kuvvetin yeinliinin (iddetinin) krank
asyla deiimi polar fonksiyonu kullanlarak gsterilmitir. Alar radyan olarak girilmekte
ancak polar fonksiyonu bunu derece olarak gstermektedir. Alarn 0 ile 360 derece arasnda
gsterildiine dikkat ediniz. ten da doru da kuvvetin yeinlii artmaktadr. Bu ekle
bakarak 120 derecelik krank asnda yaklak 5000 N luk bir kuvvetin gvdeye iletildiini
syleyebiliriz. Ancak bu kuvvetin hangi dorultuda etkidiini bu ekle bakarak syleyemeyiz.

Bir sonraki ekilde ise gvdeye iletilen kuvvetin yeinlii ve bunun dorultusu hakknda
bilgiler verecek bir baka polar grafik gsterilmitir. Bu ekle bakarak kuvvetin hangi krank
asnda ilgili deeri aldn belirtemeyiz. Sadece kuvvetin gvdeye hangi dorultuda etki
ettiini grebiliriz. Son ekil ilk iki ekli ayn grafik zerinde gstermektedir.






















5000
10000
15000
30
210
60
240
90
270
120
300
150
330
180 0
Makina gvdesine iletilen kuvvetin (N) krank asyla deiimi
40




























Logaritmik Grafik

trl logaritmik grafik imkan vardr.

semilogx(x,y): x ekseninde 10 tabanl logaritmik eksen kullanlr ve plot(log10(x),y) ile ayn
sonucu verir.
semilogy(x,y): y ekseninde 10 tabanl logaritmik eksen kullanlr ve plot(x,log10(y)) ile ayn
sonucu verir.
loglog(x,y): x ve y eksenlerinde 10 tabanl logaritmik eksen kullanlr ve
plot(log10(x),log10(y)) ile ayn sonucu verir.

Konuya iyi bir rnek, radyan frekans , genlii F olan harmonik bir zorlama altnda hareket
eden tek serbestlik dereceli bir titreim sistemi gz nne alnarak verilebilir. Frekans oran r
ile gsterilirse bytme faktr (M diyelim), k yayn direngenlii, snm oran olmak zere

2
O
2
2 2
2
O
2
4 ) 1 (
1
) / (

+
=
| |
q


denkleminden hareketle,
5000
10000
15000
30
210
60
240
90
270
120
300
150
330
180 0
Kuvvetin (N) iddeti ve etkime dorultusu
41


2 2 2 2
4 ) 1 (
1
r r
M
+
=
eklinde yazlabilir. imdi logaritmik lekle eitli grafikler elde edebiliriz. Bunlara Bode
diyagramlar denildiini de hatrlayalm.























Gerekli komutlar ise yledir:
ksi=0.3;
r=0:0.1:10;
M=1./sqrt((1-r.^2).^2+4*ksi*r.^2);
semilogx(r,M),grid

ksi=0.2 iin de benzer ilemlerin yapldn not edelim.
Logaritmik lekle grafik iin semilogy ve loglog komutlarn da inceleyiniz.














5000
10000
15000
30
210
60
240
90
270
120
300
150
330
180 0
10
-1
10
0
10
1
10
2
0
0.2
0.4
0.6
0.8
1
1.2
1.4
Bytme Faktr
Frekans oran, r
B

t
m
e

F
a
k
t

,

M
42
Programlamaya Giri

Baz ilemleri ardk olarak ve ok sayda yapmak gerekir. Bu durumda ilemlerin bir
program eklinde bilgisayara tantlmas gerekir.

imdi basit bir problemle programlamay tantmaya alalm. ki vektr dnelim. a=[1 7 9
11], b=[2 8 10 12] olsun. imdi bu iki vektrn elemanlarn srayla herbirinden birer eleman
alarak yeniden sralayp yeni bir vektr elde edelim. Bu ilemi a ve b nin eleman says ka
olursa olsun yapacak bir dizi ilemi bilgisayara tantmak iin bir 'program' yazmak gerekir.
Aada byle bir program gsterilmitir. Programda bir ok dng ve ak kontrol eden
deyimler vardr. Bunlar da srasyla inceleyeceiz.

% sirayakoy.m

% Bu program nce a sonra b vektrnden birer eleman alr
% Daha sonra bu ileme devam eder.
% a=[3 5 13 11] ve b=[4 6 14 12] ise c=[3 4 5 6 13 14 11 12] olarak bulunur.
% Program a ile b nin eleman says farkl ise bir uyar verecektir.

a=input(' a vektrn giriniz ');
b=input(' b vektrn giriniz ');

if length(a)~=length(b)
error(' a ile b nin eleman saylar farkl olmamal')
end

c=[];

for i=1:size(a,2)
c=[c a(i) b(i)]
end


Programn detaylarn gstermeden nce a ve b nin farkl baz deerleri iin elde edilen
sonular gsterelim.

sirayakoy
a vektrn giriniz [3 5 13 11]
b vektrn giriniz [4 6 14 12]

c =
3 4
c =
3 4 5 6
c =
3 4 5 6 13 14
c =
3 4 5 6 13 14 11 12

Programn sondan ikinci satrn yle yazdmz varsayalm, yani bir noktal virgl
ekleyelim, c=[c a(i) b(i)];
imdi program bir daha altralm.

sirayakoy
a vektrn giriniz [3 5 13 11]
b vektrn giriniz [4 6 14 12]

Grld gibi programn admlar gzkmyor. stelik sonucu grmek iin c yi sormamz
gerekecektir:

c
c =
43
3 4 5 6 13 14 11 12
Programlamann detaylarn daha sonraya brakarak yukardaki programn baz zelliklerini
aklamaya alalm.

Aklama satrlar (% iareti ile balayan satrlar)

sirayakoy adl programda % iareti ile balayan satrlar program kullanacaklar iin
aklamalar iermektedir. Bu iaretle balayan satrlar ilem satrlar deil aklama
satrlardr. zellikle programn nasl altraca, girdilerin nasl dzenlenecei, ktlarn
neler olduu gibi hususlar bu ekilde belirtilir.

input Komutu

Daha sonraki iki satrda input komutuyla programa veri girii salanmaktadr. input
komutunun kullanlna ilikin baz rnekler gsterelim.

M=input('bir say giriniz M=')
bir say giriniz M=10
M =
10

Noktal virgln (;) etkisini aadaki rnekte izleyelim:

q=input('q matrisini giriniz q=');
q matrisini giriniz q=[2 -9;0.67 2*1.92]

input komutu birden fazla deikeni tanmlamak iin de kullanlabilir:

[m,n]=input('q matisinin boyutunu belirtiniz ')
q matisinin boyutunu belirtiniz size(q)
m =
2
n =
2

Saysal olmayan bir veriyi okutmak iin iki yol vardr: Birincisi veriyi trnak iinde yazmaktr:

kedikap=input('kedi mi byk kaplan mi? ');
kedi mi byk kaplan mi? 'kaplan'

kincisi verinin karakter tipi (string) veri olduunu input komutu bnyesinde tanmlamaktr:

takim=input('kedi mi byk kaplan mi? ','s');
kedi mi byk kaplan mi? kaplan

imdi sirayakoy programndaki dier komutlar ele alalm:

Koul deyimleri

MATLAB'da kararlar if deyimi kullanlarak verilir. Genel kullanm yle aklanabilir:

if mantksal bir ifade
deyimler
end

Konunun bandaki programa dnelim. Eer a ile b nin boyutlar ayn deilse (~=), yani
nerme doruysa, baka bir ifade ile length(a)~=length(b) ileminin sonucu 1 ise if
deyiminin altndaki ifadeler ilenecek, aksi takdirde if deyiminin altndaki ifadeler gz nne
44
alnmayacaktr. Unutmayalm ki mantksal bir ifadenin sonucu ya 1 ya da 0 dr. Bu
sonucun 1 ve 0 lardan oluan bir dizi olabileceini de not edelim. te bir rnek:

Bir matris dnelim. Bu matrisin birinci satrndaki btn elemanlar 10 dan bykse matris
ie yarar, deilse matris ie yaramaz yazan bir program parac oluturalm. Matris ie
yaramaz ise birinci satrn btn elemanlarn 10 ile arpalm. Programn ad exif olsun.

%exif
if A(1,:)>10
'matris ie yarar'
else
'matris ie yaramaz'
A(1,:)=A(1,:)*10;
end
A

imdi program altralm. Bunun iin nce bir A matrisi tanmlayalm:

A =

10 9 8 9
2 0 4 7
6 5 6 2
5 0 8 4

exif
ans =
matris ie yaramaz
A =
100 90 80 90
2 0 4 7
6 5 6 2
5 0 8 4

A matrisinin tanmn program iinde de yapabileceimizi not edelim. Burada if else yapsn
da tanm oluyoruz. Eer if deyiminin izleyen nerme doruysa hemen altndaki komutlar
yerine getiriliyor ve end deyiminin altndaki komutlara sra geliyor; nerme doru deilse if
deyimin altndaki komutlar atlanyor ve else deyiminin altndaki komutlar yerine getiriliyor.
Bunlarn deiik bir kullanl iin de u rnei inceleyelim:

%exifelse
disp('if elseif else ornegi')
disp('')
n=size(a,2);
for i=1:n
for j=1:n
if i==j
a(i,j)=2;
elseif abs(i-j)==1
a(i,j)=-1;
else
a(i,j)=0;
end
end
end
disp('a matrisi')
disp(' ')
disp(a)

Bu program bir a matrisinin diyagonal elemanlarn 2, diyagonalin altndaki ve stndeki
elemanlar 1, dierlerini sfr yapmaktadr. nce bir a matrisi tanmlayalm:
45

a =
100 90 80 90
2 0 4 7
6 5 6 2
5 0 8 4

imdi program altrabiliriz.

exifelse
if elseif else ornegi
a matrisi

2 -1 0 0
-1 2 -1 0
0 -1 2 -1
0 0 -1 2
Programdaki disp komutu parantez iindeki ifadenin ekranda grlmesini salar.

FOR-WHILE Dngleri

sirayakoy adl programda geen nemli komutlardan biri de for komutudur. for- end
arasndaki komutlarn tekrar tekrar yaplmasn istediimizde bu yapya ihtiya vardr. Sz
konusu program c bo vektrne a ve b den birer eleman alarak ilk adm tamamlamaktadr.
Bylece elde edilen c vektrne ikinci admda a ve b den birer eleman daha katlmakta ve
ilem a ve b nin eleman saylar kadar tekrarlanmaktadr.

imdi baka bir rnek ele alalm. Programla ilgili detaylar balangta verilmitir. ie
kullanlan for dnglerine dikkat ediniz. Burada kullanlan bir baka yeni komut pause
komutudur.

% exfor_m.m
% Bu program bir a matrisinin iaretini deitirip
% c matrisini elde etmektedir. Ayrca a matrisinin
% transpozunu bulmak iin de for dngsn kullanmaktadr.
% Bir a matrisinin transpozu iin a' komutu yeterlidir
a=round(10*rand(3));
for i=1:max(size(a))
for j=1:max(size(a))
b(i,j)=a(j,i);
c(i,j)=-a(i,j);
end
end
disp('ilk matris')
a
disp('devam etmek iin bir tua bas')
pause;
disp('iareti deitirilmi matris')
c
disp('matrisin transpozu')
b



exfor_m
ilk matris

a =
4 9 4
6 7 9
8 2 9
46

devam etmek iin bir tua bas
iareti deitirilmi matris

c =
-4 -9 -4
-6 -7 -9
-8 -2 -9

matrisin transpozu

b =
4 6 8
9 7 2
4 9 9


ie gemi for dnglerinde nce iteki dng tamamlanr. Buna bir rnek verelim:

%exFORFOR
% Bu program i ie for kullanmna
% bir rnektir.
h=[];
for m=1:3
for n=1:2
h=[h;[m,n]];
end
end
h

exforfor

h =

1 1
1 2
2 1
2 2
3 1
3 2

for dngsne benzer dier bir deyim olan while programlamada geni bir kullanm
alanna sahiptir. imdi bir ka rnek verelim. Komuttan sonraki nerme doru olduu
mddete (1) ilemler devam edecektir.

%bravo.m
% Ekrandan girilen 1 ile 10 arasndaki bir saynn bil-
% gisayar tarafndan rastgele seilen bir sayya eit
% olmas halinde ekranda 'BRAVO' eklinde mesaj verecek
% ve program durduracak aksi halde ekrandan say giril-
% mesine devam edecek program

while round(10*rand(1))~=input('sayy giriniz ')
end
'bravo'

Lineer olmayan denklem takmlarnn zmnde kullanlan yntemlerden biri
Newton_Raphson yntemidir . while komutu bu yntemin programlanmasnda etkin bir
ekilde kullanlabilir.

Matlabla programlamann bir dier yolu function dosyalarnn kullanmdr. Function
dosyalar programlar iinde tekrarl olarak kullanlabilir. Bir function dosyas altrldktan
47
sonra program iindeki hi bir deiken bellekte kalmaz. Oysa imdiye kadar ele aldmz
programlarda deikenler bellekte tutulurlar.

imdi function dosyas olarak yazlm bir program inceleyelim:

ln(1+x) fonksiyonunun Maclaurin serisi

ln(1+x)=(-1)
k+1
x
k
/k , k=1-

function y=macl(x)
% Bu program ln(1+x) fonksiyonunun Maclauren serisidir.
% ln(1+x)=((-1)^k+1)x^k/k , k=1-
lntop=0;k=1;
while abs((x^k)/k)>=eps
lntop=lntop+((-1)^(k+1))*((x^k)/k)
k=k+1
end
disp('lntop')
disp(lntop)
disp('k=iterasyon says')
disp(k)

Program altrrken x=0 civarnda kalmaya dikkat edilmelidir, aksi takdirde program sonu
vermeyecektir, (niin?).

X=0.5 iin sonu yledir:

macl(0.5)
lntop
0.4055
k=iterasyon says
47
Bu sonucu log(1.5) yazarak kontrol ediniz.

You might also like