MATLAB ile vektörler ve matrisler üzerinde işlem yapmak çok kolay. Konu başlığına bakıldığında ne var ki bunda demek mümkün. Zira tek bir fonksiyon ile bir vektördeki en büyük veya en küçük değerli elemanı bulmak mümkün.
Bu yazıda öz yinelemeli fonksiyon yazacağız ve bu yazdığımız fonksiyon bize vektör içindeki en büyük değerli elemanı döndürecek.
function enBuyukDeger = eb_bul(vektor)
% Temel durum: Vektör bir elemanlı ise,
% o tek elemanı en büyük değer olarak döndür
if numel(vektor) == 1
enBuyukDeger = vektor;
% Özyinelemeli durum: ilk elemanı,
% vektörün geri kalanının en büyük elemanıyla karşılaştır
else
ebKalan = eb_bul(vektor(2:end));
if vektor(1) > ebKalan
enBuyukDeger = vektor(1);
else
enBuyukDeger = ebKalan;
end
end
end
Fonksiyonu bir vektör içindeki en büyük değeri bulması için çağıralım.
eb_bul([2 3 -4 5 5 6 5 8 9 -9 9 9 1 0 8 9 3 1 ])
ans =
9
Bunun Kısa Yolu Yok Mu?
Olmaz mı? Elbette var. Konu burada kısadan işi çözmek değil aslında. Burada özyinelemenin mantığını öğrenmeye çalışıyoruz. Elbette tek bir satırda bir vektörün veya matrisin en büyük değerli elemanını bulmak mümkün.
Aşağıda bununla ilgili kodu bulabilirsiniz.
max() Fonksiyonu
MATLAB’ın içinde bulunan max() fonksiyonu bu işi çok kolay yapabiliyor. Bu komutun
kullanımına bir örnek verelim.
max([2 3 -4 5 5 6 5 8 9 9 -9 9 1 0 8 9 3 1 ])
ans =
9
Daha da ileri götürelim. En büyük değerli elemanın indis numarasını da bulalım.
[M,I] = max([2 3 -4 5 5 6 5 8 9 -9 9 19 1 0 8 9 3 1 ])
M =
19
I =
12