You are on page 1of 69

MatLab’de Diziler

 Dizi (array), en genel tanımıyla birbirleri ile ilişkili nümerik veya


metinsel değerler topluluğudur.
 Reel ile kompleks sayıları ifade eden çift kat veya nümerik
diziler (double veya numeric array)
 Metin ifade eden diziler (char array)
 Hücre diziler (cell veya struct array)
 Değişkenler içerisinde yalnız bir tek bilgi depolarken dizileri
kullanarak aynı türden birden fazla bilgiyi saklayabiliriz.
 Programımız içerisinde kullanacağımız 100 adet tamsayıyı 100
farklı değişken içinde saklamak yerine bu amaçla içinde 100
tamsayı saklı bir dizi kullanmak daha mantıklıdır.
 Dizi elemanlarına ulaşmak için indis dediğimiz yapılardan ve
parantezlerden faydalanırız.
 Bir nümerik dizi, skaler, vektör veya matris olabilir ve tüm nümerik
diziler double array formatındadır.

10:12 Dr. A. Muttalip ŞAHINASLAN 192 / 375


MatLab’de Diziler

MatLab’ta her şey bir dizi (array) olarak işlenir. Dizi;


 Tek bir değerden oluşuyorsa (1x1) skaler (scaler) olarak
adlandırılır.
• Ör: a=5 , b= –17.33, c= 2e–3, d= 3+4*i
 Tek bir satır yada sütun, birden fazla değerden oluşuyorsa
(1xn yada nx1 dizisi şeklinde ise) vektör (vector) olarak
adlandırılır.
• Ör: a=[ 1 3 5 7 ]
 Birden fazla satır ve sütundan oluşuyorsa (nxm yada mxn dizisi
şeklinde ise) matris (matrix) olarak adlandırılır.
• Ör: a=[ 1 3 5 7 ; 2 4 6 8 ]

Satırlar arasındaki ayrım « ; » ile yapılır.


 Bu çerçevede 1x1 dizisi sabit matris veya tek elemanlı matris, nx1
dizisi sütun matrisi ve 1xn dizisi ise satır matrisi olarak da
düşünülebilir.

10:12 Dr. A. Muttalip ŞAHINASLAN 193 / 375


MatLab’de Noktanın Önemi

MatLab’de nokta (elemanter–eleman eleman) işlemler

MatLab’de nokta işlemler elemanter yani eleman eleman


gerçekleştirilen işlemleri ifade ederler ve bu amaçla ‘.’
operatöründen faydalanırlar. (Gerçekleştirilecek matematiksel
işlemin operatörünün önünde ‘.’ operatörü kullanılır.)

Eleman Eleman Çarpma : .*


Eleman Eleman Bölme : ./
Eleman Eleman Üs Alma : .^
Ör: b adındaki bir matrisin her bir elemanının karesini almak için
b^2 yerine b.^2 kullanılmalıdır!

Benzer şekilde bir a satır vektörü ile bir b satır vektörünün


aynı indis değerlerindeki elemanlarının çarpımını içeren bir c satır
vektörü elde etmek c=a.*b fonksiyonundan faydalanılmalıdır.

10:12 Dr. A. Muttalip ŞAHINASLAN 194 / 375


string Dizini Oluşturma
String dizisi oluşturma: Bunun için MatLab’da cell veya struct veri yapılarını
kullanabiliriz. Cell genel kullanımlı (generic) bir veri yapısıdır. Bir cell dizisinin her
bir elemanı farklı tipte veri içerebilir.
Ör: İlk elemanı integer, ikinci elemanı string, üçüncü elamanı ise matris olan
bir cell dizisi oluşturabiliriz. Cell veri yapısına atama yapılırken matrislerden
farklı olarak “{ }” parantezleri kullanılır. Aşağıda verilen container değişkeni buna
bir örnek olarak gösterilebilir.
>> container {1} = 1;
>> container {2} = str;
>> container {3} = magic(3);
>> container {4} = 'yeni string';
>> container

container =
[1] 'string islemleri' [3x3 double] 'yeni string'

Struct veri yapısı ise C’deki struct yapısının bir benzeridir. Her türlü
değişken struct içerisinde saklanabilir. Yukarıda tanımladığımız str ve container
değişkenlerini s struct’ı içinde şu şekilde tanımlayabiliriz.
s = struct('String', str, 'Container', container);
10:12 Dr. A. Muttalip ŞAHINASLAN 195 / 375
string Birleştirme

Burada ‘ ‘ içerisinde tanımlanan string’ler, bundan sonra yazılan değişkenin


erişiminde kullanılacak ismidir. Örneğin ‘Container’, struct içerisindeki container
değişkeninin ismidir.
String birleştirme (string concatenation): Bunu yapmanın
>> s.Container
bir kaç faklı yolu vardır. String’leri yan yana yeni bir
ans =
string oluşturacak şekilde veya alt alta bir dizi (karakter
1
matrisi) oluşturacak şekilde birleştirebiliriz.
ans =
string islemleri >> strArray = [str 'string devam' 'bir tane daha']
ans = >> strArray
8 1 6
3 5 7 strArray =
4 9 2 string islemleristring devambir tane daha

Görüldüğü gibi MatLab string’leri girildiği gibi (boşluk veya başka bir karakter
eklemeden) birleştirir. Bu şekilde kullanımı dışarıdan bir fonksiyona parametre
yollayacağımız vakit kullanmamız gerekir. Ama araya boşluk koymayı unutmamalı. Ör:

>> system(['myJavaFunction ' '1 ' '20 ' 'flag ']);


>> ['myJavaFunction ' '1 ' '20 ' 'flag ']
ans =
myJavaFunction 1 20 flag

10:12 Dr. A. Muttalip ŞAHINASLAN 196 / 375


string Birleştirme

Bunun yanı sıra aynı uzunlukta string’leri de alt alta ekleyebiliriz. Bunun
için “;” karakteri stringl’er arasına eklenir. Eğer string’ler aynı boyda değilse
hata mesajı alırsınız.

>> strMatrix = ['string1';'string2';'string3']


strMatrix =
string1
string2
string3

>> strMatrix(1,7)
ans =
1

Dizi işlemleri dışında strcat fonksiyonu kullanarak da string’leri


birleştirebilirsiniz.

strcat('string1','string2','string3')

10:12 Dr. A. Muttalip ŞAHINASLAN 197 / 375


Matris İşlemleri
 Genel Matris Oluşturma
 Özel Matris Oluşturma
 zeros fonksiyonu ile sıfırlar matrisi
 ones fonksiyonu ile birler matrisi
 eye fonksiyonu ile birim matris
 diag fonksiyonu ile köşegen matris
 rand fonksiyonu ile rasgele matris
 Matrisler Üzerinde Temel İstatiksel İşlemler
 sum fonksiyonu ile toplama
 prod fonksiyonu ile çarpma
 sort fonksiyonu ile küçükten büyüğe sıralama
 max fonksiyonu ile en büyük değeri bulma
 min fonksiyonu ile en küçük değeri bulma
 mean fonksiyonu ile ortalama değer bulma
 size fonksiyonu ile satır ve sütun sayısını elde etme
 length fonksiyonu ile matristeki eleman sayısını bulma
 std fonksiyonu ile matristeki değerlerin standart sapmasını hesaplama
 Diğer Matris İşlemleri
 det fonksiyonu ile matrisin türevi
 inv fonksiyonu ile matrisin tersi
10:12 Dr. A. Muttalip ŞAHINASLAN 198 / 375
Matris Oluşturma ve Matris Elemanlarına Erişim
 3 farklı şekilde matris tanımlanabilir;
. . .
» A=[1 2 3 » A = [1 2 3 ; 4 5 6 ;7 8 9] » B(1,1)=1, B(1,2)=2, B(2,1)=3, B(2,2)=4
4 5 6
7 8 9] A= B=
A= 1 2 3 1 2
1 2 3 4 5 6 3 4
4 5 6 7 8 9
7 8 9

 Matris Indeksleme ve Kolon (:) Notasyonu


» % A matrisinin 2.Elemanı » A( : , 2 ) » A( : , [2 3] )
» A( 2 ) ans = 2 ans = 2 3
ans = 4 5 5 6
» A( 4 ) 8 8 9
ans = 2
» % A matrisinin 2.Satırı
1 2 3  » A(2 , : )
A  4 5  6  ans = 4 5 6

7 8 9 
10:12 Dr. A. Muttalip ŞAHINASLAN 199 / 375
MatLab’ de Değişken Türleri ve Değer Atamaları

Herşey matris?

MatLab değişkenlerine değer olarak » % ans değişkeni


aşağıdakilerden herhangi birisi atanabilir: » 2*3
 Matris ans = 6

 Satır Vektörü » ans^2


 Sütun Vektörü ans = 36

 Karakter Dizisi (Katar) (String) » sqrt(ans)


 Skaler ans = 6

10:12 Dr. A. Muttalip ŞAHINASLAN 200 / 375


MATLAB Vektörler

1xn veya mx1 şeklinde tek boyutlu dizi olan vektörleri


oluşturmanın iki temel yolu vardır:
i. Direkt olarak ( [……] ile)
 Satır vektörleri: f = [f1 f2 f3 … fn] ; f = [f1, f2, f3, ..., fn]

 Sütun vektörleri: f = [f1; f2; f3; ...; fn]

ii. Eşit aralıklı elemanlar kullanarak (: ile)


 f = İlk_Değer : Artış_Oranı : Son_Değer
Değişim miktarı belirtilmezse İlk Değer’den sonra 1’er 1’er artım
olacağını ifade eder.
1 2
b(3)=3 ; B(2,5)=3 ; c(2)=3 A= 3 4 3x2 matrix  6 eleman
5 6
Satır # Sütun #
10:12 Dr. A. Muttalip ŞAHINASLAN 201 / 375
(Tek Boyutlu) Satır Vektörlerinin Değişkenlere Değer
Olarak Atanması
satirVektoru  [4  15 3 27] » % satirVektoru
» SV=[4 –15 3 27]
SV = 4 –15 3 27

» SV=[4, –15, 3, 27]


SV = 4 –15 3 27

MatLab’de tek boyutlu diziler (satır vektörleri) ve length fonksiyonu


» S=[1 7 13 21 2] » S(2)
S= ans =
1 7 13 21 2 7

» length(S) » S(3)=16
ans = S=
5 1 7 16 21 2

10:12 Dr. A. Muttalip ŞAHINASLAN 202 / 375


Satır Vektörlerinin İçerisinin Doldurulması

Satır vektörlerinin içerisinin otomatik olarak sayılarla doldurulması:


satirVektoru = ilkDeger : artımMiktarı : sonDeger
Burada; artimMiktarı belirtilmezse ilkDeger den sonra 1’er artar

» % Vektör tanımlama » % Vektör tanımlama


» L=[1 2 3 4 5 ] » S= 1 : 2 : 10
L= S=
1 2 3 4 5 1 3 5 7 9

» V= 1 : 5 » X = 10 : –2 : 1
V= X=
1 2 3 4 5 10 8 6 4 2

10:12 Dr. A. Muttalip ŞAHINASLAN 203 / 375


MatLab’de Tek Boyutlu Diziler
 Bazı durumlarda seçilen artış oranı son değer ile kesişmeyebilir.
İlk_Değer : (SonDeğer – İlkDeğer) / AralıkAdedi : Son_Değer

Ör: » % C Vektörünün tanımlanması


» C= 1 : ( 4 – 1 ) / 5 : 4

C=
1.0000 1.6000 2.2000 2.8000 3.4000 4.0000

Ör: 1’den başlayarak 0.5 artış değerleri ile 5’e kadar sayılardan oluşan bir
vektör tanımlayınız?

» % C1 Vektörünün tanımlanması
» C1= 1 : 0.5 : 5

C1 =
1.0000 1.5000 2.0000 2.5000 3.0000 3.5000 4.0000 4.5000 5.0000

10:12 Dr. A. Muttalip ŞAHINASLAN 204 / 375


(Tek Boyutlu) Sütun Vektörlerinin Değişkenlere Değer
Olarak Atanması
» % Vektör tanımlama
 4  » sV=[ 4 ; 1 ; 123 ]
sutunVektoru   1 
  sV =
123
4
1
123
MatLab’de tek boyutlu diziler (sütun vektörleri) ve length fonksiyonu
» c=[ 6 ; 4 ; 43 ] » c(3)

c= ans = 1 2  3 
6 43
4
43 » c(1)=67 A  4 5  6 
  
» length(c) c= 7 8 9
67
ans = 4
3 43
10:12 Dr. A. Muttalip ŞAHINASLAN 205 / 375
İp Uçları !!!

Bir satır veya sütun vektörü içerisinde tek bir for döngüsü
kullanılarak kolaylıkla gezilebilir.
Eğer bu amaçla oluşturulacak bir for döngüsü i adında bir döngü
değişkeni ile kontrol edilirse, bu i aynı zamanda dizinin indislerini de
temsil etmiş olur.

for i=1:length(A)
fprintf('%d\n',A(i));
end

Kendisine A adlı bir satır veya sütun vektörünü parametre olarak


alan bir fonksiyon m–dosyası vektörün boyutuyla ilgili bir işlem
yapıyorsa length(A) fonksiyonunu muhakkak kullanmak zorundadır. (Bu
fonksiyona komut penceresinden nasıl bir vektörün parametre olarak
verileceği peşinen bilinemez çünkü.)

10:12 Dr. A. Muttalip ŞAHINASLAN 206 / 375


(İki Boyutlu) Matrislerin Değişkenlere Değer Olarak
Atanması
 İki boyutlu dizi (matris) oluşturmada ise her satır ayrı ayrı tanımlanır.
Sütunlar arasına boşluk yada « , » konur, satırlar ise « ; » ile ayrılır.
 Ör:

» M = [ 4 –15 3 27 ; 1 9 16 –7 ; 123, 25, 34, 2 ]

M=
4 –15 3 27
1 9 16 –7
123 25 34 2

10:12 Dr. A. Muttalip ŞAHINASLAN 207 / 375


(İki Boyutlu) Matrislerin Değişkenlere Değer Olarak
Atanması
 İki boyutlu dizi (matris) oluşturmada ise her satır ayrı ayrı tanımlanır. Bu
tanımlama belirli bir adımla yapılacak ise aşağıdaki gibi de tanımlama
yapılabilir.
 Ör: » D=[0:1:4 ; 2:1:6 ; 1 : 0.5 : 3 ]

D=
0 1.0000 2.0000 3.0000 4.0000
2.0000 3.0000 4.0000 5.0000 6.0000
1.0000 1.5000 2.0000 2.5000 3.0000

10:12 Dr. A. Muttalip ŞAHINASLAN 208 / 375


Uygulama 6.1

 A ve B şeklinde 2 matris tanımlayarak toplayan programı yazınız?

prog.m » % prog.m dosyasını çalıştırınız


» prog
» A=[ 1 2 3 ; 4 5 6 ] ;
» B=[ 2 4 6 ; 5 4 3 ] ;
» C= A + B C=
3 6 9
9 9 9

 Komut penceresinden girilen bir sayının karesi hesaplayarak ekrana


yazdıran programı yazınız?
prog1.m » % prog1.m çalıştırınız
» prog1
» % Girilen sayının karesini yazan prog.
» r=input(‘sayi gir :’)
sayi gir : 5
» fprintf(‘kare : %i \n’ , r*r
r=
5
kare : 25
10:12 Dr. A. Muttalip ŞAHINASLAN 209 / 375
İki Boyutlu Diziler ve size Fonksiyonu
MatLab’de iki boyutlu diziler (matrisler) ve size fonksiyonu :
» M=[1 6 13 25 ; 2 8 24 33 ; –1 87 43 56 ]

M= 1 6 13 25 » sTs = size(M,1)
2 8 24 33
–1 87 43 56 sTs = 3

» [ sRs sTs ] = size (M) » sTs = size (M,2)


sRs = 3
sTs = 4 sTs = 4

Karakter Dizilerinin ve Skaler’lerin Değişkenlere Değer Olarak Atanması


» isim = ‘derya’ » sayi1 = [49]
isim = sayi1 =
derya 49

» isim=[‘d’ ‘e’ ‘r’ ‘y’ ‘a’ ] » sayi1 = 49


isim = sayi1 =
derya 49

10:12 Dr. A. Muttalip ŞAHINASLAN 210 / 375


Satır Vektöründe Bilgi Depolama

Bir satır vektörünün bilgi depolamak amacıyla kullanılması:

A=[ ]; %Baslangicta Bos


1. METOD 2. METOD
A=[A x]; %A=[x] A(1)=x; %A=[x]
A=[A y]; %A=[x y] A(2)=y; %A=[x y]

Başlangıçta boş olan bir satır vektörünün içine sırasıyla x ve y


elemanları ekleniyor.

10:12 Dr. A. Muttalip ŞAHINASLAN 211 / 375


Matris Elemanlarına İNDİS ile Ulaşma

» M=[1 6 13 25 ; 2 8 24 33 ; –1 87 43 56 ]

M= 1 6 13 25
2 8 24 33
–1 87 43 56

» M( 2, 3) Virgül ile ayrılmış iki indis kullanıldığına


dikkat ediniz (satır indisi ve sütun indisi). Tek
ans = boyutlu dizilerde ise tek bir indis
24
kullandığımızı da hatırlayınız!
» M( 3, 4) = –25

M= 1 6 13 25
2 8 24 33
–1 87 43 –25

10:12 Dr. A. Muttalip ŞAHINASLAN 212 / 375


Vektör Oluşturma (linspace ve logspace)

 linspace: Doğrusal vektör tanımlayan hazır MatLab


fonksiyonudur. Artışlar doğrusaldır.
 logspace: Logaritmik vektör tanımlayan hazır MatLab
fonksiyonudur. Artışlar logaritmiktir.
 İki farklı kullanım şekilleri vardır.

linspace(i_değer,s_değer)
i_değer : ilk değer
logspace(i_değer,s_değer) s_değer : son değer

linspace(i_değer,s_değer,n) i_değer : ilk değer


s_değer : son değer
logspace(i_değer,s_değer,n) n : vektördeki eleman sayısı

10:12 Dr. A. Muttalip ŞAHINASLAN 213 / 375


Uygulama – 6.2

» F=linspace ( 1, 8, 10 )
F=
Columns 1 through 7
1.0000 1.7778 2.5556 3.3333 4.1111 4.8889 5.6667
Columns 8 through 10
6.4444 7.2222 8.0000

» G=logspace ( 1, 2, 10 )
G=
Columns 1 through 7
10.0000 12.9155 16.6810 21.5443 27.8256 35.9381 46.4159
Columns 8 through 10
59.9484 77.4264 100.0000

10:12 Dr. A. Muttalip ŞAHINASLAN 214 / 375


Uygulama – 6.3

Kendisine parametre olarak aldığı bir A satır vektörünün en büyük


elemanını bularak geriye döndüren bir MatLab fonksiyonunu
DizininMaksimumunuBul.m adında bir fonksiyon m–dosyasının içerisine
yazınız?
DizininMaksimumunuBul.m

function enBuyuk=DizininMaksimumunuBul(A)
enBuyuk=A(1); %Dizinin ilk elemani en buyuk olsun
for i=2:length(A) %Kac elemanli bir vektor acaba?
if A(i)>enBuyuk
enBuyuk=A(i);
end
end
Komut Penceresi
» B= [2, 4, –5, 6, 7, 99, –132, 126];
» DizininMaksimumunuBul(B)
ans= 126
» DizininMaksimumunuBul( [2, 4, –5, 6, 7, 99, –132, 126] )
ans= 126
10:12 Dr. A. Muttalip ŞAHINASLAN 215 / 375
İki Kodlama Arasındaki 10 Farkı Bulunuz

A=[ ]; %Baslangicta Bos


1. KODLAMA 2. KODLAMA
A=[A x]; %A=[x] A=[x A]; %A=[x]
A=[A y]; %A=[x y] A=[y A]; %A=[y x]
Son eklenen dizi elemanı dizinin Son eklenen dizi elemanı dizinin
son elemanı oluyor. ilk elemanı oluyor.

Bu iki farklı türdeki depolama stratejisinin ne tür uygulamalar


için uygun olabileceği üzerinde dikkatlice düşününüz.

>>A=[ ]
>>A=[A 1]
>>A=[A 2]
>>A=[3 A]

10:12 Dr. A. Muttalip ŞAHINASLAN 216 / 375


Uygulama – 6.4
Kendisine parametre olarak aldığı bir alt limit ile bir üst limit
arasındaki çift sayıları bularak bir satır vektörü içerisinde geriye
döndüren bir MatLab fonksiyonunu AraliktakiCiftleriBul.m adındaki
fonksiyon m–dosyasının içerisine yazınız.
Programın çalışabilmesi için bu alt fonksiyonun çalışma
dizini altında tanımlı olması (mevcut olması) gereklidir.

function depoVektor = AraliktakiCiftleriBul (altLimit, ustLimit)


depoVektor = [ ] ; %Baslangicta Bos Bir Satir Vektoru
for i = altLimit : ustLimit Komut Penceresi
>>AraliktakiCiftleriBul(1,10)
if CiftSayiMi (i) %Geriye 1 veya 0 Donduren Alt Fonksiyon
ans=
depoVektor = [depoVektor i] ; %Depo Vektorun Sonuna 2Ekle 4 6 8
10
%depoVektor=[i depoVektor]; >>AraliktakiCiftleriBul(10,1)
ans=
end [ ]
end

(1,10) ve (10,1) şeklindeki parametre aktarımlarının her ikisinde


de aynı sonucu üretecek fonksiyonu nasıl yazardınız?
10:12 Dr. A. Muttalip ŞAHINASLAN 217 / 375
Uygulama – 6.5
Kendisine parametre olarak aldığı bir B satır vektörünün her bir
elemanı 1 değerine sahipse geriye 1 aksi takdirde geriye 0 döndüren
bir MatLab fonksiyonunu DiziSadeceBirlerMiIceriyor.m adındaki
fonksiyon m–dosyasının içerisine yazınız.
function
sonuc=DiziSadeceBirlerMiIceriyor(B)
for i=1:length(B)
if B(i)==1
ÇALIŞMAYAN
sonuc=1;
ÇÖZÜM
else
sonuc=0;
end
end

Komut Penceresi
» DiziSadeceBirlerMiIceriyor([–8 4 6 25 1])
ans=
1
10:12 Dr. A. Muttalip ŞAHINASLAN 218 / 375
Uygulama – 6.6

function sonuc=DiziSadeceBirlerMiIceriyor(B)
sonuc=1 ; %Dizinin Sadece 1 Degeri Icerdigini Kabul Et
for i=1:length(B)
if B(i)~=1 %En Az 1 Adet Aksi Ornek Mevcutsa ÇALIŞAN
sonuc=0 ; %Kabulu Degistir ÇÖZÜM

break ; %return Fonksiyonu da Kullanılabilir


end
end
Komut Penceresi
» DiziSadeceBirlerMiIceriyor(ones(1,10))
ans=
1
» DiziSadeceBirlerMiIceriyor([1 1 1 25 1])
ans=
0
10:12 Dr. A. Muttalip ŞAHINASLAN 219 / 375
Veri ve Matrislerle İşlemler

 max(x) : Veri setinde maksimum değeri bulmaya yarar.


 min(x) : Veri setinde minimum değeri bulmaya yarar.
 mean(x) : Veri setinin ortalamasını bulmaya yarar.
 sum(x) : Veri setindeki tüm verilerin toplamını hesaplar.
 median(x) : Veri setinin medyanını (tam ortadaki sayı) bulur.
 std(x) : Veri setinin standart sapmasını bulmaya yarar.
 prod(x) : Veri setindeki tüm verilerin çarpımını hesaplar
 geomean (x) : Veri setinin geometrik ortalamasını bulmaya yarar.
 harmmean (x) : Veri setinin harmonik ortalamasını bulmaya yarar.
 sort(x) : Veri setindeki tüm verileri azalan sırada sıralar
 var(x) : Veri setinin varyansını bulmaya yarar.
 cov(x) : Veri setinin kovaryansını bulmaya yarar.
 correcoef(x,y) : x ve y veri setleri arasındaki korelasyon katsayısını
 mod(x) : Veri setinin modunu bulmaya yarar.

10:12 Dr. A. Muttalip ŞAHINASLAN 220 / 375


zeros Fonksiyonu
 zeros fonksiyonu ile sıfırlar matrisi oluşturma.
 Tüm elemanları sıfır olan matristir.
 Belirtilen boyutta sıfır matrisi oluşturur.
 zeros (satır , sütun)
oluşturulacak matrisin satır ve sütun sayısı (boyutu)

» % 3x3 sıfırlar matrisi oluşturma


» zeros (3)
ans = 0 0 0
0 0 0
0 0 0

» % 2x4 sıfırlar matrisi oluşturma


» zeros (2, 4)
ans = 0 0 0 0
0 0 0 0

10:12 Dr. A. Muttalip ŞAHINASLAN 221 / 375


zeros Fonksiyonu

zeros fonksiyonu ile sadece 0 ’lar içeren bir matrisin otomatik olarak
oluşturulması.

 zeros(n,m) fonksiyonu nxm boyutunda (n satırlı ve m sütunlu) ve


her bir elemanı 0 olan bir matris üretmek amacıyla kullanılır.

 Üretilmek istenen matris kare bir matris ise yani n satır sayısı,
m sütun sayısına eşit ise zeros(n,n) yerine sadece zeros(n)
kullanılabilir.
» zeros (1, 3)
» zeros (3, 1) zeros(3,5) fonksiyonu
acaba fix(rand(3,5))
» zeros (4, 4)
fonksiyonu ile aynı sonucu
» zeros (4) üretir mi?
» zeros (3, 5)

10:12 Dr. A. Muttalip ŞAHINASLAN 222 / 375


ones Fonksiyonu

ones fonksiyonu ile sadece 1’ler içeren bir matrisin otomatik olarak
oluşturulması.
 ones(n,m) fonksiyonu nxm boyutunda (n satırlı ve m sütunlu)
ve her bir elemanı 1 olan bir matris üretmek amacıyla kullanılır.

 Üretilmek istenen matris kare bir matris ise yani n satır sayısı, m
sütun sayısına eşit ise ones(n,n) yerine sadece ones(n)
kullanılabilir.

» ones(1,3) ones(3,5) fonksiyonu acaba


» ones(3,1) ceil(rand(3,5)) fonksiyonu ile
aynı sonucu üretir mi?
» ones(4,4)
» ones(4)
» ones(3,5)
10:12 Dr. A. Muttalip ŞAHINASLAN 223 / 375
ones Fonksiyonu
 ones fonksiyonu ile birler matrisi oluşturma
 Tüm elemanları bir olan matristir.
 Belirtilen boyutta birler matrisi oluşturur.
 ones (satır , sütun)
oluşturulacak matrisin satır ve sütun sayısı (boyutu)

» % 3x3 birler matrisi oluşturma


» ones (3)
ans = 1 1 1
1 1 1
1 1 1

» % 2x4 birler matrisi oluşturma


» ones (2, 4)
ans = 1 1 1 1
1 1 1 1

10:12 Dr. A. Muttalip ŞAHINASLAN 224 / 375


eye Fonksiyonu
 eye fonksiyonu ile birim matris oluşturma
 Kare matris içerisinde sol üst köşeden sağ alt köşeye doğru bir
çizgi çizildiğinde, çizgi üzerindeki elemanları bir, diğer tüm
elemanları sıfır olan matris oluşturur.
 eye (boyut)
oluşturulacak kare matrisin satır ve sütun sayısı (boyutu)

» % 3x3 birim matrisi oluşturma


» eye (3)
ans = 1 0 0
0 1 0
0 0 1
» % 3x4 birim matrisi oluşturma
» eye (3, 4)
ans = 1 0 0 0
0 1 0 0
0 0 1 0
10:12 Dr. A. Muttalip ŞAHINASLAN 225 / 375
rand Fonksiyonu

 Elemanları rasgele sayılardan oluşan matristir.


 rand fonksiyonu 0 ile 1 aralığında rasgele sayı üretir.
 rand (satır, sütun)
oluşturulacak matrisin satır ve sütun sayısı (boyutu)
» % 4x4 rastgele sayılar matrisi oluşturma » % 3x2 rastgele sayılar
» rand ( 4 ) ; % rand(4,4) » rand ( 3,2 )
ans = ans =
0.8147 0.6324 0.9575 0.9572 0.4218 0.9595
0.9058 0.0975 0.9649 0.4854 0.9157 0.6557
0.1270 0.2785 0.1576 0.8003 0.7922 0.0357
0.9134 0.5469 0.9706 0.1419

 rand(n,m) fonksiyonu MatLab’de nxm boyutunda ve elemanları


rastgele sayılar olan bir matris oluşturur. Oluşturulan bu rastgele
sayılar 0 ile 1 arasındadır ve düzgün dağılımlıdır.
 Üretilmek istenen matris kare bir matris ise yani n satır sayısı, m
sütun sayısına eşit ise rand(n,n) yerine sadece rand(n)
kullanılabilir.
10:12 Dr. A. Muttalip ŞAHINASLAN 228 / 375
rand Fonksiyonu
 0 ile 1 arasında rastgele ondalıklı bir skaler sayı üretmek için ise
rand(1) fonksiyonunun kullanımı yeterlidir.
 Rastgele sayılardan oluşan bu matrisin tüm elemanlarını k gibi bir
sayı ile çarparak sayıları 0 ile k aralığına çekebiliriz.
 Ondalıklı sayılardan oluşmuş bir matrisin elemanlarını yuvarlayıp
tamsayı yapmak için herhangi bir yuvarlama fonksiyonunu, mesela
round fonksiyonunu kullanabiliriz.
 Eğer rasgele sayının 0–1 aralığının dışında olması istenirse üretilen
rasgele sayı sabit bir değer ile toplanmalı yada çarpılmalıdır.
» % 1x4 rastgele sayılar matrisinin 5 ile toplanması
» 5 + rand(1, 4)
ans =
5.6555 5.1712 5.7060 5.0318

» % 1x7 rastgele sayılar matrisinin 10 ile çarpılması


» 10 * rand ( 1, 7 )
ans =
2.7692 0.4617 0.9713 8.2346 6.9483 3.1710 9.5022
10:12 Dr. A. Muttalip ŞAHINASLAN 229 / 375
pascal ve magic Fonksiyonu
 pascal(k) : Pascal » % 5x5 Pascak üçgen matrisi oluşturma
üçgeninin elemanlarından » pascal ( 5 )
ans = 1 1 1 1 1
oluşan k x k boyutunda 1 2 3 4 5
bir matris oluşturur. 1 3 6 10 15
1 4 10 20 35
1 5 15 35 70

 magic(k) : k x k uzunluğunda 1’den k’ya kadar


sayılardan oluşan eşit değerli satır, sütun ve
köşegen toplamına sahip bir kare matris
oluşturur. Sudoku …!
» % 4x4 magic matrisi
» % 3x3 magic matrisi » magic ( 4 )
» magic ( 3 ) ans =
ans = 16 2 3 13
8 1 6 5 11 10 8
3 5 7 9 7 6 12
4 9 2 4 14 15 1
10:12 Dr. A. Muttalip ŞAHINASLAN 230 / 375
sum Fonksiyonu

 sum fonksiyonu ile toplama


 Tanımlanan matrisin sahip olduğu sütunlardaki eleman değerlerini
ayrı ayrı toplayarak satır vektörüne dönüştürür.
 sum (matris)
her bir sütunu ayrı ayrı toplanarak satır vektör oluşacak matris

» % P matrisini oluşturma
» H=[ 1 2 3 4 5 ; –4 5 –2 0 6 ; –7 2 5 –3 4 ]

H=
1 2 3 4 5
–4 5 –2 0 6
–7 2 5 –3 4

» % P matrisinden satır vektörü oluşturma


» sum(H)

ans =
–10 9 6 1 15
10:12 Dr. A. Muttalip ŞAHINASLAN 231 / 375
sum Fonksiyonu

 Eğer matris tek bir sütun ya da tek bir satırdan oluşuyorsa


elemanların toplamını verir.

» % R satır matrisini oluşturma ve elemanlarını toplama


» R=[ 1 2 4 3 5 ] ;
» sum(R)

ans = 15

» % B satır matrisini oluşturma ve elemanlarını toplama


» B=[ 2 4 6 8 10 12 ] ; % veya B=[ 2 ; 4 ; 6 ; 8 ; 10 ; 12 ] ;
» sum(B)

ans = 42

» B= 2 + 4 + 6 + 8 + 10 + 12= 42

10:12 Dr. A. Muttalip ŞAHINASLAN 232 / 375


prod Fonksiyonu

 Sum fonksiyonu gibi bir matrisin sahip olduğu sütunlardaki eleman


değerlerini ayrı ayrı çarparak satır vektörüne dönüştürür.
 prod (matris)
her bir sütunu ayrı ayrı çarpılacak satır vektör oluşacak matris

» % R vektörünün tanımlanması ve sonucu


» R=[ 1 2 4 3 5 ]
R=
1 2 3 4 5

» % R vektör sayı değerlerinin birbiriyle çarpılması


» prod (R)
ans =
120 R = 1*2*3*4*5=120

» % U vektörünü yanımlama ve sayı değerlerinin birbiriyle çarpılması


» U=[ 1 2 3 ; 2 3 4 ; 3 4 5 ]
» prod (U)
ans =
6 24 60
10:12 Dr. A. Muttalip ŞAHINASLAN 233 / 375
sort Fonksiyonu

 Bir satır ya da sütun vektörünün sahip olduğu eleman değerlerinin


en küçükten en büyüğüne doğru sıralar.
 Kısaca –  ’dan + ’a doğru sıralar.
 sort (matris)
elemanları sıralanacak matris

Ör : R  1  3 2 0 7  2 Vektörünü tanımlayarak, sayıların


küçükten büyüğe sıralayınız?

» % Satır vektörünün tanımlanması


» R=[ 1 –3 2 0 7 –2 ]
» sort(R)
ans =
–3 –2 0 1 2 7

» % Satır vektöründeki sayıların küçükten büyüğe sıralanması


» sort([ 0 5 –1 4 2 ])
ans =
–1 0 2 4 5
10:12 Dr. A. Muttalip ŞAHINASLAN 234 / 375
sort Fonksiyonu

0 » % Sütun vektörü ve küçükten büyüğe


5 sıralanması
  » sort([ 0 ; 5 ; –1 ; 4 ; 2 ])
Ör :
  1 ans =
  –1
4 0
 2  2
4
5
Ör :
» % B matrisi, sayıların küçükten büyüğe sıralama
» B=[ 1 2 4 9 ; –2 5 3 7 ; 5 7 4 1 ]
 1 2 4 9
B= 1 2 4 9
B   2 5 3 7 –2 5 3 7
 
 5 7 4 1  5 7 4 1
» sort(B)
ans =
–2 2 3 1
1 5 4 7
5 7 4 9
10:12 Dr. A. Muttalip ŞAHINASLAN 235 / 375
sortrows Fonksiyonu

 sortrows(a,i) : Bir a matrisinin elemanlarını i.sütuna göre sıralar.

Ör–1 : Ör–2 :

10:12 Dr. A. Muttalip ŞAHINASLAN 236 / 375


max Fonksiyonu
 Bir satır ya da sütun vektörünün sahip olduğu eleman değerlerinin
arasında en büyük sayı değerini verir.
 max (matris)
elemanları arasında en büyük sayı değeri bulunacak matris
» % Satır vektöründeki en büyük sayı
Ör : 1  3 2 0 7  2 » max([ 1 –3 2 0 7 –2 ])
ans =
7
Ör :
» % A matrisi ve her kolondaki en büyük sayı
 1 2 4 9 » A=[ 1 2 4 9 ; –2 5 3 7 ; 5 7 4 1]
A=
A   2 5 3 7 1 2 4 9
 
 5 7 4 1 –2 5 3 7
5 7 4 1
» max(A)
ans = 5 7 4 9
 Bu komut ile bir elektrik devresinde elde edilen akım veya gerilim
değişimlerine ait sinyallerin maksimum değerleri bulunabilir.
10:12 Dr. A. Muttalip ŞAHINASLAN 237 / 375
min Fonksiyonu
 Bir satır ya da sütun vektörünün sahip olduğu eleman değerlerinin
arasında en küçük sayı değerini verir.
 min (matris)
elemanları arasında en küçük sayı değeri bulunacak matris
» % Satır vektöründeki en küçük sayı
» min([ 1 –3 2 0 7 –2 ])
Ör : 1  3 2 0 7  2 ans =
–3
Ör : » % A matrisi ve kolonlardaki en küçük sayılar
 1 2 4 9 » A=[ 1 2 4 9 ; –2 5 3 7 ; 5 7 4 1]
A=
A   2 5 3 7 1 2 4 9
 
 5 7 4 1 –2 5 3 7
5 7 4 1
» min(A)
ans = –2 2 3 1

 Bu komut ile bir elektrik devresinde elde edilen akım veya gerilim
değişimlerine ait sinyallerin minimum değerleri bulunabilir.
10:12 Dr. A. Muttalip ŞAHINASLAN 238 / 375
mean Fonksiyonu

 Bir matrisin aritmetik ortalamasını verir.


 Bir satır ya da sütun vektörünün sahip olduğu eleman değerlerinin
toplamını eleman sayısına bölerek ortalama değerini verir.
 mean (matris)
elemanlarının ortalama değeri bulunacak matris

Ör : 1 3 2 4 6 Vektörünün ortalama değeri bulunuz?

» % Satır vektörünün ortalamasını bulma


» meam ([ 1 3 2 4 6 ])
ans = 1 3  2  4  6
3.2000 ans   3.2
5
» % Sütun vektörünün ortalamasını bulma
» meam ([ 4; 6; 2; 3; 9 ])
ans =
4.8000
 Bu komut ile bir elektrik devresinde elde edilen akım veya gerilim
değişimlerine ait sinyallerin ortalama değeri bulunabilir.
10:12 Dr. A. Muttalip ŞAHINASLAN 239 / 375
mean Fonksiyonu

 1 2 4 9
  Matrisini tanımlayarak sütunların
Ör : K   2 5 3 7
  ortalamasını hesaplayınız?
 5 7 4 1
» % K matrisinin tanımlanması
» K = [ 1 2 4 9 ; –2 5 3 7; 5 7 4 1]
K =
1 2 4 9
–2 5 3 7
5 7 4 1

» % K matrisinin ortalamasını bulma


» meam ( K )
ans =
1.3333 4.6667 3.6667 5.6667

1 2  5 9  7 1
ans   1.3333 ;  5.6667
3 3
10:12 Dr. A. Muttalip ŞAHINASLAN 240 / 375
std Fonksiyonu
 Bir matrisin elemanlarının
1 n
  xk  x 
2
standart sapmasını verir. s
 std (matris) n  1 k 1
elemanlarının standart sapması bulunacak matris

Ör : T  1 2 3 4 Matrisini tanımlayarak standart sapmasını bulunuz?


» % T matrisinin tanımlanması » % T matrisinin standart sapması
» T=[1 2 3 4] » std ( T )
T = ans =
1 2 3 4 1.2910

1 2 3 4
Ör : Y    Matrisini tanımlayarak standart sapmasını bulunuz?
 2 4 6 8
» % Y matrisinin tanımlanması » % Y matrisinin standart sapması
» Y = [ 1 2 3 4; 2 4 6 8 ] » std ( Y )
Y = ans =
1 2 3 4 0.7071 1.4142 2.1213 2.8284
2 4 6 8
10:12 Dr. A. Muttalip ŞAHINASLAN 241 / 375
std Fonksiyonu
Uyg: 6 kişilik bir grubun girdiği sınavda aldığı notlar; 10, 8, 10, 8,
8, 4 olduğuna göre bu grubun standart sapmasını hesaplayınız?

G  { 10 , 8 , 10 , 8 , 8 , 4 } ; n  6 1 n
  k 
2
10  8  10  8  8  4 48 std  x  x
mean  x   8 n  1 k 1
6 6
x  x  10  8  2 ; 8  8  0 ; 10  8  2 ; 8  8  0 ; 8  8  0 ; 4  8  4

22 02 22 02 02 42
 4  0  4  0  0  16  24
24 24
x   4.8  std  4.8  2.1909
n 1 6 1
» G = [ 10 8 10 8 8 4 ] ;
» std ( G )

ans = 2.1909
10:12 Dr. A. Muttalip ŞAHINASLAN 242 / 375
size Fonksiyonu
 Bir matrisin kaç satır ve kaç sütundan oluştuğunu verir.
 Verdiği ilk değer satır, ikinci değer sütun sayısını gösterir.
 size (matris)
satır ve sütun sayısı bulunacak matris
1.0000 1.5000 2.0000 2.5000 3.0000 3.5000 4.0000
Ör : K = –1.0000 –0.8000 –0.6000 –0.4000 –0.2000 0 0.2000
4.0000 3.9000 3.8000 3.7000 3.6000 3.5000 3.4000

» % K matrisinin tanımlanması ve satır sütun sayısının tespiti


» K = [ 1 : 0.5 : 4 ; –1 : 0.2 : 0.2 ; 4 : –0.1 : 3.4 ]
K =
1.0000 1.5000 2.0000 2.5000 3.0000 3.5000 4.0000
–1.0000 –0.8000 –0.6000 –0.4000 –0.2000 0 0.2000
4.0000 3.9000 3.8000 3.7000 3.6000 3.5000 3.4000
» size ( K )
ans = 3 7
10:12 Dr. A. Muttalip ŞAHINASLAN 243 / 375
length Fonksiyonu

 Bir matrisin satır ve sütun sayısının büyük olan değerini verir.


 max(size(matris)) fonksiyonu da aynı işlevi yerine getirir.
 length (matris)
sütun sayısı bulunacak matris

Ör :
1 2 3 » % 2x3 KL matrisi ve sütun sayısının tespiti
KL    » KL = [ 1 2 3 ; 4 5 6 ]
4 5 6 
KL =
1 2 3
4 5 6

» length ( KL )
ans =
3
10:12 Dr. A. Muttalip ŞAHINASLAN 244 / 375
det Fonksiyonu
 Matrisin determinantını hesaplar.
 det (matris)
determinantı hesaplanacak matris

 1 2 5
Ör : A   2 4 3 Matrisinin determinantını hesaplayınız?

 7 6 5

» % A matrisinin tanımlanması
» A = [ 1 2 5 ; -2 4 3 ; 7 6 5 ] ;
» det (A)
ans = – 136
10:12 Dr. A. Muttalip ŞAHINASLAN 245 / 375
det Fonksiyonu

 2  1 4 
 
Ör : C  6  3  2 Matrisinin determinantını hesaplayınız?
 
 4 1 2 

» % 3x3 C matrisi ve determinant hesabı


» C = [ –2 –1 4 ; 6 –3 –2 ; 4 1 2 ]
C =
–2 –1 4
6 –3 –2
4 1 2

» det ( C )
ans =
100

10:12 Dr. A. Muttalip ŞAHINASLAN 246 / 375


inv Fonksiyonu

 Matrisin tersini verir.


 inv (matris)
tersi hesaplanacak matris

Ör:  3 2  1 » % 3x3 C matrisi ve tersinin hesabı


C  2  1 2  » C = [ 3 2 –1 ; 2 –1 2 ; 1 –3 –4 ]
 
1  3  4 C =
3 2 –1
C matrisini tanımlayarak,
tersini bulan bir program 2 –1 2
yazınız? 1 –3 –4

» inv ( C )
ans =
0.1818 0.2000 0.0545
0.1818 –0.2000 –0.1455
–0.0909 0.2000 –0.1273
10:12 Dr. A. Muttalip ŞAHINASLAN 247 / 375
inv Fonksiyonu
1 2 3 
Ör: M  0 1 4  Matrisin invers (tersini) hesaplayınız?
5 6 0 

» M = [ 1 2 3 ; 0 1 4 ; 5 6 0 ];
» inv ( M )
ans =
-24.0000 18.0000 5.0000
20.0000 -15.0000 -4.0000
-5.0000 4.0000 1.0000
10:12 Dr. A. Muttalip ŞAHINASLAN 248 / 375
MATLAB Temel Komutları

 cumsum(x) : Vektörler için x verilerinin eklenik toplamını hesaplar.


Matrisler için her bir satırdaki eklenik toplamları,
 cumprod(x) : Vektörler için x verilerinin eklenik çarpımını hesaplar.
Matrisler için her bir satırdaki eklenik çarpımlarını,
 sort(x) : Vektörler için x verilerini küçükten büyüğe sıralar.
Matrisler için her bir satırdaki verileri küçükten
büyüğe sıralar.
 size(x) : Matrisin ya da vektörün boyutunu verir.
 length(x) : Matrisin ya da vektörün uzunluğunu verir.

10:12 Dr. A. Muttalip ŞAHINASLAN 249 / 375


MATLAB Diziler

 F11 F12 .... F1n 


F C(2)  A(2) * B(2);
F22 .... F2n 
 21  C(3)  A(3) * B(3);
F   ... ... .... ...  C(4)  A(4) * B(4);
  C(5)  A(5) * B(5);
 ... ... .... ... 
 Fm1 Fm2 .... Fmn  mxn MatLab: C = A.*B;

Matrisleri oluşturmanın en temel yolu […] kullanmaktır.


mxn boyutundaki bir matrisin genel formatı:
• F = [F11 F12 ... F1n ; F21 F22 ... F2n ; ..... ; Fm1 Fm2 ... Fmn]
veya
• F = [F11, F12, ... , F1n ; F21, F22, ... , F2n ; ..... ; Fm1, Fm2, ... , Fmn]
 Hem vektörler hem de matrisler Utility fonksiyonlar
(zeros,ones ve rand) kullanarak da oluşturulabilir:
• zeros(1,n) veya zeros(n,1) • ones(1,n) veya ones(n,1)
• zeros(n) • ones(n)
• zeros(n,m) • ones(n,m)
• zeros(size(kd)) • ones(size(kd))
10:12 Dr. A. Muttalip ŞAHINASLAN 250 / 375
Matrislerde İşlemler

Aşağıdaki matris işlemlerini MatLab zaten kolayca


gerçekleştirmektedir. Ama bizim amacımız bu işlemleri şimdiye kadar
öğrendiğimiz programlama yapıları ile kendimizin yazabilmesidir.

 Matrislerin Bir Skalerle Çarpımı

 Matrislerde Toplama ve Çıkarma

 Matrislerde Çarpma

 Matrislerin Transpozu

10:12 Dr. A. Muttalip ŞAHINASLAN 251 / 375


Vektör İşlemleri

MatLab Örnek Uygulama Açıklama


İşlem Formu a=[1 2 3] , b=[2 –3 4] (MatLab’da % ile başlar)

Toplama a + b 3 –1 7 Dizilerin karşılıklı elemanları toplanır

Çıkarma a – b –1 5 –1 Dizilerin karşılıklı elemanları çıkartılır

Çarpma a .* b 2 –6 12 Dizilerin karşılıklı elemanları çarpılır

a dizisinin her bir elemanı sırası ile b


Sağa Bölme a ./ b 0.5000 –0.6667 0.7500
dizisinin her bir elemanına bölünür

b dizisinin her bir elemanı sırası ile a


Sola Bölme a .\ b 2.0000 –1.5000 1.3333
dizisinin her bir elemanına bölünür

1
Satır vektörünü (1xn), sütun vektörüne
Transpoze a’ 2
(nx1) yada tersine dönüştürür.
3

 Noktalı (dot) işlemler, vektörde karşılıklı eleman eleman işlem yapılacağını gösterir.

10:12 Dr. A. Muttalip ŞAHINASLAN 252 / 375


MATLAB Dizilerinde Fonksiyonlar
Dizilere fonksiyonları uygulama:
 length(kd) : kd dizisinin eleman sayısını yani uzunluğu
 size(kd) : kd dizisinin boyutu
 sum(kd) : kd vektörünün eleman toplamı
 sum(A) : A matrisinin sütun başına eleman toplamı
 kd(n) : kd dizisinin n. eleman değeri
 A(n,:) : A matrisinin sadece n. satırı
 A(:,n) : A matrisinin sadece n. sütunu
 A' : A matrisinin transpozesi yani devriği
 det(A) : A matrisinin determinantı
 inv(A) : A matrisinin tersi
 diag(A) : A matrisinin ana diagonel (çapraz) elemanları
 [v,d]=eig(A) : A matrisinin özvektörleri ve özdeğerleri
 Elemanter işlemler eleman elaman işlem demektir ve «.» işleci kullanılır:
Çarpma: .* ; Bölme: ./ ; Üs alma: .^
10:12 Dr. A. Muttalip ŞAHINASLAN 253 / 375
GizemliFonksiyon.m

function GizemliFonksiyon(n) Yanda verilen


clc; GizemliFonksiyon.m adlı
if ( n < 2 ) || ( n > 20 ) fonksiyon m–dosyası genel
disp('Beklenen Aralikta Bir Giris Degil.'); olarak nasıl bir iş yapar?
return ; Komut penceresinde
end çalıştırılan
for i = 1 : n GizemliFonksiyon(10) nasıl
if ( i = = 1 ) || ( i= = n ) bir ekran çıktısı verir?
for j = 1 : n
fprintf (‘ # ') ; %Ekrana # Bas
end
fprintf ( ‘ \ n ‘ ) ;
Çözüm: Fonksiyon içerisinde
else
n gördüğünüz her yere 10
fprintf ( ‘ @ ‘ ) ; %Ekrana @ Bas
rakamını yerleştirip sanki
for j=2:(n–1)
MatLab programıymışsınız
fprintf (' ') ; %Ekrana Bosluk Bas
gibi  fonksiyonu satır satır
end
işletmelisiniz.
fprintf ( ‘ @ \ n ‘ ) ;
end
end
10:12 Dr. A. Muttalip ŞAHINASLAN 254 / 375
İPUCLARI !!!

1– Kendisine M adındaki bir matrisi parametre olarak alan bir


fonksiyon m–dosyası matrisin boyutuyla ilgili bir işlem yapıyorsa
size(M) fonksiyonunu muhakkak kullanmak zorundadır. (Bu
fonksiyona komut penceresinden nasıl bir vektörün parametre
olarak aktarılacağı peşinen bilinemez çünkü.)
2– Bir matris içerisinde iç içe 2 for döngüsü kullanılarak kolaylıkla
gezilebilir. Dıştaki döngü ( i ile kontrol edilen döngü) satır indislerini
ve içteki döngü ( j ile kontrol edilen döngü) sütun indislerini temsil
amacıyla kullanılabilir.
[satirSayisi sutunSayisi] = size(M) ;
toplam = 0 ; Bu program
for i = 1 : satirSayisi ne iş yapar?
for j = 1 : sutunSayisi
toplam = toplam+M(i,j);
end
end
disp (toplam) ;

10:12 Dr. A. Muttalip ŞAHINASLAN 255 / 375


Matrislerde Toplama ve Çıkarma İşlemi
Kendisine parametre olarak aldığı bir M matrisi ile yine kendisine
parametre olarak aldığı bir N matrisini toplayarak elde ettiği T
matrisini geriye döndüren bir MatLab fonksiyonunu IkiMatrisiTopla.m
adındaki fonksiyon m–dosyasının içerisine yazınız.
İki matrisin toplanabilmesi veya çıkarılabilmesi ancak ve ancak
boyutlarının (yani satır ve sütun sayılarının) eşit olması ile mümkündür!

function T= IkiMatrisiTopla(M, N)
T = [ ] ; %Baslangicta Bos Bir Matris
[satirSayisiM sutunSayisiM] = size (M) ;
[satirSayisiN sutunSayisiN] = size (N) ;
if (satirSayisiM == satirSayisiN)&&(sutunSayisiM == sutunSayisiN)
for i = 1 : satirSayisiM %Veya satirSayisiN
for j = 1 : sutunSayisiM %Veya sutunSayisiN
T(i, j) = M(i, j) + N(i, j) ; Komut Penceresi
end >>IkiMatrisiTopla([1 2;3 4],[5 6;7 8])
end
end ans= 6 8
10 12
10:12 Dr. A. Muttalip ŞAHINASLAN 256 / 375
Matrislerin Bir Skalerle Çarpımı

Kendisine parametre olarak aldığı bir M matrisinin her bir


elemanını yine kendisine parametre olarak aldığı bir k skaleri ile çarpan
ve elde ettiği N matrisini geriye döndüren bir MatLab fonksiyonunu
MatrisiSkalerleCarp.m adındaki fonksiyon m–dosyasına yazınız?
function N = MatrisiSkalerleCarp(M, k)
N = [ ] ; %Baslangicta Bos Bir Matris
[satirSayisi sutunSayisi] = size (M);
for i =1 : satirSayisi
for j = 1 : sutunSayisi
N(i, j) = M(i, j) * k ;
end
Komut Penceresi
end » MatrisiSkalerleCarp([1 2;3 4],6)

ans=
6 12
18 24
10:12 Dr. A. Muttalip ŞAHINASLAN 257 / 375
Matrislerde Çarpma İşlemi

A ve B gibi iki matrisin A = [1 2 1 ; 0 3 –1] ;


çarpılabilmesi için A matrisinin B = [1 2 ; 1 5 ; 2 3] ;
sütun sayısının B matrisinin if size (A, 2) ~= size(B,1)
satır sayısına eşit olması disp ('Carpim Illegal') ;
gerekmektedir. A matrisi mxn, return ;
B matrisi nxk ise bu çarpma end
işlemi sonucunda elde edilecek C = zeros(size(A,1),size(B, 2));
C matrisinin boyutu mxk for i = 1 : 2
olacaktır. for j = 1 : 2
Ör : for k = 1 : 3
1 2  C(i, j)=C(i, j)+A(i, k)*B(k, j) ;
1 2 1 
A B  1 5  end
  end
0 3 1  2 3
end
disp(A) ;
5 15
C  A B    disp(B) ;
1 12 disp(C) ;
10:12 Dr. A. Muttalip ŞAHINASLAN 258 / 375
Matrislerde Transpoz İşlemi

Transpoz, matrislerde satır ile sütunun yer değiştirmesi işlemidir.


Yani; A=2x3 ’lük bir matrisin transpozu alındığı zaman: B=AT=3x2
’lik bir matris elde edilir.

A = [ 1 3 0 ; 4 2 –3 ] ;
A= B =AT
B=[];
[m n]=size(A) ; 1 3 0 1 4
for i = 1 : n %A’nin Sutunu 4 2 –3 3 2
0 –3
for j = 1 : m %A’nin
Satiri
Komut satırında A' yı test ediniz?
B(i , j) = A(j , i) ;
end
end
disp(A) ;
disp(B) ;

10:12 Dr. A. Muttalip ŞAHINASLAN 259 / 375


X vektörünü bir satır vektöründen bir sütun vektörüne
dönüştürmek için, X ten sonra (') koyulur X‘.

10:12 Dr. A. Muttalip ŞAHINASLAN 260 / 375


Bir Kare Matrisin Ana Köşegeni

Bir kare matrisin ana köşegeni (kuzey batı – güney doğu köşegeni)

Köşegen Üzerindeki İç Döngü Üst Üçgen Bölgedeki


Elemanlar ( i = = j ) Değişkeni ( j ) Elemanlar ( j > i )

𝟒 𝟒 −𝟏𝟓 𝟑 𝟐𝟕
𝟏 𝟕𝟖 𝟗 𝟏𝟔 −𝟕
Dış Döngü
𝑴 = 𝟏𝟐𝟑 −𝟗 𝟐𝟓 𝟑𝟒 𝟐
Değişkeni ( i ) 𝟒 𝟓𝟖 𝟑𝟒 𝟒𝟐 𝟓𝟔
−𝟔𝟓 𝟏𝟏𝟐 𝟐 𝟖 𝟑

Alt Üçgen Bölgedeki


Elemanlar ( i > j )

10:12 Dr. A. Muttalip ŞAHINASLAN 261 / 375


Bir Kare Matrisin İkincil Köşegeni

Bir kare matrisin ikincil köşegeni (kuzey doğu – güney batı köşegeni)

Üst Üçgen Bölgedeki İç Döngü Köşegen Üzerindeki


Elemanlar (i+j)<(n+1) Değişkeni (j) Elemanlar (i+j)==(n+1)

𝟒 𝟒 −𝟏𝟓 𝟑 𝟐𝟕
Dış Döngü 𝟏 𝟕𝟖 𝟗 𝟏𝟔 −𝟕
𝑴 = 𝟏𝟐𝟑 −𝟗 𝟐𝟓 𝟑𝟒 𝟐
Değişkeni (i)
𝟒 𝟓𝟖 𝟑𝟒 𝟒𝟐 𝟓𝟔
−𝟔𝟓 𝟏𝟏𝟐 𝟐 𝟖 𝟑

Alt Üçgen Bölgedeki


Elemanlar (i+j)>(n+1)

10:12 Dr. A. Muttalip ŞAHINASLAN 262 / 375

You might also like