1 Kasım 2013 Cuma

İYTE IEEE Matlab Kurs Notları - 1

Matlab'ta en büyük yardımcımız help fonksiyonudur.
Mesela gelişi güzel 0 ile 1 arasında sayılar içeren matris oluşturmak için rand fonksiyonu kullanılır ve nasıl kullanılıyor öğrenmek için help rand yazmamız yeterlidir.Uzunca döküman açılıyor.

Birde amacımız gelişi güzel sayı üretmek fakat hangi fonksiyonu kullancağımızı bilmiyoruz.Matlabta şöyle bir güzellik var lookfor random desek random ile ilgili bütün fonksiyonları gösteriyor.

rand'tan bahsetmişken rand(2) yazdığımızda ;

rand(2)

ans =

    0.0318    0.0462
    0.2769    0.0971

Olarak çıktı veriyor ve bu sayıların hepsinin gelme olasılığı eşit mesela 1/9 ile 1/5 in gelme olasılığı aynı.Her seferinde rand'ı çalıştırdığımızda farklı sonuçlar gösterir.Tabi 2 yazmamız 2x2 matris oluşturulmasını sağladı.
Bu arada dikkat ettiyseniz ans =  ve alt satırda matrisimizi gösteriyor.Bu ing answer(cevap) ın kısaltması ve belli bir değişkene atamazsak bütün sonuçlar ans ' a atanır.Sağ workspace'te ans değişkeninide görebilirsiniz.
Yanında <3x3 double> yazıyor. Bize kaçlık matris olduğunu gösteriyor ve türünü.

Şimdi bir değişken oluşturalım D ve 3 e 2 lik bi matris olsun bu.

D = rand(3,2);  yazdım ve D adlı değişken oluşturdum.Sadece D yazıp enterlarsam 3 e 2 lik matrisimi görürüm.Dikkat ettiyseniz sonunda ; (noktalı virgül) var aynı C deki gibi.Sona ; koymak ile koymamanın hiç bir farkı yok sadece 2 aşamada görmüş oluyor matrisi eğer ; koyarsak sona.Koymasaydım şöyle olurdu.

>> D = rand(3,2)

D =

    0.5383    0.4427
    0.9961    0.1067
    0.0782    0.9619

Şimdi kaç değikenimiz var kontrol etmek istersek, who komutunu kullanıyoruz.

>> who

Your variables are:

D    ans

whos yazdığımızdada matrislerimizin boyutlarını türlerini ve kaç bytetan oluştuklarını görebiliriz.

>> whos
  Name      Size            Bytes  Class     Attributes

  D         3x2                48      double            
  ans       1x1                 8       double            

clc komutu, o anki komut satırını temizler.
clear ve clear all o ana kadar oluşturulan herşeyi siler.

Kendimiz matris oluşturmak istersek satırları bölmek için yine noktalı virgül kullanıyoruz.

>> A = [1 2; 3 4; 5 7]

A =

     1     2
     3     4
     5     7

Matrislerde toplama ve çıkarma ve bölme işlemleri ; şart aynı türde matris olmalılar. 2x3 ise 2x3 gibi.

>> A = rand(2,3);

>> B = rand(2,3);

>> C = A + B

C =

    0.2288    1.0849    0.4663
    0.8839    1.4689    0.5900

>> D = B - A

D =

    0.1092    0.3786    0.4355
    0.4143   -0.1734    0.5040

Bölme işleminde; A/B demek ile B\A demek aynı şey oluyor.

B \ A

ans =

    0.3641    1.0181    0.0588
   -0.0024    0.2475    0.0075
         0         0         0

Çarpma işleminde;  3x2 matris 2x3 matris ile çarpılabilir sadece matematikten bildiğimiz üzere.

>> b = rand(3,5);

>> a = rand(2,3);

>> a*b

ans =

    0.7128    0.4181    0.7043    0.6467    0.6162
    1.4325    1.1838    1.7412    1.1091    1.5326


Çarpma işleminde;  3x2 matris 2x3 matris ile çarpılabilir dedik fakat diyelim ki illa kendi oluşturduğumuz mesela 2 matris var.

>> a = [2 5 6;4 5 8];
>> b = [89 4 3;7 0 1];

Bunları componentwise (element by element) olarak çarpabiliriz yani;

>> a.*b

ans =

   178    20    18
    28     0     8

Aradaki işarete dikkat ederseniz nokta dedik sonrada çarpma işareti.


Kare matrislerin tersini inv() (inverse kısaltması) fonksiyonu ile elde edebiliriz.

>> a = rand(2)

a =

    0.6820    0.0714
    0.0424    0.5216

>> d = inv(a)

d =

    1.4789   -0.2026
   -0.1203    1.9335

Bir matrisi kendisiyle çarparsak birim matrisi elde ederiz.

>> a*d

ans =

    1.0000   -0.0000
         0    1.0000

Aynı zamanda istediğimiz şekilde birim matris istersek eye() fonksiyonunu kullanırız.

>> eye(3)

ans =

     1     0     0
     0     1     0
     0     0     1

zeros() ve ones()  fonksiyonları

>> ones(3)

ans =

     1     1     1
     1     1     1
     1     1     1

>> zeros(4)

ans =

     0     0     0     0
     0     0     0     0
     0     0     0     0
     0     0     0     0



Vektör oluşturmak istersek

>> a = [5 6 7 8]

a =

     5     6     7     8


veya

>>   a = [5;6;7;8]

a =

     5
     6
     7
     8

bunu aynı zamanda istersek üstteki gibi araya ; (noktalı virgül) koymadan sadece a' (tek tırnak) ile de elde edebiliriz.Yani a'nın transpozu.

F = a'

F =

     5
     6
     7
     8

Bir matris veya vektörün boyutunu size() fonksiyonu ile öğrenebiliriz.

>> size(F)

ans =

     4     1


Bir matriste en büyük değerleri(sütunların) max() fonksiyonu ile bulabiliriz.

>> D = rand(3)

D =

    0.0967    0.7224    0.5186
    0.8181    0.1499    0.9730
    0.8175    0.6596    0.6490

>> max(D)

ans =

    0.8181    0.7224    0.9730

İstersekte bir matristeki en büyük sayıyı iki şekilde bulabiliriz.Öğrendiğimiz gibi ans = max(D) 

İstersek bir daha max(ans) deriz.

>> max(ans)

ans =

    0.9730

veya

en baştan matrisi iki kere max alırız.


>> max(max(D))

ans =

    0.9730

C'deki for döngüsü MATLAB'ta belirlediğimiz iki sayı arasına   : (iki nokta üst üste) koyarak elde ederiz.

>> 1:10

ans =

     1     2     3     4     5     6     7     8     9    10

Artış miktarını belirlemezsek birer birer artar.İstersek şöyle belirleriz.

x  = başlangıç sayısı olsun
z = son sayı
y = artış miktarı

x:y:z  şeklinde yapabiliriz.

>> A = 1:0.8:5

A =

    1.0000    1.8000    2.6000    3.4000    4.2000    5.0000



Grafik çizdirme işlemi

MATLAB'ta Pi sayısını pi ile kullanabiliriz.

>> A = 0:pi/2:2*pi

A =

         0    1.5708    3.1416    4.7124    6.2832

Şimdi bunun sinüsünü alırsak.Sinüs fonksiyonu için sin() kullanılır.

>> B = sin(A)

B =

         0    1.0000    0.0000   -1.0000   -0.0000

Grafiğinide plot() fonksiyonu ile çizdiririz.İki parametre alır bu fonksiyon ve ilki x ikincisi y eksenidir.

>> plot(A,B)


İstersem rengini değiştirebilirim veya noktalı şekilde veya yıldız bir sürü seçeneği help plot ile görebilirim.Rengide plot fonksiyonuna üçüncü parametre olarak girdiğimizde tabi iki tek tırnak arasına ve rengin baş harfini veya rengine göre değişir yazdığımızda grafiğimizin rengi değişir.

>> plot(A,B,'r')

Daha iyi nerde hangi sonuçta olduğunu görmek istersek grid on dememiz yeterli böylelikle 



hold on ile aynı anda iki fonksiyonu görebiliriz.

C adlı yeni bi değişken oluşturdum ve bunun cosinüs'ünü aldım.

>> hold on
>> C = 0:0.25:3*pi;
>> G = cos(C);
>> plot(C,G,'k')


Mesela unuttum hangisi cosinüsün hangisi sinüsün legend() ile şöyle görürüz.

legend('birincisi','ikincisi')

>> legend('sin','cos')

Hiç yorum yok:

Yorum Gönder