Professional Documents
Culture Documents
Muhammet Cagatay Matlab
Muhammet Cagatay Matlab
22.12.2013
www.muhammetcagatay.com
Sayfa - 0 -
NDEKLER : ____________________________________________________
SAYFA NO
www.muhammetcagatay.com
Sayfa - 1 -
www.muhammetcagatay.com
Sayfa - 2 -
Matlab; c , c++ , fortran gibi geleneksellemi dillerin aksine , matrislere dayal olarak, bilim
adamlar ve mhendislere problem zmeye yardmc olan, yksek performansl bir paket
programdr.
1. Matris laboratuar olarak da isimlendirilir.
2. Matlab bir yorumlaycdr yani sonu bir hesap makinesi tarznda ekrana yazl bir
metin olarak dndrlr.
3. Dier dillerde olduu gibi bir derleyiciye (decompliere) ihtiya yoktur.
4. Matlab alm ngilizce MATrix LABoratoryden gelmektedir.
Matlab kullanarak;
1.
2.
3.
4.
5.
6.
7.
Matematiksel hesaplamalar,
Algoritma gelitirme ve kod yazma (programlama),
Grafiksel arayz (GUI) oluturma,
Modelleme ve simlasyon (benzetim),
Resim ileme, 2D ve 3D grafiklerinin izimi
Veri analizi,
Lineer cebir, istatistik, Fourier analizi, filtreleme, optimizasyon, saysal integrasyon
vb. konularda hazr matematik fonksiyonlara ulam,
8. Gerek dnya artlarnda uygulama gelitirme kolaylkla yaplabilir.
MATLAB VE DEKENLER
1. Matlabda dier programlama dillerinden farkl olarak her ey bir matris olarak
dnlr.
2. Deikenler matlab deyimleri ierinde saysal deerlerin yada metinlerin (string)
yerini alan ifadelerdir.
3. Matlab, bir deiken ile karlatnda otomatik olarak deiken oluturur ve yeteri
kadar bellek ayrr. Eer deiken daha nce zaten oluturulmu ise yalnzca ierii
deitirilir ve gerekiyorsa yeni bellek ayrr.
4. Dier dillerde olduu gibi matlabn da deikenler konusunda kat kurallar vardr.
DEKEN TANIMLAMA KURALLARI
1. Deiken isimleri byk kk harf kullanmna duyarldr. Yani orta , Orta , ORTA ,
oRTa drd de farkl deikenlerdir.
2. Deiken isimleri 63 karakter ierebilir, 63 ten sonrasn derleyici dikkate almaz.
3. Deiken isimleri rakam ile balayamaz. rnek 1sayi yerine sayi1 demelisiniz.
4.
5.
6.
7.
www.muhammetcagatay.com
Sayfa - 3 -
OPERATRLER
toplama
karma
arma
blme
st alma
parantez
+
*
/
^
()
&& = ve operatr
2+3
2-3
2*3
2/3
2^3
2*(5+3)
|| = veya operatr
Not 1 : toplam = toplam + 1 toplam deerini 1 arttrr. toplam++ diye bir ifade yoktur !
Not 2 : Matlabda matematikteki ilem ncelik sras aynen geerlidir. ( yukardaki tabloya
gre alltan ste doudur. )
MATEMATKSEL FONKSYONLAR
Fonksiyonlar matlabta temel programlama aralardr ve matlabn kendi hazr fonksiyonlar
bulunduu gibi, kullanc endi fonksiyonunu kendisi de yazabilmektedir.
sins
sin
sin(x)
kosins
cos
cos(pi)
tanjant
tan
tan(pi)
arksins
asin
asin(pi)
2
stel (e , e^x)
exp
exp(2)
10
Doal logaritma ln ( log e )
log
log(10)
10 tabanl logaritma
log10
log10(10)
karekk
sqrt
sqrt(b)
Mutlak deer
abs
abs(3)
Log5(x) =
Log10 (x) / log10 (5) Taban deitirme
Not 3 : Trigonometrik fonksiyonlar a deerlerini radyan cinsinden alrlar, dereceye
evirmek iin
forml kullanlr.
15.973000000000001
15.97
15973/1000
15.9730
Pi saysn gsterir.
Tarihi verir.
Saati verir
Yuvarlama fonksiyonu.
Ekran temizler. ( deikenleri silmez )
Tanmlanan deikenleri gsterir.
Tanmlanan deikenleri ve zelliklerini gsterir.
Tanmlanan tm deikenleri siler.
Matlabda bir ilemin ne kadar zaman aldn gsterir.
Xx komutu hakknda yardm almak iin kullanlr. Bunun yerine xx
yazp klavyeden F1 tuuna basmak daha kolay olur.
www.muhammetcagatay.com
Sayfa - 5 -
MATLABDA DZLER
Dizi ( array ) : en genel tann ile numerik ya da metinsel deerler topluluudur. Matlabda her
ey matris olduu iin diziler de matris olarak dnlr. Dizi en temel veri elemandr.
1 x 1 dizisi bir skaler gsterir.
1 x n dizisi de bir vektr gsterir.
www.muhammetcagatay.com
Sayfa - 6 -
>> zeros(n,1)
>> zeros(n)
>> zeros(n,n)
>> ones(1,n)
>> ones(n,1)
>> ones(n)
>> ones(n,n)
>> Rand ( m , n ) veya Rand ( n ) = 0 ile 1 arasnda deien rastgele say deeri retir.
Not : Rand fonksiyonu ile oluturulan say deerleri >> round fonksiyonu ile tam deere
yuvarlanabilir. 0,5 ten byk olanlarn sonucu 1 , kk olanlarn sonu ise 0 olur.
rnek : 0 ile 10 arasnda 5 tane say retmek iin >> round ( 10 * rand (1,5)) komutu
kullanlr.
>> floor (a) = a saysn tam deer olana yuvarlar. rnek : 2,87 yi 2 yapar
>> lenght (a) = a vektrnn eleman saysn verir.
>> size (a) = a matrisinin boyutunu verir.
>> size (a,1) Satr saysn ve >> size (a,2) stn saysn verir.
>> sum (a) = a vektrnn elemanlarnn toplamn verir. Eer bu fonksiyon bir matrise
uygulanrsa her bir stundaki elemanlarn toplamn verir.
>> min (a) ve >> max (a) = a vektrnn minimum ve maksimum elemanlarn verir. Bu
fonksiyon bir matrise uygulanrsa her bir stundaki minimum ve maksimum elemanlar
buluruz.
>> det (a) = a matrisinin determinantn verir. ( karesel matrisler iin geerlidir )
>> inv (a) = a matrisinin tersini verir.
>> diag (a) = a matrisinin apraz elemanlarn verir.
>> num2str(x) = Sayy metinsel ifadeye evirir.
www.muhammetcagatay.com
Sayfa - 7 -
MATLABDA PROGRAMLAMA
Bilgisyar programlar yazlrken genelde belli bir kalp ve kurallara uyulur. Bunlar ;
1.
2.
3.
4.
5.
senaryo olan ( script ) dz yaz m dosyas, zel bir grevi yerine getirmek iin gerekli matlab
komutlarnn sakland bir metin dosyasdr.
Bu dosyay oluturmak ve matlab komutlarn yazmak iin editr kullanlmaldr.
Dier dillerin aksine matlabn kendi editr bu i iin ok kullanldr.
rnek : dardan girilen yarap deerine gre dairenin alan ve evresini hesaplayan
program ;
clc;
r = input(' yaricap giriniz : ');
alan = pi * r * r;
cevre = pi * 2 * r;
fprintf(' alan : %f, \n cevre : %f \n ',alan,cevre);
www.muhammetcagatay.com
Sayfa - 8 -
\n =
\t =
%s =
%d =
%f =
%e =
%g =
salar.
rnek kullanm :
rnek : Kullancdan 3 tane say isteyip toplayp ortalamasn bulan program yaznz.
clc;
a=input(' 1. sayiyi
b=input(' 2. sayiyi
c=input(' 3. sayiyi
ort=(a+b+c)/ 3;
fprintf ('sayilarin
giriniz ');
giriniz ');
giriniz ');
ortalamasi = %f', ort);
KARILATIRMA OPERATRLER
==
>
<
<=
>=
~=
:
:
:
:
:
:
Eit midir ?
Byk mdr ?
Kk mdr ?
Kk eit midir ?
Byk eit midir ?
Eit deil midir ?
www.muhammetcagatay.com
Sayfa - 9 -
>0
0 =
1
(1+ln )
1
( + 2 )
=
=
1
(+ln )
1
(1++ 2 )
clc;
x = input(' x degeri giriniz : ');
if ( x <=0 )
f=1/(1+x^2);
g=1/(1+x^2+x);
else
f=1/(1+log(x));
g=1/(x+log(x));
end
fprintf(' f : %g, \n g : %g \n ',f,g);
www.muhammetcagatay.com
Sayfa - 10 -
Tek bir if deyimi programn iki seenekten birini semek iin kullanlr. Fakat birok
program iin tek bir if deyimi yetersiz kalr ve bu gibi durumlarda i ie if ya da if else if
yaps kullanlr. ie if kullanlrken dikkat edilmesi gereken husus bir if ierisinde yalnzca
bir tane ele kullanlmasdr. Bir else kendinden nce gelen en yakn if ile ilikilidir.
en kk say : %d \n ',a);
en kk say : %d \n ',c);
en kk say : %d \n ',b);
en kk say : %d \n ',c);
www.muhammetcagatay.com
Sayfa - 11 -
rnek : 0 ile 10 arasnda rastgele retilen bir sayy bulmak iin kullancdan say isteyen ve
girilen saynn retilen saydan byk m, kk m yada eit mi olduunu bulan matlab
programn yaznz.
clc;
uretilen = round ( 10 * rand (1,1));
girilen = input(' tahminizi giriniz : ');
if ( uretilen < girilen )
fprintf(' daha kk bir say giriniz ');
elseif ( uretilen > girilen )
fprintf(' daha byk bir say giriniz ');
else
fprintf(' tebrikler buldunuz
');
end
www.muhammetcagatay.com
Sayfa - 12 -
3. FOR DNGS : balang, biti ve adm deerleri arasnda dnen bir dngdr.
Eer admlarnz birer birer artyor ise adm deerini yazmasanz da olur.
EKRAN IKTISI :
rnek : Kullancdan istenen bir saynn faktriyelini hesaplayan matlab programn yaznz.
clc;
sayi =input(' bir sayi giriniz : ');
if(sayi>0)
faktoriyel =1;
& arpm olduundan ilk deeri 1 aldk
for i=1:1:sayi
faktoriyel = faktoriyel * i;
end
fprintf(' %d ',faktoriyel);
else
fprintf(' saynz 1 den kk olamaz ');
end
(1)2
=0 2k+1
programn yaznz.
clc;
toplam =0;
for i=0:1000000
sonuc=(((-1)^i))/((2*i)+1);
toplam=toplam+ (4* sonuc);
end
fprintf(' toplam = %g' ,toplam);
www.muhammetcagatay.com
Sayfa - 13 -
rnek : Bilinen bir alt deikenden st deikene kadar olan saylarn ardk toplamn
ekrana yazdran matlab program yaznz.
clc;
toplam=0;
bas=input('bir balang deeri giriniz : ');
son=input('bir biti deeri giriniz : ');
if bas>son
fprintf('balang deeri biti deerinden byk olmamal !');
else
for i=bas:1:son
toplam=toplam+i;
end
fprintf('toplam : %d ',toplam);
end
rnek : Klavyeden girilen bir say iin, eitliliini kontrol eden matlab programn yaznz.
1
=1
1
+1
=
2
2
clc;
carpim=1;
n = input(' bir sayi giriniz : ');
for k =1:n
carpim = carpim * (1 - ( 1 / (k^2)));
end
sonuc = (n+1)/(2*n);
if carpim==sonuc
fptintf('girdiiniz sayi eitlii saliyor');
else
fptintf('nalesef girdiiniz sayi eitlii salamiyor');
end
rnek : Kp 4000 den byk ve 3 ile blnebilen en kk doal sayy bulan program
yaznz.
clc;
sayi=1;
x=1;
while x==1;
if ( (sayi^3)>=4000 && mod(sayi,3)==0 )
fprintf('\n aranan rakam : %d ' ,sayi);
x=0;
else
fprintf('olmad : %d ' ,sayi);
sayi=sayi+1;
end
end
www.muhammetcagatay.com
Sayfa - 14 -
E DNGLER
Algoritma gelitirirken bir dng ierisine bir veya daha fazla dng kullanmak gerekebilir.
Bu gibi durumlarda dardaki dngnn bir kez dnmesi sonucu ierdeki dng tam
dngsn tamamlayacaktr. Yani ilk olarak ierdeki dng tamamlanacaktr.
rnek : Resimdeki gibi 10 x 10 arpm tablosunu ekrana yazdran matlab programn yaznz.
clc;
fprintf('
%3d %3d %3d %3d %3d %3d %3d %3d %3d %3d
\n',1,2,3,4,5,6,7,8,9,10);
fprintf('-------------------------------------------\n');
for i=1:10
fprintf('%2d |',i);
for j=1:10
fprintf('%3d ',i*j);
end
fprintf('\n');
end
1
2
3
14
! + ! + ! + +
!
2
3
4
15
clc;
toplam=0;
for i=2:15
faktoriyel=1;
for j=1:i
faktoriyel=faktoriyel*j;
end
sonuc = (i-1)/faktoriyel;
toplam =toplam+sonuc;
end
fprintf('sonu : %g |', toplam);
www.muhammetcagatay.com
Sayfa - 15 -
WHLE DNGS
1. Belirlenen art salandka dnen dng tipidir.
2. Bu dngde dikkat edilmesi gereken nokta art salandka dngnn srekli
dneceidir. Eer nlem alnmaz ise sonsuz dngye sebep olur.
3. While ve for dngleri birbirinin yerine kullanlabilir, doru olan semek bizim
grevimizdir.
BREAK DEYM
1. Bir dng yada switch case yapsn sona erdirmek iin kullanlan komuttur.
2. Matlab bu komutu grdnde iinde bulunduu dngy sonlandrr ve bu komutun
altndaki komutlar deerlendirmez.
CONTNUE DEYM
Dngy sonraki evirmeye geirir. Bu komutun altndaki komutlar o anki evirme iin
deerlendirilmez.
rnek : Continue kullanarak 1 ile 100 arasndaki tek saylar ekrana alt alta yazdran matlab
programn yaznz.
clc;
for i=1:100
if mod(i,2)==0
continue
end
fprintf(' %d \n ',i);
end
rnek : 10 tl nin yllk yzde 30 faiz ile, 50 tl yi getii ada eit olduu ilk yl ve toplam para
deerini bulan bir matlab program yaznz.
clc;
toplam_para=10;
yil =0;
while(toplam_para <50)
yuzde = toplam_para * 3 /10;
toplam_para = toplam_para + yuzde;
yil =yil +1;
end
fprintf(' ay : %d para : %g \n ' ,yil, toplam_para);
www.muhammetcagatay.com
Sayfa - 16 -
rnek : kullanc negatif say girinceye kadar yeni say isteyen ve girilen saylar toplayan bir
matlab program yaznz.
clc;
toplam=0;
while(1)
sayi = input('sayi giriniz = ');
if( sayi < 0)
break;
end
toplam=toplam + sayi ;
end
fprintf('toplam = %g
', toplam);
rnek : x=10 ve y=7 olmak zere, bu saylarn toplam 52757 den byk oluncaya kadar, x
saysn 2 kez katlayarak toplama ilemine ileme devam ediliyor. Buna gre x says ka kez
katlanmtr.
clc;
x=10;
y=7;
toplam = x+y;
katlanma =0;
while(toplam<52757)
x = 2 * x;
toplam = x+y;
katlanma =katlanma +1;
end
fprintf(' ay : %d ', katlanma);
clc;
for i=1:5
fprintf('\n %d \n', i);
for j=1:3
fprintf('j= %d , ', j);
end
end
www.muhammetcagatay.com
Sayfa - 17 -
www.muhammetcagatay.com
Sayfa - 18 -
rnek : kullancnn girecei bir dzgn okgen iin, i alar toplamn hesaplayan bir
matlab program yaznz.
clc;
cokgen = input('bir okgen giriniz : ','s');
switch cokgen
case 'ucgen'
kenar_sayisi=3;
case { 'dortgen', 'drtgen','4gen' }
kenar_sayisi=4;
case 'begen'
kenar_sayisi=5;
otherwise
fprintf(' geersiz giri \n ' );
end
sonuc = (kenar_sayisi - 2)*180;
fprintf('sonuc : %d \n ',sonuc );
rnek :
clc;
a=10; %balang deeri 10
try
a=a+20; % a nn yeni deeri 30 oldu
a=a+g; % g diye bir say olmaz ( mantk hatas ) bu satr
atlar
catch
a=50; % yeni deeri 50
end
display(a); % sonucu 30 yerine 50 yazar , nk 2. satr
atlar
www.muhammetcagatay.com
Sayfa - 19 -
rnek : 2 x 3 Boyutlu Bir Matrisin Elemanlarn, Klavye Yolu le Kullancdan Alan ve Sonunda
Bu Matrisi Ekrana Yazan Matlab Programn Yaznz.
clc;
A=[];
% A=[2,3]; de yazlabilir
for i=1:2
for j=1:3
fprintf('A(%d,%d) =',i,j);
A(i,j)=input('');
end
end
A
Daha farkl olarak bir matris tek bir seferde de girilebilir. Ancak girilen matrisin istenilen
formda olup olmad kontrol edilmelidir.
clc;
A=[];
fprintf('2 x 3 tipine bi matris giriniz \n' );
A=input('A =');
[x,y] =size(A);
if (x~=2) || (y~=3)
error('matris yanl formda \n');
else
A
End
www.muhammetcagatay.com
Sayfa - 20 -
rnek : kullanc tarafndan girilen 2 adet matrisin toplamn bulan ve ekrana yazan matlab
programn yaznz.
clc;
A=input('birinci matrisi giriniz : ');
B=input('ikinci matrisi giriniz : ');
[x,y]=size(A);
[n,m]=size(B);
if (x~=n) || (y~=m)
error('Toplanamaz !');
else
T=[];
for i=1:x
for j=1:y
T(i,j)=A(i,j)+B(i,j);
end
end
end
T
rnek : kullancdan bir matris ile bir skaler isteyip bunlarn arpmn ekrana yazdran
program yaznz.
clc;
A=input('matrisi giriniz : ');
k=input('skaler k deerini giriniz : ');
[x,y]=size(A);
T=[];
for i=1:x
for j=1:y
T(i,j)=A(i,j) * k;
end
end
T
rnek : kullanc tarafndan girilen matrisin transpozunu ekrana yazdran matlab programn
yaznz.
clc;
A=input('A matrisini giriniz : ');
[x,y]=size(A);
T=[];
for i=1:y
for j=1:x
T(i,j)=A(j,i);
end
end
T
www.muhammetcagatay.com
Sayfa - 21 -
rnek : kullanc tarafndan girilen 2 matrisin arpmn bulan ve ekrana yazan matlab
komutlarn yaznz.
clc;
A=input('A matrisini giriniz : ');
B=input('B matrisini giriniz : ');
[x,y]=size(A);
[n,m]=size(B);
toplam =0;
carpim =1;
if(y~=n)
error('bu matrisler carpilamaz.');
else
C=zeros(x,n);
for i=1:x
for j=1:y
for k=1:m
C(i,j) = C(i,j) + A(i,k) * B(k,j);
end
end
end
end
C
rnek : satr ve stn says kullanc tarafndan girilen deerleri 0 ile 15 aralndaki
tamsaylardan rastgele olarak oluan bir matristeki, sfrlarn adresini ve saysn bulan matlab
programn yaznz.
clc;
x=input('satr giriniz : ');
y=input('stn giriniz : ');
A=round(rand(x,y)*15)
sifirlarin_sayisi=0;
for i=1:x
for j=i:y
if(A(i,j)==0)
sifirlarin_sayisi =sifirlarin_sayisi +1;
fprintf('A(%d,%d) = 0 \n',i,j);
end
end
end
fprintf('A matrisindeki 0 larin says : %d \n', sifirlarin_sayisi);
www.muhammetcagatay.com
Sayfa - 22 -
rnek : kullanc tarafndan girilen bir satr vektrnn elemanlarn tersten yazan baka bir
satr vektr oluturunuz.
clc;
A=input('Matris giriniz : ');
if( size(A,1)~= 1) %size(A,1) satr saysn verir
error('malesef bu satr matrisi ( vektr ) deil ');
else
T=[];
y=size(A,2); %size(A,2) stn saysn verir
k=y;
for i=1:y
T(k)=A(i);
k=k-1;
end
end
T
rnek : kullanc tarafndan girilen bir matrisin yalnzca ilk satrn terse eviren dier
satrlarn aynen yazan matlab komutlarn yaznz.
clc;
A=input('bir Matris giriniz : ');
T=A;
sutun_sayisi=size(A,2);
sayac=sutun_sayisi;
for i=1:sutun_sayisi
T(1,sayac)=A(1,i);
sayac=sayac-1;
end
A
T
SONU :
www.muhammetcagatay.com
Sayfa - 23 -
rnek : Kullanc tarafndan girilen bir matris ile bu matrisin transpozunu arpan matlab
programn yaznz. (Osmangazi niversitesi - matematik ve bilgisayar bilimleri temel bilgi
teknolojileri 1 dersi - 2012 vize2 snav sorusu )
clc;
A=input('A matrisini giriniz : ');
[x,y]=size(A);
T=[];
for i=1:y
for j=1:x
T(i,j)=A(j,i);
end
end
C=zeros(x,x);
for i=1:x
for j=1:y
for k=1:y
C(i,j) = C(i,j) + A(i,k) *
T(k,j);
end
end
end
A
T
C
RNEK UYGULAMALAR 1
rnek :
clc;
sonuc=0;
for i=0:1:50
yenisonuc = 1/ ((2*i)+1) * ((2*i)+2) ;
sonuc=sonuc+yenisonuc;
end
fprintf('sonuc %g ',sonuc);
www.muhammetcagatay.com
Sayfa - 24 -
rnek :
clc;
m=25;
toplam =0;
for i=12:m
sonuc=(5^(3*i))/((7*i)+5);
toplam=toplam+sonuc;
end
fprintf(' toplam = %g',3*toplam);
rnek : Klavyeden 0 4 aralnda girilen bir tamsaynn yaz ile ka olduunu ekrana yazan,
bu deerlerin dnda bir deer girilirse hata veren matlab programn yaznz.
clc;
sayi=input('bir say giriniz : ');
switch sayi
case 0
fprintf('sfr');
case 1
fprintf('bir');
case 2
fprintf('iki');
case 3
fprintf('');
case 4
fprintf('drt');
otherwise
error(' girfiiniz say 0 ile 4 arasnda deil ');
end
rnek : 20 ye kadar olan saylardan 3 ile blnenleri ekrana yazdran program yaznz.
clc;
for i=1:20
if mod(i,3)==0
fprintf('%d \n',i);
end
end
www.muhammetcagatay.com
Sayfa - 25 -
rnek : klavyeden girilen sayya kadar olan tm saylarn toplam ve arpmn ekrana yazdran
matlab programn yaznz.
clc;
sayi=input('sayi gir : ');
toplam =0;
carpim =1;
for i=1:sayi;
toplam =toplam +i;
carpim =carpim *i;
end
fprintf(' toplam = %d , carpim = %d' ,toplam,carpim);
rnek : 3 santimetreyi, klavyeden girilen cm, inch, mm gibi birimlere gre dntrp o
birim trndeki deeri , hatal giri yaplmsa hata mesajn ekrana yazan matlab programn
yaznz.
clc;
x=3.0;
birim =input('birim giriniz :','s');
switch birim
case {'in','inch'}
y = 2.54 * x;
fprintf('%d %s : %d cm ',x,birim,y);
case {'m','metre'}
y=x*100;
fprintf('%d %s : %d cm ',x,birim,y);
case {'milimetre','mm'}
y=x/10;
fprintf('%d %s : %d cm ',x,birim,y);
case {'cm','santimetre'}
y=x;
fprintf( [num2str(x) ' ' birim ':' num2str(y) 'cm' ]);
otherwise
fprintf('bilinmeyen : %s ',birim);
y=nan;
end
www.muhammetcagatay.com
Sayfa - 26 -
rnek : verilen iki adet matrisin elemanlarn kyaslayp bykse 1 deilse 0 olarak yeni bir
matrise deer atayan , boyutlar ayn deilse hata mesaj veren program try cath yapsn
kullanarak yaznz.
clc;
A=[2 5 43];
B=[2 4 -1 ];
try
A
B
C=A>B
catch
fprintf(' dizi boyutlari ayni deil ');
end
rnek : while ve rand komutlarn kullanarak ve ka adet zar ikilisi olacan kullancdan
alarak zar atlar yapp, kan sonular ekrana yazdran matlab programn yaznz.
clc;
n=1; %sifirdan farkl olsun diye
while n~=0
ikili_sayisi=input('ka edet ikili retmek istiyorsunuz ? : ');
uretilen =floor(1+6*rand(ikili_sayisi,2));
fprintf(' - - - - - - - - - - \n');
fprintf('zar : %d\n' ,uretilen);
n=input(' tekrar zar atmak iin 1 e , durdurmak iin 0 a basn : ');
end
fprintf('program durduruldu...');
satrnda, programn devam etmesi iin illa 1 says girilecek diye bir kural yoktur. Sfrdan
farkl olmak koulu ile girilen btn n saylar iin dng ( program )devam eder. Bu zellik
while dngsnn zelliidir.
rnek : Ekrana
clc;
A=ones(3,3);
A
B=5* ones(2,2);
B
A(4:5,4:5)=B;
A
clc;
x=26;
y=53;
gecici=x;
x=y;
y=gecici;
x
y
www.muhammetcagatay.com
Sayfa - 28 -
SIRALAMA ALGORTMASI
Verilen bir A dizisinin (satr vektrnn) elemanlarnn kkten byye doru sralamak iin
matlabda sort(A) fonksiyonu kullanlr. bu dersimizde bu fonksiyonu kullanmadan benzer
algoritmalar nasl yazlabilir bunu inceleyeceiz.
clc;
A=[44,23,1,78,5,6];
A
B=sort(A);
B
rnek : Eleanlar 1 ile 50 arasnda deien 10 elemanl bir dizinin elemanlarn kkten
bye sralaynz.
1. Yol
clc;
A=round(1+49 * rand(1,10));
A
for i=1:length(A)
en_kucuk = i;
for j=i+1:length(A)
if A(j) <A(en_kucuk)
en_kucuk=j;
end
end
gecici =A(i);
A(i)=A(en_kucuk);
A(en_kucuk)=gecici;
end
A
www.muhammetcagatay.com
Sayfa - 29 -
2. Yol :
clc;
A=round(1+49 * rand(1,10));
A
for i=1:length(A)
for j=length(A):-1:1+i
if A(j)<A(j-1)
gecici =A(j-1);
A(j-1)=A(j);
A(j)=gecici;
End
end
end
A
www.muhammetcagatay.com
Sayfa - 30 -
Matlabdaki fonksiyonlar grsel veya metin tabanl olmak zere 2 ekilde elde edilir.
Clc, sin, cos, rand gibi baz fonksiyonlar sistem tarafndan yazlmken baz
fonksiyonlar da kullanc kendisi yazar.
Fonksiyonlarn kendine zg bir isi vardr. Yani, clc, sin,rand gibi sistemin iinde var
olan fonksiyon isimlerini tekrar kullanamazsnz.
Fonksiyonlarn ismi verilirken deiken tanmlama kurallar aynen geerlidir.
(baknz : sayfa 3 )
Her fonksiyon iin bir .m dosyas oluturulmaldr.
m belgesinin ismi ile fonksiyon ayn olmaldr ve ayn belgeye ancak fonksiyonun alt
fonksiyonlar yazlabilir.
Fonksiyon olan m belgesi function anahtar kelimesi ile balar.
Parametre alan fonksiyon editr zerindeki altrma butonu ya da f5 ile
altrlamaz. Komut satrna ilgili parametre ile fonksiyonun ad yazlmaldr.
Fonksiyonlara genellikle bir giri ve k parametresi alnr.
function
function
function
function
function
www.muhammetcagatay.com
Sayfa - 31 -
2 1
+ 2 1
rnek :
, = +
fonksiyonunu matlab
diline eviriniz.
2. yol
clc;
sonuc =fonksiyon1( 10,53);
...
www.muhammetcagatay.com
Sayfa - 32 -
rnek : verilen n saysndan kk olan tm asal saylar listeleyen matlab fonksiyonunu alt
fonksiyon kullanarak yaznz. (Osmangazi niversitesi - matematik ve bilgisayar bilimleri
temel bilgi teknolojileri 1 dersi - 2012 vize2 snav sorusu )
function liste = asal_sayilari_bul(n)
liste=[];
for i=2:n
if(asal_mi(i)==1)
liste=[liste i];
end
end
end
function sonuc = asal_mi(sayi)
bolenler=[];
for i=1:sayi
if(mod(sayi,i)==0)
bolenler=[bolenler i];
end
end
if(length(bolenler)==2)
sonuc=1;
else
sonuc=0;
end
end
www.muhammetcagatay.com
Sayfa - 33 -
function [x,y]=yerlerini_degistir(x,y)
gecici=x;
x=y;
y=gecici;
end
Ekran kts:
kinci Gei:
(14258)
(14258)
(14258)
(12458)
(12458)
(12458)
(12458)
(12458)
Artk dizi sraldr ancak algoritma ilemin bittiini bilmemektedir. Algoritmann dizinin
sralandn anlamas iin btn dizinin zerinden hibir deiiklik yapmadan tam bir gei
yapmas gerekir.
nc Gei:
(12458)
(12458)
(12458)
(12458)
(12458)
(12458)
(12458)
(12458)
www.muhammetcagatay.com
Sayfa - 35 -
rnek : Elemanlar 1 ile 100 arasnda deien 20 elemanl rastgele bir dizi oluturup, bu
diziyi kabarck sralama algoritmas kullanarak sralayan matlab programn yaznz.
(Osmangazi niversitesi - matematik ve bilgisayar bilimleri temel bilgi teknolojileri 1 dersi 2013 vize2 snav sorusu )
1. yol :
clc;
A=[1,20];
for t=1:20
A(1,t)=round(1+99* rand(1,1));
end
for e=1:20
fprintf(' %2d ',A(1,e));
end
for i=1:20
for j=20:-1:1+i
if A(1,j-1)>=A(1,j)
gecici=A(j-1);
A(1,j-1)=A(1,j);
A(1,j)=gecici;
end
end
end
fprintf('\n sirali dizi elemanlar : \n');
for e=1:20
fprintf(' %2d ',A(1,e));
end
2. yol :
clc;
A=round(1+99* rand(1,20));
A
for i=1:20
for j=20:-1:1+i
if A(j-1)>=A(j)
gecici=A(j-1);
A(j-1)=A(j);
A(j)=gecici;
end
end
end
A
www.muhammetcagatay.com
Sayfa - 36 -
Round: Ondalkl ksm 0.5 ten kkse aadaki tamsayya , deilse yukardaki tamsayya
yuvarlar.
Ceil : Ondalkl ksm + a doru yuvarlar
Fix : Ondalkl ksm sfra doru yuvarlar
Flor : Ondalkl ksm a doru yuvarlar.
rnek :
A says
- 2.5
-1.75
-1.25
-0.5
0.5
1.25
1.75
2.5
Ceil(a)
-2
-1
-1
0
1
2
2
3
Fix(a)
-2
-1
-1
0
0
1
1
2
Flor(a)
-3
-2
-2
-1
0
1
1
2
Round(a)
-3
-2
-1
-1
1
1
2
3
Str2num : Verilen string deeri, eer mmknse sayya evirir. Not: 123a gibi bir string
deer sayya dntrlemez.
Num2str : Verilen string deerii mmknse sayya evirir
Fliplr: Verilen listeyi terse evirir. *1,2,3,4] dizisini [4,3,2,1] yapar.
Rem : Bir sayn baka bir saya blmnden kalan verir. ( mod ile ayn ii yapar )
Nargin : Giri yaplan parametre saysn ifade eder
Nargout : k yaplan parametre saysn ifade eder.
Varargin : Tm giri parametrelerini ifade eder
Varargout : Tm k parametrelerini ifade eder.
www.muhammetcagatay.com
Sayfa - 37 -
Fibonacci dizisi : her saynn kendinden ncekiyle toplanmas sonucu oluan bir say dizisidir.
1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, eklinde devam etmektedir.
rnek : 1 ile 1000 arasndaki fibonacci dizi elemanlarn yazdran matlab programn yaznz.
(Osmangazi niversitesi - matematik ve bilgisayar bilimleri temel bilgi teknolojileri 1 dersi
2013 vize2 snav sorusu )
clc;
liste=[];
liste(1)=1;
liste(2)=1;
for i=3:1000
eleman =liste(i-1) + liste(i-2);
liste(i)=eleman;
end
for i=1:1000
fprintf('%d
end
',liste(i));
Ekran kts :
www.muhammetcagatay.com
Sayfa - 38 -
rnek : a bir kare matris ve n bir pozitif tam say olmak zere
= ( )
Olarak tanmlanr. Buna gre herhangi bir matris ve n says verildiinde deerini
hesaplayacak matlab programn alt fonksiyon kullanarak yaznz. (Osmangazi niversitesi matematik ve bilgisayar bilimleri temel bilgi teknolojileri 1 dersi 2013 vize2 snav sorusu )
function sonuc = matrisi_hesapla(A,n)
[x,y]=size(A);
if(x~=y)
error(' malesef matrisiniz kare matris degil ');
else
sonuc=A;
for i=1:n-1
sonuc=carp(sonuc,A);
end
end
end
function C=carp(M1,M2)
x=size(M1);
C=zeros(x);
for i=1:x
for j=1:x
for k=1:x
C(i,j) = C(i,j) + M1(i,k) * M2(k,j);
end
end
end
end
rnek : Girilen n saysna karlk, n satr ve n stundan oluan, * lar kullanarak dik gen
izdiren matlab fonksiyonunu yaznz. (Osmangazi niversitesi - matematik ve bilgisayar
bilimleri temel bilgi teknolojileri 1 dersi 2012 vize2 snav sorusu )
Ekran kts :
function ucgen_ciz(n)
for i=1:n
for j=1:i
fprintf('*');
end
fprintf('\n');
end
www.muhammetcagatay.com
Sayfa - 39 -
Armstrong Saylar : 3 basamakl saylardan, basamak deerlerinin kpleri toplam sayya eit
ise bu sayya Armstrong say denir.
rnein : 153 bir Armstrong saysdr, nk : 13 + 53 + 33 = 153 tr.
Ekran kts :
www.muhammetcagatay.com
Sayfa - 40 -
Decimal-Binary evrimi : Decimal saylar binary saylara evirirken, her say blm 2 ye eit
oluncaya kadar ikiye blnr. kalanlar tersten yazlr.
rnein :
www.muhammetcagatay.com
Sayfa - 41 -
rnek : kilik sistemde verilen bir sayy onluk sisteme eviren matlab fonksiyonunu yaznz.
function sonuc=ikiligi_onluk_yap(ikilik_sayi)
sonuc=0;
ikilik_yazi = num2str(ikilik_sayi);
uzunluk=length(ikilik_yazi);
kuvvet=uzunluk-1;
for i=1:uzunluk
if str2num(ikilik_yazi(i)) > 1
error('sayi hatali formatta');
else
sonuc=sonuc + str2num(ikilik_yazi(i)) * 2^kuvvet;
end
end
end
Ekran kts :
rnek : Onluk tabandan iklik tabana dnmeyi salayacak bir matlab fonksiyonu yaznz.
www.muhammetcagatay.com
Sayfa - 42 -
rnek : Eer sadece 2 adet giri parametresi verilmise, saylar aras uzakl bulan matlab
fonksiyonunu yaznz.
function uzaklik = uzaklik_bul(x,y)
if nargin == 2
fprintf('iki deger aras uzaklk : ');
uzaklik=abs(x-y);
end
end
imdi de ayn rnei giri yaplan ve k yaplan parametre saylarna snr koymadan tekrar
kodlayalm.
function [varargout] =uzaklik_bul(varargin)
x = varargin{1};
y = varargin{2};
if nargin == 2
fprintf('iki deger aras uzaklk : ');
uzaklik=abs(x-y);
varargout{1} = uzaklik;
end
end
www.muhammetcagatay.com
Sayfa - 43 -