Matlab/Vektörler ve Matrisler
Vektör ve matris operasyonları sözkonusu olduğu zaman MATLAB'in diğer programlama dillerine üstünlüğü tartışılmaz. Bu üstünlüğün sebebi MATLAB'in çıkış süreci ile yakından ilgili. 70'lerin sonunda geliştirilmeye başlanan MATLAB'in çıkış noktası o dönemin yaygın dili olan Fortran'ı kullanmadan matris ve vektör işlemlerini kolayca yapmaktı[1]. Geliştirilen yeni sisteme bu nedenle Matrix Laboratuary (MATLAB) adı verilmiştir.
Vektör mü, Matris mi?
[değiştir]Matematik terminolojisi ile konuşacak olursak vektörler aslında tek satırlı veya tek sütünlu matrislerdir. Dolayısı ile vektörler matrislerin özel bir çeşidi olarak değerlendirebilir. MATLAB ortamında da aynı ilke geçerlidir. Tek boyutlu olmasının dışında vektörlerin matrislerden bir farkı yoktur. Dolayısı ile vektör dediğimiz veri yapıları aslında bir matristir ve matrisler için geçerli olan uygulamalar vektörler için de geçerlidir.
Vektörler
[değiştir]Bu kısa girişten sonra şimdi vektörlerin nasıl tanımlandığına bakalım. Diyelim ki
şeklinde 3 elemanlı bir x yatay vektörü tanımlamak istiyoruz. Bu iş için aşağıdaki komutu yazmanız yeterli:
>> x = [1 2 3]
x =
1 2 3
Aynı değerlere sahip dikey bir matris yaratmanın iki temel yolu vardır. Birinci yöntemde ; sembolü kullanarak vektör elemanlarının yana doğru değil alta doğru eklenmesini sağlanır. İkinci yöntemde ise yatay vektör tanımının hemen yanına transpoze almayı sağlayan ' sembolü yerleştirilir. Kullanım kolaylığı açısından ikinci yöntem genelde tercih edilir.
>> x = [1; 2; 3];
% veya
>> x = [1 2 3]';
Matrisler
[değiştir]Hemen bir örnek ile başlayalım.
ile gösterilen x matrisini MATLAB ile tanımlamak için şu komutu kullanabiliriz:
>> x = [1 2 3; 4 5 6];
Dikkat ederseniz, 3 rakamından hemen sonra ; sembolü kullanılarak 4,5 ve 6 rakamlarlarının bir alt satıra yazılması sağlandı. Her ne kadar dolambaçlı bir yol olsa da aynı matrisi transpoze kullanarak da tanımlayabiliriz.
MATLAB komutu | Matematiksel karşılığı |
---|---|
>> x = [1 4; 2 5; 3 6]';
|
|
Uzunluk Hesaplama
[değiştir]Vektör veya matrislerin uzunluğunu hesaplamak için length, size veya numel fonksiyonları kullanılır. Şimdi sırasıyla bu fonksiyonları tanıtalım.
- length
- Kendisine verilen matrisin hangi boyutunda fazla eleman varsa o boyutun uzunluğunu verir. Sözgelimi boyutundaki bir matris için length 3 sonucunu verir. Vektörler sözkonusu olduğu zaman tahmin edeceğiniz gibi vektörün boyunu bu fonksiyonlar kolaylıkla öğrenebilirsiniz.
- size
- Bu fonksiyon ile vektör/matrislerin kaç boyutlu olduğunu ve her boyutunun uzunluğunu ayrı ayrı öğrenebilirsiniz.
- numel
- Bir vektör/matris içinde toplam kaç eleman olduğunu hesaplar. boyutlu bir matris için rakamını üretir.
Örnekler
[değiştir]MATLAB komutu | Komut sonucu |
---|---|
length(rand(1,10))
|
10
|
length(rand(10,1))
|
10
|
length(4)
|
1
|
size(rand(3,2))
|
3 2
|
size(rand(2,3))
|
2 3
|
size(rand(2,3,4))
|
2 3 4
|
length(rand(2,3,4))
|
4
|
numel(rand(2,3,4))
|
24
|
Aritmetik İşlemler
[değiştir]Matrisler (vektörleri de kastediyorum tabii) üzerinde tanımlı bütün aritmetik işlemleri MATLAB ile yapmak mümkün. Toplama ve çıkarma için matrislerin boylarının aynı olması gerekir. Çarpma işleminde ise birinci matrisin sütün sayısı ile ikinci matrisin satır sayısının eşit olması şart. Son olarak matrislerde bölme işlemi ters alma ile yapılıyor. Bölenin tersi (tabii varsa) alınıp bölünen ile çarpılıyor. Şimdi bazı örnek uygulamalar yapalım.
MATLAB komutu | Matematiksel karşılığı |
---|---|
x = [1 1 1; 2 2 2; 4 4 4];
|
|
y = [1 0 0; 0 2 0; 0 0 4];
|
|
z = x + y
z =
2 1 1
2 4 2
4 4 8
|
|
z = x - y
z =
0 1 1
2 0 2
4 4 0
|
|
z = x * y
z =
1 2 4
2 4 8
4 8 16
|
|
>> z = x / y
z =
1.0000 0.5000 0.2500
2.0000 1.0000 0.5000
4.0000 2.0000 1.0000
|
|
Örnekler
[değiştir]- Değerleri 0 ve 1 arasında rastgele değişen 10 elemanlı yatay bir vektör oluşturmak için rand komutu kullanılabilir. Fonksiyonun bir ve ikinci parametreleri sırasıyla oluşturalacak matrisin satır ve sütün sayıları göstermektedir.
x = rand(1,10);
- Değerleri 0 ve 1 arasında rastgele değişen 10 elemanlı dikey bir vektör oluşturmak
x = rand(1,10)