#4 MATLAB: Matris Yönetimi

MATLAB kullanılarak yazılan kodlarda matris önemli bir yere sahiptir. Matrisler ile işlem yapmak MATLAB için diğer programlara göre oldukça kolay ve işlevseldir.

Matrisi tanımlama ve o matris üzerinde işlem yapabilme kolaylığı kullanıcı için MATLAB’ de sağlanmıştır.

MATLAB Programlamaya Giriş başlıklı yazıda matrislerin nasıl tanımlanacağı detaylı bir şekilde mevcuttur. Bu tanımlamalara ek olarak bir matris tanımlanırken bir başka matriste o tanımlamanın içerisinde kullanılabilmektedir.


A = [1, 2, 3];
B = [99, A]

Çıktı:

B =
     99   1   2   3

A = [1, 2, 3];
C = [6, 7, 8; A]

Çıktı:

C =
     6   7   8
     1   2   3

Tanımlanmış bir matrisin elemanları sıra sayısına göre tespit edilebilir, istenirse matrise sonradan eleman eklenebilir. Örnek olarak 4 elemanlı tanımlanmış bir D matrisinin elemanlarını tespit etmek için D(1) ,D(2), D(3) ve D(4) komutları kullanılır. Tanımlanmış D matrisine eleman eklenmek istenildiğinde D(5) = 10 gibi komutlar kullanılır. Eğer sıra sayısı belirtilmemiş elemanlar mevcutsa MATLAB bu elemanları 0 kabul eder.


D = [1, 2, 3, 4];
D(2)

Çıktı:

ans =
      2

D(5) =10;
D(10) = 17;
D

Çıktı:

D =
     1   2   3   4   10   0   0   0   0   17

Bir matris, elemanları arasında eşit aralıklar bırakılarak tanımlanmak istenildiğinde iki nokta(:) operatörü kullanılmaktadır.


E = [1:8]

Çıktı:

E =
    1   2   3   4   5   6   7   8

F = [1 : 7 : 29]

Çıktı:

F =
    1   8   15   22   29

İki nokta operatörü aynı zamanda tüm satırı ya da tüm sütunu temsil etmektedir.


G = [1, 2, 3, 4; 5, 6, 7, 8; 9, 10, 11, 12;13, 14, 15, 16]

Çıktı:

G =
     1    2    3    4
     5    6    7    8
     9    10   11   12
     13   14   15   16
G(3, :)

Çıktı:

ans =
      9   10   11   12
G(2: 3, :)

Çıktı:

ans =
      5    6    7    8
      9    10   11   12
G(:,3)

Çıktı:

ans =
      3
      7
      11
      15

G(:, 2:3)

Çıktı:

ans =
      2    3
      6    7
      10   11
      14   15

Matrisin belirli satır ve sütunlardaki elemanları elde etmek için G(S1:S3 , K2:K5) formatında kodlama yapılmaktadır.

G(3:4 , 2:4)

Çıktı:

ans =
      10   11   12
      14   15   16
G(:);
G

Çıktı:

G =
     1
     5
     9
     13
     2
     6
     10
     14
     3
     7
     11
     15
     4
     8
     12
     16

İki nokta operatörü kullanılarak matrislerde doğrudan adres belirtilebilmektedir.

G(1,end)

Çıktı:

ans =
      4
G(end,2)

Çıktı:

ans =
      14
G(end,end)

Çıktı:

ans =
      16
G(end, : )

Çıktı:

ans =
      13   14   15   16
G(end)

Çıktı:

ans =
      16

İki vektörün birleştirilerek tüm olasılıkları kapsayan çıktısı meshgrid() fonksiyonu kullanılarak elde edilmektedir.


x = [1 : 5];
y = [1 :3];
[new_x , new_y] = meshgrid(x, y);

Çıktı:

new_x =
        1   2   3   4   5
        1   2   3   4   5
        1   2   3   4   5

new_y =
        1   1   1   1   1
        2   2   2   2   2
        3   3   3   3   3
H = new_x .* new_y

Çıktı:

H =
    1   2   3   4   5
    2   4   6   8   10
    3   6   9   12  15

İstenilen boyutlarda tüm elemanları sıfır veya 1 olan matrisler matematikte özel oldukları gibi MATLAB ortamında da özeldir. Bu yüzden kod ile sıfır veya 1 matrisi oluşturulabilmektedir.

  • zeros(m) komutu m x m boyutunda sıfır (0) matrisi oluşturur.
  • zeros(m,n) komutu m x n boyutunda sıfır(0) matrisi oluşturur.
  • ones(m) komutu m x m boyutunda bir(1) matrisi oluşturur.
  • ones(m,n) komutu m x n boyutlarında bir(1) matrisi oluşturur.

Matrisler üzerinde köşegen kullanılarak da işlem yapılabilmektedir. Köşegen işlemleri için diag() fonksiyonu kullanılmaktadır.

diag() fonksiyonu, 1 x n boyutundaki satır matrislerin elemanlarını n x n boyutunda köşegenleri hariç diğer elemanları 0 olan bir matrisin köşegenlerine yerleştirme işlemini yapmaktadır.


A = [1, 2, 3];
diag(A)

Çıktı:

ans =
      1   0   0
      0   2   0
      0   0   3

diag() fonksiyonu aynı zamanda m x n boyutundaki matrislerin a11 , a22 , a33 gibi aii konumundaki kare matris köşegeni elemanlarını bir sütun matrisi olarak çıktı vermektedir.


I = [1, 2, 3, 4 ; 5, 6, 7, 8 ; 9, 10, 11, 12];
diag(A)

Çıktı:

ans =
      1
      6
      11

  • diag(A, 1) komutu A matrisinin esas köşegeninden 1 birim yukarısındaki köşegeni çıktı vermektedir.
  • diag(A, -1) komutu A matrisinin esas köşegeninin 1 birim aşağısındaki köşegeni çıktı vermektedir.

Yukarıdaki resim referans alınarak aşağıdaki kodlar çalışmaktadır.


I = [1, 2, 3, 4 ; 5, 6, 7, 8 ; 9, 10, 11, 12];
diag(I, 1)

Çıktı:

ans =
      2
      5

Yukarıdaki resim referans alınarak aşağıdaki kodlar çalışmaktadır.


diag(I, -1)

Çıktı:

ans =
      3
      2

Yukarıdaki resim referans alınarak aşağıdaki kodlar çalışmaktadır.


A = [1, 2, 3];
diag(A)

Çıktı:

ans =
      1   0   0
      0   2   0
      0   0   3

Yukarıdaki resim referans alınarak aşağıdaki kodlar çalışmaktadır.


diag(A, 1)

Çıktı:

ans =
       0   1   0   0
       0   0   2   0
       0   0   0   3
       0   0   0   0

Matrislerde dikey eksene göre simetri (y eksenine göre-aynaya göre) alınmak istenildiğinde fliplr() fonksiyonu kullanılmaktadır.


J = [1, 2, 3; 4, 5, 6; 7, 8, 9];
fliplr(J)

Çıktı:

ans =
      3   2   1
      6   5   4
      9   8   7

Matrislerde yatay eksene göre simetri (x eksenine göre) alınmak istenildiğinde flipud() fonksiyonu kullanılmaktadır.


K = [1, 2, 3, 4; 5, 6, 7, 8; 9, 10, 11, 12; 13, 14, 15, 16]
flipud(K)

Çıktı:

ans =
      13  14  15  16
      9   10  11  12
      5   6   7   8
      1   2   3   4

Satır ve sütunlarındaki elemanların toplamı birbirine eşit olan sihirli matrisleri oluşturabilmek için magic() fonksiyonu kullanılmaktadır.


L = magic(3)

Çıktı:

L =
     8   1   6
     3   5   7 
     4   9   2

Sihirli matris olarak isimlendirilen matrislerde köşegenlerin toplamı, her bir satırdaki elemanların toplamı ve her bir sütundaki elemanların toplamı birbirine eşittir. Yukarıdaki L matrisi için her satır ve sütun toplamı 15 ederken köşegen elemanları olan 8,5 ve 2’nin de toplamı da 15 etmektedir.

Bu yazımda MATLAB’ de matrislerin yönetimine değindim.

Yorum bölümünden tüm sorularınızı bana iletebilirsiniz.

Çalışmalarınızda başarılar dilerim.

Hamit Can Dinç.

Leave a Reply

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir


The reCAPTCHA verification period has expired. Please reload the page.