20 Ekim 2012

MATLAB'da Matrisler ve Matris İşlemleri 2

Merhabalar;

MATLAB'da matris işlemleri için bazı fonksiyonlar tanımlanmıştır. Bunların en sıkça kullanılanlarından bahsedeceğim.

rand(): 0 ve 1 arasında rastgele düzenli dağılmış sayılardan matris oluşturur. Örneğin:

>> rand(2,3)

ans =

    0.9572    0.8003    0.4218
    0.4854    0.1419    0.9157

randn(): Rastgele normal dağılmış sayılardan matris oluşturur. Örneğin:

>> randn(2,3)

ans =

    1.4090    0.6715    0.7172
    1.4172   -1.2075    1.6302

eye(): Birim matris oluşturmaya yarar. Örneğin:

>> eye(3,3)

ans =

     1     0     0
     0     1     0
     0     0     1

ones(): 1 rakamından oluşan bir matris oluşturur. Örneğin:

>> ones(2,3)

ans =

     1     1     1
     1     1     1

zeros(): 0 rakamından oluşan bir matris oluşturur. Örneğin:

>> zeros(4,2)

ans =

     0     0
     0     0
     0     0
     0     0

diag(): Matrisin köşegenini bulur. Örneğin başta tanımladığımız A matrisi için:

>> A

A =

     1     8     5    19
     2     3     6     7

>> diag(A)

ans =

     1
     3

fliplr(): Matrisi soldan sağa çevirir. Örneğin:

>> A

A =

     1     8     5    19
     2     3     6     7

>> fliplr(A)

ans =

    19     5     8     1
     7     6     3     2

flipud(): Matrisi yukarıdan aşağıya çevirir. Örneğin:

>> A

A =

     1     8     5    19
     2     3     6     7

>> flipud(A)

ans =

     2     3     6     7
     1     8     5    19

sum(): Matris elemanlarını sütun sütun toplamaya yarar. Her sütundaki elemanlar kendi aralarında toplanır.Örneğin:

>> A

A =

     1     8     5    19
     2     3     6     7

>> sum(A)

ans =

     3    11    11    26

Bu işlemde bir tane daha sum() kullanırsak tüm elemanları toplayabiliriz:

>> sum(sum(A))

ans =

    51

sum(sum(A))'nın eşdeğeri de vardır .Şöyledir:

>> sum(A(:))

ans =

    51

min(): Matrisin en küçük elemanını bulmaya yarar. Tıpkı sum() gibi sütun sütun işlem yapar. Örneğin:

A =

     1     8     5    19
     2     3     6     7

>> min(A)

ans =

     1     3     5     7

Her sütundaki en küçük elemanı verdi. En küçük elamana ulaşmak için:

>> min(min(A))

ans =

     1

yazılabilir. Ya da:

>> min(A(:))

ans =

     1

max(): Matrisin en büyük elemanını bulmaya yarar. min() fonksiyonu gibidir. Örneğin:

>> A

A =

     1     8     5    19
     2     3     6     7

>> max(A)

ans =

     2     8     6    19

Her sütundaki en büyük elamanları verdi. En büyük elemana ulaşmak için:

>> max(max(A))

ans =

    19

Ya da:

>> max(A(:))

ans =

    19

yazılabilir.

mean(): Ortalama bulmaya yarayan fonksiyondur. Yine bu fonksiyon da sütun sütun işlem yapar. Örneğin: 

>> A

A =

     1     8     5    19
     2     3     6     7

>> mean(A)

ans =

    1.5000    5.5000    5.5000   13.0000

Görüldüğü gibi herbir sütunun elamanlarını toplayarak ortalama buldu. Toplam ortalamayı bulmak için:

>> A

A =

     1     8     5    19
     2     3     6     7

>> mean(mean(A))

ans =

    6.3750  

Ya da:

>> mean(A(:))

ans =

    6.3750

yazılabilir.

det(): Kare matrislerin determinantını bulmaya yarar. Matris kare değilse hata verir. Örneğin:

>> a

a =

     1     2
     2     3

>> det(a)

ans =

    -1

size(): Matrisin boyutlarını verir. Örneğin:

>> A

A =

     1     8     5    19
     2     3     6     7

>> size(A)

ans =

     2     4

İlk sayı satır sayısı, ikinci sayı sütun sayısıdır.

length(): Matsisin uzunluğunu verir. Örneğin:

>> A

A =

     1     8     5    19
     2     3     6     7

>> length(A)

ans =

     4

reshape(): Matrisin yeniden boyutlandırılmasını sağlar. Fakat yeni boyutun da eski boyutu desteklemesi gerekir. Örneğin:

>> A

A =

     1     8     5    19
     2     3     6     7

>> reshape(A,4,2)

ans =

     1     5
     2     6
     8    19
     3     7

2x4'lük bir matristen, 4x2 boyutlu bir matrsi elde ettik. Unutulmamalıdır ki yine sütunlarla işlemler yaptık. Sütunları birbirine kuyruk gibi bağlanmış olarak hayal edebilirsiniz. Burada reshape(3,3) yazsaydık;
??? Error using ==> reshape
To RESHAPE the number of elements must not change.   şeklinde bir hata mesajı alacaktık.

dot(): Vektörlerin ve matrislerin skaler çarpımlarını bulan fonksiyondur. Örneğin matrislerde:

a =

     1     2     3
     2     3     4

>> b=[3,4,5;5,6,7]

b =

     3     4     5
     5     6     7

>> dot(a,b)

ans =

    13    26    43

Vektörlerde:

>> a=[1,2,5,6,7]

a =

     1     2     5     6     7

>> b=[4,6,4,1,0]

b =

     4     6     4     1     0

>> dot(a,b)

ans =

    42

repmat(): Bu fonksiyon bir matrisi başka bir matristen farklı bir boyutta klonlayacağımız zaman kullanılır. Örneğin:

A=repmat(Z,4,2) yazdığımızda A matrisi Z matrisinin 4 defa satırda 2 defa da sütunda tekrar eden matrise eşit olur.


>> Z=[1,2;2,3]

Z =

     1     2
     2     3

>> A=repmat(Z,4,2)

A =

     1     2     1     2
     2     3     2     3
     1     2     1     2
     2     3     2     3
     1     2     1     2
     2     3     2     3
     1     2     1     2
     2     3     2     3


Bu fonksiyonlar MATLAB'da işlem yaparken sık sık başvurulan fonksiyonlardır. Daha ayrıntılı bilgilere ulaşmak için daha önce bahsettiğim help komutunu kullanabilirsiniz.

Hoşçakalın.


Devamını oku ...

MATLAB'da Matrisler ve Matris İşlemleri 1

Merhabalar;

MATLAB yazı dizimin devamı olarak bu yazıda sizlere matrisler ve matris işlemlerinden bahsedeceğim.

İlk olarak vektör nasıl tanımlanır ile başlamak istiyorum:

A=[1:2:14] yazarsak elemanları 1'den başlayan 14'e kadar 2 aralıkla devam eden satır vektör oluştururuz.
A=1:2:14 de bunun eşdeğeridir.


>> A=[1:2:14]

A =

     1     3     5     7     9    11    13

>> A=1:2:14

A =

     1     3     5     7     9    11    13

Bir diğer yol da:


>> B=linspace(1,14,7)

B =

    1.0000    3.1667    5.3333    7.5000    9.6667   11.8333   14.0000

Burada 1'den 14'e kadar eşit aralıklarla artan 7 tane sayıdan oluşan satır vektör oluşturulur.


Vektörün içinden herhangi bir elemana ulaşmak için B(satır veya sütun no) yazılabilir:


>> B(3)

ans =

    5.3333

Matris tanımlamak içinse:

A=[1 8 5 19;2 3 6 7] ile 2x4 boyutlu A matrisini tanımlayabiliriz. Sütun değiştirmek için noktalı virgül kullanmak şarttır. Buna eşdeğer bir tanımlama ise;
A=[1,8,5,19;2,3,6,7]'dir. A matrisi hafızada şu şekilde tutulacaktır:

A =

     1     8     5    19
     2     3     6     7

Bu matrisin içinden herhangi bir elemana ulaşmak istenildiğinde A(satır no, sütun no) yazmak yeterlidir. Örneğin A matrisindeki 2. satır 4. sütun elemanına ulaşmak için A(2,4) yazılmalıdır. Cevap 7 olacaktır.

Daha kompleks bir örnek vermek gerekirse, örneğin bir değil de birden fazla elemana ulaşılmak istenirse ne yapılmalıdır buna değineyim. Mesela A matrisinde 2. satırda 2,3,4 numaralı sütunlara ulaşılmak isteniyor. Bunun için A(2,2:1:4) veya A(2,2:4) yazmak gerekir. İlk kullanımda 2. sütundan başlayıp, 4. sütuna kadar 1'er adımla seç olarak düşünülmeli. İkincide ise Matlab, bahsettiğimiz 1'er adımı yazmamızı zorunlu tutmadığı için adım sayısını yazmadım. Cevap:

ans =

     3     6     7

Başka bir örnekle pekiştirmek gerekiyorsa, eğer 2. satırın tüm sütunları istenilseydi A(2,:) yazmak yeterli olacaktır. Cevap:

ans =

     2     3     6     7


Matris İşlemleri

Toplama işlemi: Matrislerde toplama işlemi yapılabilmesi için toplanan matrislerin aynı boyutta olması gerekir. Örneğin:


>> a=[22,3,4,13;21,5,7,10;90,4,1,3]

a =

    22     3     4    13
    21     5     7    10
    90     4     1     3

>> b=[4,4,6,89;4,5,20,3;3,6,8,0]

b =

     4     4     6    89
     4     5    20     3
     3     6     8     0

olarak tanımlanmış iki matrisi toplayalım:


>> a+b

ans =

    26     7    10   102
    25    10    27    13
    93    10     9     3

Eğer bir matris bir sayı ile toplanmak istenirse, o zaman matrisin her elemanı tek tek o sayı ile toplanır. Örneğin:


>> a

a =

    22     3     4    13
    21     5     7    10
    90     4     1     3

>> a+1

ans =

    23     4     5    14
    22     6     8    11
    91     5     2     4

Çıkarma işlemi: Toplama işleminde olduğu gibi çıkarma işlemi uygulanacak matrisler aynı boyutta olmalıdır. Örneğin:

>> a

a =

    22     3     4    13
    21     5     7    10
    90     4     1     3

>> b

b =

     4     4     6    89
     4     5    20     3
     3     6     8     0

>> a-b

ans =

    18    -1    -2   -76
    17     0   -13     7
    87    -2    -7     3

Bir sayıdan bir matris çıkarılacaksa veya matrsisten bir sayı çıkarılacaksa eleman eleman işlem yapılır. Örneğin:

>> b

b =

     4     4     6    89
     4     5    20     3
     3     6     8     0

>> a-b

ans =

    18    -1    -2   -76
    17     0   -13     7
    87    -2    -7     3

>> 1-b

ans =

    -3    -3    -5   -88
    -3    -4   -19    -2
    -2    -5    -7     1

Çarpma işlemi: Çarpma işlemi iki anlamda ele alınmalıdır. Birincisi eleman elemana çarpımdır. Yani mertebeleri aynı olan elamanları çarpıp aynı mertebeye yazmaktır. Bunun için eşit boyutlu matrisler gereklidir. Örneğin:

>> a

a =

    22     3     4    13
    21     5     7    10
    90     4     1     3

>> b

b =

     4     4     6    89
     4     5    20     3
     3     6     8     0

>> a.*b

ans =

          88          12          24        1157
          84          25         140          30
         270          24           8           0

İkinci anlam ise matematiksel anlamdır. Yani çarpılacak iki matrisin boyutlarının uygun olması gerekir. İlk matrisin sütun sayısı ile ikinci matrisin satır sayısı aynı olmalıdır. Örneğin:

>> c=[1,3,5;7,2,4]      % 2x3 boyutlu

c =

     1     3     5
     7     2     4

>> d=[2,3,4,1;2,3,6,7;4,4,5,0]       % 3x4 boyutlu

d =

     2     3     4     1
     2     3     6     7
     4     4     5     0

>> c*d       % sonucun 2x4 boyutlu olması gerekir

ans =

    28    32    47    22
    34    43    60    21

Üs alma işlemi: Yine çarpma işlemi gibi iki şekilde yapılır. Bir a matrisinin  her bir elemanının n. kuvvetlerinden oluşan matrisi bulmak için a.^n işlemi kullanılır. Satır ve sütun sayıları eşit bir kare matrisi ardışık olarak n defa kendisiyle çarparak, a matrisinin n. kuvvetini bulabiliriz.Örneğin a matrisinin karesi için a*a veya a^2, kübünü buldurmak için a*a*a veya a^3, dördüncü kuvvetini buldurmak için a*a*a*a veya a^4 işlemiyle buldurabilirz.Ancak 2005 nci kuvvetini buldurmak için  a^2005 yazmak yeterlidir. Örneğin:

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

a =

     1     2     3
     4     5     6
     7     8     9

>> a.^3

ans =

     1     8    27
    64   125   216
   343   512   729

>> a^3

ans =

         468         576         684
        1062        1305        1548
        1656        2034        2412

Burada ilk olarak eleman elemana işlem yapıldı. Yani a.^3 yazarak tüm elemanların ayrı ayrı 3. kuvvetleri bulundu ve o metrebeye yazıldı. İkinci yapılan ise matrisi kendisiyle 3 defa çarpmakla eşdeğerdir. Yani matrisin tamanının 3. kuvvetini almaktır. Bunu yapabilmek içinse kare matris olması şarttır. Eğer kare değilse hata alırsınız:

??? Error using ==> mpower
Inputs must be a scalar and a square matrix.

MATLAB'da matris işlemleri böyledir. Örnekler çeşitlendirilebilir. Bir sonraki yazımda matris işlemlerinde kullanılan fonksiyonlara değineceğim.

Hoşçakalın.


Devamını oku ...

19 Ekim 2012

MATLAB'da Matematiksel İşlemler

MATLAB'ın kullanım alanlarından biri de matematiksel işlemlerdir. Dört işlem, açısal işlemler, lineer denklemler, vektörlü işlemler MATLAB'da kolaylıkla yapılır ve kullanımı oldukça yalındır.

Önceden belirtmekte fayda var, matlab'da çalışırken yorum satırlarını yazmak için % işareti kullanılır. Herhangi bir komut hakkında yardım ve bilgi almak istenirse de help Komut_İsmi şeklinde bir komut yazılırsa  o konu hakkında tüm bilgiler ekranda gösterilir.

Şimdi basit bir işlem yapalım. Örneğin bir değişken tanımlanacaksa ve ilk değer atanacaksa, komut satırında:


>>a=5 yazmak ve enter'a basmak yeterli olacaktır. Noktalı virgül konulduğunda enter'a basınca a'nın değeri tekrar listelenmez.

Aynı şekilde işlemler de yaptırılabilir. +, -, *, /, ^ işaretleri kullanılabilir. Örneğin yandaki görselde a, b, c değişkenlerine çeşitli değerler atanmış ve sonra da b ve c çarpılıp a ile toplanmak suretiyle d değişkenine atanmış. d değişkeni hesaplanmış ve de sonuna noktalı virgül eklenmediği için de değer ekrana basılmıştır.

Örnek: a=(2+5i)*(45-8i) işlemini matlab'da yapınız:
Çözüm: Komut satırına  a=(2+5i)*(45-8i) yazmak yeterlidir. MATLAB i'yi tanır.

Görüldüğü gibi işlemler kağıt üzerindeki matematiksel işlemlerle aynı şekilde yapılıyor. Aşağıda tablosunu paylaşıyorum:


Bunların yanında işlemleri kolaylaştıran birçok matematiksel fonksiyon vardır:


Bu fonksiyonları Command Window'da parametreleriyle yazdığınızda istediğiniz cevabı alırsınız. Örneğin; sin(pi/6) yazarsanız sonuç 0.5000 olarak görünecektir (pi=pi sayısı).

  • who ve whos Komutları:
Hafızadaki değişkenlerin yalnızca adlarını gösteren komut whodur.
Adları ile birlikte boyutlarını, kapladıkları alanı, ve tiplerini de gösteren komut ise whosdur.

  • clc ve clear Komutları:
clc komutuyla çalıştığımız alan olan Command Window'da yazılan her şey silinir. Fakat yazılan komutlar Command History'den silinmez.
clear komutuyla ise hafızada saklanan değişkenler silinir (Workspace temizlenir.).

Evet arkadaşlar, MATLAB'da matematiksel işlemler genel olarak böyle. Daha ayrıntılı bilgiye ihtiyacınız olursa bana ulaşabilirsiniz. Bir sonraki yazımda matris işlemlerini anlatacağım.

Umarım yararı olmuştur. Hoşçakalın...


Devamını oku ...

9 Ekim 2012

Litvanya'da 1 Ay

Merhaba arkadaşlar;

Takvime baktım da ben Litvanya'ya geleli 1 ayı geçmiş. Talihsizlikler, eğlenceli günler, dersler, gezmeler vs birçok şey sığdı bu bir aya.

Biraz buradan bahsedeyim sizlere. Litvanya'nın başkenti Vilnius'tur. 3.5 milyon nüfusun büyük bir kısmı burada yaşıyor. İlk Erasmus toplantımızda bu sayıyı duyunca kıkırdamalar olmuştu salonda. Özellikle Türk öğrenciler olarak çok şaşırmıştık. Türkiye'ye göre ne kadar da az geldi bize.

İlk geldiğimde alışmam zor olmadı. Türkiye gibi yeşilliğin bol olduğu bir ülke burası da. Hani başka bir yere gelmiş gibi hissedemedim kendimi. Ülke güzel ve sakin. Trafik yok denecek kadar az, insanlar saygılı. Ulaşım Türkiye'ye göre trafiğin olmamasından dolayı gerçekten daha hızlı fakat mesafeler uzak. Trolleybüs denilen elektrikli otobüsler Vilnius'un her yanını elektrik ağlarıyla sarmış durumda. Türkiye'de bazı illerde bu sistemin yerine tramvay sistemi var ve bence tramvay sistemi daha modern. Ulaşım ucuz ve eğer yol kartı sahibi olursanız ayda 20 Litas'a otobüs ve trolleybüsleri istediğiniz kadar kullanabiliyorsunuz. Erasmus öğrencileri için bu kartın başvuruları okulun ilk günü kolayca yapılabiliyor. Sağolsunlar yardımcı oluyorlar. Eğer kartınız yoksa kağıt bilet alıp, otobüs ya da trolleybüsteki aletlerde biletlerinizi delmeniz lazım. Aksi takdirde her an bir duraktan binebilecek görevlilere yakalanabilirsiniz ve 100 Litas'lık para cezası ödeyebilirsiniz.

Hava durumundan bahsedecek olursam o konu çok fena. Çünkü burası Baltık Denizi etkisiyle oldukça soğuyor. Bazen bu soğukta bu kadar yeşillik nasıl var diye düşünmüyor değilim. Bu soğukluktan olsa gerek insanlar daha az gülümsüyor, herkes işinde gücünde. Etrafta çok fazla çocuk göremiyorum, sanırım onlar da okullarında.



Şaşırdığım bir şey de Vilnius Gediminas Technical University'e gelen 200 küsür Erasmus öğrencisi arasında 54 tanesinin Türk oluşu. Bu gerçekten çok şaşırttı beni. Burada bu kadar Türk arkadaşımın olacağını tahmin etmemiştim.

Burada günler şimdilik eğlenceli geçiyor. Gezmek, görmek, farklı insanlarla bir arada olmak güzel bir şey. İngilizcemin geliştiğini farkediyorum. Her tarafta yabancı olan insanlar olunca anadilini konuşamamak ilk başta zordu ama artık İngilizce konuşmak rutin oldu. Yabancı arkadaşlarımı ise çok seviyorum.


Okul hayatımdan bahsedeyim biraz. Okula gidip gelmek bazen zor oluyor çünkü derslerimin bir kısmı trolleybüs ile 50 dakika uzaklıktaki elektronik fakültesinde. Bina baya eski fakat içini modernize etmişler. Laboratuvarları oldukça iyi. Ders yoğunluğum ise başladı bile. Sınavlara bile yaklaştık. Bazı derslerim zor geliyor, bazıları ise kolay. Ama çalışınca olmayacak gibi değiller. Size bir tavsiye, "ben erasmusum, ders çalışmak için gelmedim" demeyin. Yine de çalışın biraz. Bir şekilde geçin de nasıl geçerseniz geçin dersleri.


Son olarak da haftasonu gittiğim Palanga, Klaipeda ve Nida'dan bahsedeyim. Palanga oldukça şirin bir sahil şeridi. Bol bol hediyelik eşya bulabileceğiniz ve sakince etrafı gezebileceğiniz bir yer. Baltık Denizi suyuna ilk burada dokundum. Mavi değil griydi ama yine de güzeldi. Uzun zaman sonra ilk defa martı görmenin heyecanını da burada yaşadım. Sonrasında Litvanya'nın 3. büyük şehri olan Klaipeda 'ya gittim. Hava oldukça yağmurlu olduğundan pek gezme fırsatım olmadı ama gördüğüm kadarıyla güzel bir şehir. Son olarak da Nida'ya gittim. Burası bir kasaba. Yeşil ve koruma altına alınmış. Orman yolunda ilerlerken önünüze tilkiler, vahşi domuzlar çıkabiliyormuş ama zararsızlarmış. Orada da denizi selamladıktan sonra döndüm ve oralarda harika anılar bıraktım.


Hoşçakalın...


Devamını oku ...