İndeksleme: Matrisin İçinden Veri Çekmek
- 24 Şub
- 2 dakikada okunur
Devasa bir veri setiyle çalıştığınızı düşünün. Bir sıcaklık sensöründen 10.000 adet ölçüm aldınız ve bunları kocaman bir matrisin içine kaydettiniz. Peki, tam olarak 542. saniyedeki sıcaklık değerine ulaşmak veya sadece ilk 100 ölçümün ortalamasını almak isterseniz ne yapacaksınız? Bütün veriyi baştan aşağı okumak mantıklı mıdır?
Tabii ki hayır. Veri analizi yaparken, devasa tabloların içinden sadece işimize yarayan kısımları "cımbızla çeker" gibi almamız gerekir. Yazılım dünyasında bir verinin adresini belirterek onu çekip alma işlemine İndeksleme (Indexing) denir.
Vektörlerde İndeksleme: MATLAB'ın 1 Numaralı Kuralı
Tek boyutlu bir veri dizisinden (vektör) eleman seçmek en basit indeksleme türüdür. Değişkenin adını yazarız ve yanına normal parantez () açarak kaçıncı sıradaki elemanı istediğimizi belirtiriz. Burada, Python veya C gibi dillerden gelenleri tuzağa düşüren devasa bir kural vardır: MATLAB'da sayma işlemi 0'dan değil, 1'den başlar!
Eğer elinizde V = [10 20 30 40 50] şeklinde bir vektör varsa:
Birinci elemanı (10) çekmek için V(1) yazarsınız.
Üçüncü elemanı (30) çekmek için V(3) yazarsınız. Eğer V(0) yazarsanız, MATLAB size "0. indeks diye bir şey yoktur, saymaya 1'den başla" diyerek hata verecektir.

Matrislerde İndeksleme: Satır ve Sütun Koordinatları
İki boyutlu bir tabloda (matris) aradığınız veriyi bulmak, tıpkı sinemada veya uçakta koltuk bulmaya benzer. Hem sırayı (Satır) hem de koltuk numarasını (Sütun) bilmeniz gerekir.
Kural daima şudur: matris_adi(Satir_Numarasi, Sutun_Numarasi)
Diyelim ki elinizde 5 satır ve 5 sütundan oluşan bir sensör matrisi var.
2. satır ve 4. sütunun kesiştiği o tekil hücredeki değeri okumak için: A(2, 4) yazarsınız. Sistem doğrudan o adrese gider, kutunun içindeki değeri alır ve hesaplamalarınızda kullanmanız için size sunar.

İki Nokta (:) ile Dilimleme (Slicing): Toptan Veri Çekmek
Bazen tek bir hücreyi değil, koca bir satırı veya sütunu baştan aşağı almak isteriz. Örneğin, matrisin 3. sütunundaki tüm sensör verilerini grafiğe dökmek istiyorsunuz. İşte burada "İki Nokta" (:) operatörü "Hepsi / Tamamı" anlamına gelir.
Tüm Satırlar, 3. Sütun: Eğer A(:, 3) yazarsanız, sistem 3. sütuna gider ve o sütundaki tüm satırları baştan aşağı çekip size yeni bir dikey vektör olarak verir.
1. Satır, Tüm Sütunlar: Eğer A(1, :) yazarsanız, matrisin en üstteki 1. satırını baştan sona kesip alır.
Hatta sadece belirli bir aralığı da kesebilirsiniz. Örneğin, 2. sütunun sadece 1. ve 3. satırları arasındaki kısmını almak için: A(1:3, 2) yazmanız yeterlidir. Buna veriyi dilimlemek (Slicing) denir.
Son Elemanı Bulmak: "end" Komutu
Bazen bir sensör günlerce çalışır ve elinizdeki vektörün kaç elemandan oluştuğunu (boyutunu) bilemezsiniz. 1 milyonuncu elemanda mıyız, yoksa 5 milyonuncu mu? Ancak sizin sadece "En son okunan değeri" almanız gerekiyordur.
Vektörün boyutunu hesaplamakla uğraşmak yerine doğrudan end komutunu kullanırız.
Vektörün en son elemanını çekmek için: V(end)
Matrisin en son satırını ve en son sütununu (yani sağ en alt köşeyi) çekmek için: A(end, end)
Bir vektörün sondan bir önceki elemanını çekmek için matematiksel işlem bile yapabilirsiniz: V(end - 1)
İyi Çalışmalar Dilerim...


