You are on page 1of 14

MATLAB ile Temel Programlama

2011 Yrd.Do. Dr. Fahri VATANSEVER



1.1. Giri

MATrix LABoratory ifadesinden oluturulan MATLAB ksaltmas, 1985li yllarda Cleve Moler
tarafndan gelitirilmitir. Matris tabanl matematiksel ilemlerinin hzl ve kolay olarak
gerekletirilmesinin amaland MATLAB programnda grafiksel izimler, simlasyon ortamlar,
etkileimli arayz tasarmlar (Graphical User Interface GUI), a tabanl yazlmlar (MATLAB
WebServer, ASP.NET) gibi birok etkili aralar bulunmaktadr.

lk srmleri FORTRAN diliyle yazlan genel amal MATLAB paket programlama dilinin, daha
sonraki srmleri C / C++ diliyle yazlmtr. MathWorks Inc. tarafndan gelitirilen yksek
performansl saysal hesaplamalar ve grafiksel izimlerin gerekletirilebildii MATLABn zel
uygulama alanlarna ait zmleri de bulunmaktadr. inde barndrd ok sayda ara kutusu
(toolbox) ile zellikle mhendislik problemlerinin zmnde popler duruma gelmitir.

Tablo 1.1 MATLABtaki baz ara kutular
aret ileme Optimizasyon
Grnt ileme Dalgack
Haberleme Sistem tanmlama
Kontrol statistik
Filtre tasarm Finans
Yapay sinir alar Sembolik matematik
Bulank mantk Ksmi dif. denklemler
Genetik algoritmalar Eri uydurma

1.2. MATLAB Editr

MATLAB program altrldnda, ekil 1.1deki ana ekran gelmektedir. Birok programda yer alan
ana menler ve ara ubuklar bu ana ekranda (editrde) de yer almaktadr. Uygulamalar bu komut
satrnda kodlarn yazlmasyla gerekletirilebilecei gibi, MATLAB dosyas (m-file) halinde
yazlarak da gerekletirilebilir. Benzer ekilde grafiksel arayz (GUI) kullanarak da etkileimli
arayz programlar tasarlanabilir. Ayrca Simulink ortamnda da modeller oluturularak altrlabilir.
GUI tasarmna gemek iin komut satrna guide, Simulink ortam iin ise simulink
yazlmaktadr.


ekil 1.1 MATLAB ana ekran

MATLAB komut satrnda ve program kodlarnda kullanlabilecek genel komutlardan bazlar aada
zetlenmektedir.
MATLAB ile Temel Programlama

2011 Yrd.Do. Dr. Fahri VATANSEVER
1.2.1. help

Belirtilen komut ile ilgili hazrlanm olan bilgiyi verir.

Kullanm ekli:
help komut


Komut satr
>> help clc
CLC Clear command window.
CLC clears the command window and homes the cursor.

See also home.

Reference page in Help browser
doc clc

1.2.2. clc

Komut satr penceresini siler.

Kullanm ekli:
clc

1.2.3. home

mleci, sayfa bana getirir; bylece de ekrandaki bilgileri yukar kaydrarak silme ilemini
gerekletirir.

Kullanm ekli:
home

1.2.4. clear

Deikenleri ve fonksiyonlar geici bellekten siler.

Kullanm ekli:
clear alma alanndaki (workspace) tm deikenleri siler.
clear deikenler Aralarna birer boluk braklarak belirtilen deikenleri siler.
clear global Tm genel (global)deikenleri siler.
clear functions Tm derlenmi m ve mex fonksiyonlarn siler.
clear all Tm deiken, global, fonksiyon ve mex balantlarn siler.

1.2.5. who

u anki (aktif) alma alanndaki deikenleri listeler.

Kullanm ekli:
who u anki alma alannda kullanlan deikenleri listeler.
who global Global deikenleri de listeler.
who dosya Belirtilen dosyadaki deikenleri listeler.
who isim Belirtilen isimde (zellikte) olan deikenleri listeler.

1.2.6. whos

who ile kullanm ve grevi ayn olup sonular ayrntl (uzun biimde) verir.

MATLAB ile Temel Programlama

2011 Yrd.Do. Dr. Fahri VATANSEVER

Komut satr
>> clear all
>> a=33;
>> a1=99;
>> b=3;
>> who

Your variables are:

a a1 b

>> whos
Name Size Bytes Class Attributes

a 1x1 8 double
a1 1x1 8 double
b 1x1 8 double

>> who a*

Your variables are:

a a1

1.2.7. save

alma alan deikenlerini, bellee kalc olarak kaydeder.

Kullanm ekli:
save dosya Tm alma alan deikenlerini belirtilen ikili dosya.mata kaydeder.
save dosya isim Sadece ismi verilen deikenleri belirtilen dosyaya kaydeder.
save dosya isim biim Belirtilen biimde dosyaya kaydeder.

1.2.8. load

alma alan deikenlerini bellekten arr (ykler).

Kullanm ekli:
load dosya Belirtilen dosyadaki tm alma alan deikenlerini arr.
load dosya isim Belirtilen dosyadan sadece ismi verilen deikenleri arr.


Komut satr
>> clear all
>> a=10;
>> b=20;
>> save 'ornek1.mat'
>> clear all
>> a
??? Undefined function or variable 'a'.

>> load 'ornek1.mat'
>> a

a =

10

>> whos
Name Size Bytes Class Attributes

a 1x1 8 double
b 1x1 8 double

1.2.9. type

MATLAB dosyasnn (m-file) ieriini komut satrnda gsterir (listeler).

MATLAB ile Temel Programlama

2011 Yrd.Do. Dr. Fahri VATANSEVER
Kullanm ekli:
type dosya

1.2.10. edit

MATLAB dosyas (m-file) dzenlemek iin editrde aar.

Kullanm ekli:
edit dosya

1.2.11. !

letim sistemine ait ilgili komutu, MATLAB ortamnda altrr.

Kullanm ekli:
!komut


1.3. Komut Satrnda lemler

MATLAB komut satrnda ilemler; operatrler, komutlar veya yazlm dosyalar kullanlarak
gerekletirilebilir.


Komut satr
>> 3+5

ans =

8

>> 2*ans

ans =

16

>> a=sqrt(ans)

a =

4

Komut satrnda yazlan/altrlan bir nceki/sonraki ifadeleri armak iin klavyedeki ()
kullanlr. MATLAB programlarnda yazlan ifade tek satra smazsa nokta yazarak () alt
satrdan devam edilir.


Komut satr
>> 3+4-...
5

ans =

2

Eer ilgili ilemin sonucunun grntlenmesi istenmiyorsa noktal virgl (;) ile sonlandrlr.


Komut satr
>> b=5+6;
>>

MATLABdaki tm aklama satrlar yzde (%) sembolyle balar.

MATLAB ile Temel Programlama

2011 Yrd.Do. Dr. Fahri VATANSEVER


Komut satr
>> % rnek aklama
>>

1.4. Deikenler ve Sabitler

MATLABta kullanlan deiken ve sabitler gibi dier tanmlayclar da isimlendirme kurallarna
uygun olarak oluturulurlar. Buradaki deiken isimlerinin ilk 31 karakteri anlamldr. Komut satrnda
veya tek dosyada olan deikenler, nceden bildirimlerine gerek kalmakszn dorudan
kullanlabilirler. Eer ilem sonular herhangi bir deikene atanmazsa otomatik olarak ans
(answer) deikenine atanr.


Komut satr
>> r=10;
>> pi_sayisi=3.14;
>> alan=pi_sayisi*r*r

alan =

314

>> x=5;
>> y=x^3-5*x+10

y =

110

>> w=2000e-3

w =

2


1.5. Karmak Saylar

MATLAB programlarnda; karmak (kompleks) saylar, i ve j karakterlerinden faydalanlarak
dorudan kullanlabilirler.


Komut satr
>> z1=3-4i;
>> z2=5+2j;
>> z1+z2

ans =

8.0000 - 2.0000i

>> z1-z2

ans =

-2.0000 - 6.0000i

>> z1*z2

ans =

23.0000 -14.0000i

>> z1/z2

ans =

0.2414 - 0.8966i

>> z1^3
MATLAB ile Temel Programlama

2011 Yrd.Do. Dr. Fahri VATANSEVER

ans =

-1.1700e+002 -4.4000e+001i

Ayrca karmak saylarda kullanlabilecek baz komutlar, Tablo 1.2de zetlenmektedir.

Tablo 1.2 Karmak saylarda kullanlabilecek baz komutlar
Komut Kullanm ekli Aklama
real real( say ) Belirtilen karmak saynn gerel ksmn verir.
imag imag( say ) Belirtilen karmak saynn sanal ksmn verir.
abs abs( say ) Belirtilen karmak saynn mutlak deerini (uzunluunu/ karmak modln) verir.
angle angle( say ) Belirtilen karmak saynn radyan cinsinden asn verir.
conj conj( say ) Belirtilen karmak saynn karmak (kompleks) eleneini verir.
compass compass( say )


Komut satr
>> z=2+i;
>> real(z)

ans =

2

>> imag(z)

ans =

1

>> abs(z)

ans =

2.2361

>> angle(z)

ans =

0.4636

>> conj(z)

ans =

2.0000 - 1.0000i

>> z'

ans =

2.0000 - 1.0000i


Komut satr
>> z=1+2i;
>> compass(z)

0.5
1
1.5
2
2.5
30
210
60
240
90
270
120
300
150
330
180 0

MATLAB ile Temel Programlama

2011 Yrd.Do. Dr. Fahri VATANSEVER

1.6. Vektrler

MATLAB programlarnda, vektrler kolaylkla tanmlanp ilemlerde kullanlabilirler. Vektr
elemanlar, keli parantez ( [ ] ) iinde aralarna birer boluk braklarak verilirler. Vektrn (dizinin)
ilgili elemanna ulamak iin de vektr adndan sonra parantez iinde indis numaras verilir.
Vektrlerinin ilk indisinin numaras 1dir.


Komut satr
>> % A=(1,3,5,2,4) vektrnn tanmlanmas
>> A=[1 3 5 2 4]

A =

1 3 5 2 4

>> % B=(1+i,2-2i,3-5i) vektrnn tanmlanmas
>> B=[1+i 2-2i 3-5i]

B =

1.0000 + 1.0000i 2.0000 - 2.0000i 3.0000 - 5.0000i


Komut satr
>> a=[3 2 1];
>> b=[2 4 6];
>> a+b

ans =

5 6 7

>> a-b

ans =

1 -2 -5

>> a*b
??? Error using ==> mtimes
Inner matrix dimensions must agree.

>> a.*b

ans =

6 8 6

>> a./b

ans =

1.5000 0.5000 0.1667

>> a.\b

ans =

0.6667 2.0000 6.0000

>> a.^b

ans =

9 16 1

>> a(1)+b(2)

ans =

7

MATLAB ile Temel Programlama

2011 Yrd.Do. Dr. Fahri VATANSEVER



Komut satr
>> % A=(1,2,3,4,5,6) eklinde elemanlar dzgn artan vektr oluturma
>> A=[1:6]

A =

1 2 3 4 5 6


Komut satr
>> % B=(10,8,6,4,2) eklinde elemanlar dzgn azalan vektr oluturma
>> B=[10:-2:2]

B =

10 8 6 4 2

Herhangi bir aral, belirli sayda noktaya blerek de vektrler oluturulabilir:
son
nokta
ilk son
ilk vektor : :

=


Komut satr
>> v=1:3/5:4

v =

1.0000 1.6000 2.2000 2.8000 3.4000 4.0000


Komut satr
>> A=[3 2 1 7 8 9] %A=(3,2,1,7,8,9) vektr/dizisi tanmlanyor

A =

3 2 1 7 8 9

>> A(2:4)=0 %A vektrnn 2-4 indisli elemanlar 0 yaplyor

A =

3 0 0 0 8 9

>> A(2:5)=[10 20 30 40] %A vektrnn 2-5 indisli elemanlar deitiriliyor

A =

3 10 20 30 40 9

>> A(4:end)=1 %A vektrnn 4. indisli elemanndan sonuna kadar olanlar 1 yaplyor

A =

3 10 20 1 1 1

>> A(4:6)=[] %A vektrnn 4-6 indisli elemanlar kesiliyor

A =

3 10 20

>> B=A(1:2) %A vektrnn 1-2 indisli elemanlarndan B vektr oluturuluyor

B =

3 10

>> B'

ans =

3
10
MATLAB ile Temel Programlama

2011 Yrd.Do. Dr. Fahri VATANSEVER

1.6.1. linspace

Dorusal aralkl (lekli) vektrler oluturur.

Kullanm ekli:
vektr = linspace( balang , biti , deer says )


Komut satr
>> V=linspace(0,10,5)

V =

0 2.5000 5.0000 7.5000 10.0000

1.6.2. logspace

Logaritmik aralkl (lekli) vektrler oluturur.

Kullanm ekli:
vektr = logspace( balang , biti , deer says )


Komut satr
>> Z=logspace(0,1,5)

Z =

1.0000 1.7783 3.1623 5.6234 10.0000

1.6.3. size

Dizinin boyutunu verir.

Kullanm ekli:
deiken = size( dizi )

1.6.4. length

Vektrn uzunluunu verir.

Kullanm ekli:
deiken = length( dizi )


Komut satr
>> A=linspace(1,5,5)

A =

1 2 3 4 5

>> size(A)

ans =

1 5

>> length(A)

ans =

5


MATLAB ile Temel Programlama

2011 Yrd.Do. Dr. Fahri VATANSEVER

1.7. Matrisler

Vektrlerde olduu gibi matris elemanlar da keli parantez ( [ ] ) iinde aralarna birer boluk
braklarak verilirler. Matrisler; yatay veya dikey vektrlerin oluturduu tablo biimindeki iki boyutlu
yaplar olduklarndan, her bir satr bitimi noktal virgl ( ; ) ile belirtilir. Matrisin ilgili elemanna
ulamak iin de matris adndan sonra, parantez iinde ve aralarna virgl konularak satr stun indis
numaras verilir. Yine vektrlerde olduu gibi satr/stunun ilk indis numaras 1dir.



Komut satr
>> A=[2 3;5 4] % A matrisi tanmlanyor

A =

2 3
5 4

>> B=[1 4;7 6] % B matrisi tanmlanyor

B =

1 4
7 6

>> A+B % A ve B matrisleri toplanyor

ans =

3 7
12 10

>> A-B % A matrisinden B matrisi karlyor

ans =

1 -1
-2 -2

>> 3*A % Sabit say ile arpma

ans =

6 9
15 12

>> A*B % A ve B matrisleri arplyor

ans =

23 26
33 44

>> A.*B % A ve B matrisleri eleman eleman arplyor

ans =

2 12
35 24

>> A/B % A matrisiyle B matrisinin tersi aplyor (sa blme)

ans =

0.4091 0.2273
-0.0909 0.7273

>> A\B % A matrisinin tersiyle B matrisi aplyor (sol blme)

ans =

2.4286 0.2857
-1.2857 1.1429
MATLAB ile Temel Programlama

2011 Yrd.Do. Dr. Fahri VATANSEVER

>> A./B % A matrisiyle B matrisi sadan eleman eleman blnyor

ans =

2.0000 0.7500
0.7143 0.6667

>> A.\B % A matrisiyle B matrisi soldan eleman eleman blnyor

ans =

0.5000 1.3333
1.4000 1.5000

>> A^3 % A matrisinin kp

ans =

128 129
215 214

>> A.^3 % A matrisinin her bir elemannn kp

ans =

8 27
125 64

>> A' % A matrisinin transpozesi

ans =

2 5
3 4

>> inv(A) % A matrisinin tersi

ans =

-0.5714 0.4286
0.7143 -0.2857

>> det(A) % A matrisinin determinant

ans =

-7


Komut satr
>> A=[1 2 3;4 5 6;7 8 9]

A =

1 2 3
4 5 6
7 8 9

>> A(2,3) % A matrisinin 2. satr - 3. stun eleman

ans =

6

>> A(3,:) % A matrisinin 3. satr

ans =

7 8 9

>> A(:,2) % A matrisinin 2. stunu

ans =

2
5
MATLAB ile Temel Programlama

2011 Yrd.Do. Dr. Fahri VATANSEVER
8

>> A(2,2:3)=[10 20] % A matrisinin 2. satr 2-3. stun elemanlarn deitir

A =

1 2 3
4 10 20
7 8 9

>> A(1:2,1:2)=[-1 -2;-3 -4] % A matrisinin 1-2. satr 1-2. stun elemanlarn deitir

A =

-1 -2 3
-3 -4 20
7 8 9

>> B=A(1:2,2:end) % A matrisinin 1-2. satr, 2'den sonuncu stuna kadar elemanlar

B =

-2 3
-4 20

1.7.1. zel matrisler

MATLAB programlarnda Tablo 1.3te zetlenen zel matris komutlar kullanlabilir.

Tablo 1.3 zel matris komutlar
Komut Kullanm ekli Aklama
zeros zeros(n)
zeros(m,n)
Elemanlar 0 olan nxn veya mxn tipinde matris oluturur.
ones ones(n)
ones(m,n)
Elemanlar 1 olan nxn veya mxn tipinde matris oluturur.
eye eye(n)
eye(m,n)
nxn veya mxn tipinde birim matris oluturur.
triu triu(a) a matrisinden st gen matris (ana kegen ve st) oluturur.
tril tril(a) a matrisinden alt gen matris (ana kegen ve alt) oluturur.
diag diag(a) a matrisinden kegensel matris/vektr (ana kegen) oluturur.


Komut satr
>> zeros(2) % 2x2 tipinde sfr matris

ans =

0 0
0 0

>> ones(2,3) % 2x3 tipinde 1'lerden oluan matris

ans =

1 1 1
1 1 1

>> eye(3) % 3x3 tipinde birim matris

ans =

1 0 0
0 1 0
0 0 1


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

a =

1 2 3
4 5 6
7 8 9
MATLAB ile Temel Programlama

2011 Yrd.Do. Dr. Fahri VATANSEVER

>> triu(a)

ans =

1 2 3
0 5 6
0 0 9

>> tril(a)

ans =

1 0 0
4 5 0
7 8 9

>> diag(a)

ans =

1
5
9

rnek-1.1: Aadaki denklem sisteminin hem Kramer yntemi hem de ters matris yntemiyle
znz.

3 2 3
6 2
2
3 2 1
3 2 1
3 2 1
= + +
= +
= + +
I I I
I I I
I I I


Bu denklem sistemi Kramer yntemiyle zlrse;

1
2 3 1
1 1 2
1 1 1
3 3 1
6 1 2
2 1 1
1
2 3 1
1 1 2
1 1 1
2 3 1
1 6 2
1 2 1
2
2 3 1
1 1 2
1 1 1
2 3 3
1 1 6
1 1 2
3
6
2
2 3 1
1 1 2
1 1 1
1 2 1
- I I I
V
R
, , =

= =

= =

(
(
(

=
(
(
(

=



Komut satr
>> R=[1 1 1;2 1 -1;1 3 2]; % Katsaylar (direnler) matrisi
>> V=[2 6 3]'; % Kar taraf (gerilimler) vektr
>> D1=[V R(:,[2:3])]

D1 =

2 1 1
6 1 -1
3 3 2

>> D2=[R(:,1) V R(:,3)]

D2 =

1 2 1
2 6 -1
1 3 2

>> D3=[R(:,[1 2]) V]

D3 =

1 1 2
2 1 6
1 3 3
MATLAB ile Temel Programlama

2011 Yrd.Do. Dr. Fahri VATANSEVER

>> I=[det(D1);det(D2);det(D3)]/det(R)

I =

2
1
-1

Ters matris yntemiyle zmde ise

(
(
(

(
(
(

=
(
(
(

(
(
(

=
(
(
(

(
(
(

3
6
2
2 3 1
1 1 2
1 1 1
3
6
2
2 3 1
1 1 2
1 1 1
1
3
2
1
3
2
1
I
I
I
I
I
I


eklinde katsaylar matrisinin tersi alnp kar taraf vektr ile arplr.


Komut satr
>> R=[1 1 1;2 1 -1;1 3 2]; % Katsaylar (direnler) matrisi
>> V=[2 6 3]'; % Kar taraf (gerilimler) vektr
>> I=inv(R)*V

I =

2.0000
1.0000
-1.0000

You might also like