folder Tahribat.com Forumları
linefolder Programlama Genel
linefolder Döküman - İYTE IEEE Matlab Kurs Notları - 1



Döküman - İYTE IEEE Matlab Kurs Notları - 1

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    dyrnade
    dyrnade's avatar
    Kayıt Tarihi: 27/Temmuz/2009
    Erkek

    Not: Her hafta Cuma günleri kurs o yüzden haftada 1 yayınlıycam.

    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 plotile 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')

  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    halat
    halat's avatar
    Kayıt Tarihi: 14/Aralık/2009
    Erkek

    Takip.

  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    SUPERBICO
    SUPERBICO's avatar
    Kayıt Tarihi: 13/Haziran/2008
    Erkek

    eywallah dostum ;)

  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    hsyN
    hsyN's avatar
    Kayıt Tarihi: 15/Şubat/2011
    Erkek

    algoritmalar ve prog dersinde görüyoz biz de bunları, eyvallah hocam dursun kenarda.


    test 1 2
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    pSkpt
    pSkpt's avatar
    Kayıt Tarihi: 10/Aralık/2010
    Erkek

    Takipteyim.

    Hocam PDF ya da Word şeklinde var mı?

    Varsa çok iyi olur. :)


    İmza...
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    SpArK
    SpArK's avatar
    Kayıt Tarihi: 17/Temmuz/2005
    Erkek

    Faydali. Cizik.

  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    numanbaba
    numanbaba's avatar
    Kayıt Tarihi: 27/Mart/2011
    Erkek

    çizik

  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    KuZeTaR
    KuZeTaR's avatar
    Kayıt Tarihi: 26/Aralık/2009
    Erkek

    adamsın olm ya :D

  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    YekteranBaymedir
    YekteranBaymedir's avatar
    Kayıt Tarihi: 10/Temmuz/2009
    Homo

    matlab güzel (dildir demeyeceğim) bir dünyadır.

    ama çalışması için bir şeye muhtaç olan dillerden her zaman nefret etmişimdir.

  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ultrAsker
    ultrAsker's avatar
    Kayıt Tarihi: 14/Ağustos/2005
    Erkek

    matlab in help i candır can :D güzel konu


    i ve got nothing against god. its his fan club i cant stand.
  11. KısayolKısayol reportŞikayet pmÖzel Mesaj
    american
    mizahi
    mizahi's avatar
    Kayıt Tarihi: 02/Haziran/2007
    Erkek

    konu cok iyi. benim bir sorum olacak hemen.

    simulinkte scope a iki input nasil verebilirim. ayrica x-axis 10da limitli, 20ye nasil cikarabilirim.


    All I need is a possibility.
Toplam Hit: 2540 Toplam Mesaj: 14