Matlab'da Fonksiyon Oluşturma ve Fonksiyonların Kullanımı
Matlab'da sık kullanılan özelliklerden biri de fonksiyon tanımlamadır. Oldukça basit olan bu yöntem, iç içe 4-5 program yazanlar veya m-file'ları arka arkaya çalıştıranlar için işi tek bir m-file içinde bitirmeye yarar. Bir örnekle anlatalım. Diyelim ki elimizde x ve y gibi 2 adet uzun vektör var, biz bu vektörlerin içindeki en büyük 3 değeri a ve b gibi 2 vektörün içine atmak istiyoruz. Fakat bunu ana programımızın içinde değil de, klasik deyimle bir "subroutine" oluşturarak yapmak istiyoruz. Öncelikli işimiz vektörün değerlerini büyükten küçüğe sıralayıp ilk 3 değeri alan programı yazıp, bunu bir fonksiyon olarak tanımlamak. Dikkat edilmesi gereken fonksiyonun ismi ile m-file'ın isminin aynı olması, örneğin benim m-file'ımın ismi "sırala.m".
Gördüğünüz gibi "sırala" isimli fonksiyonumuzun inputları (x,y) ikilisi, fonksiyonun outputları ise (a,b) ikilisi, bunu kodun en başında belirtmemiz şart. Eğer sizin fonksiyonunuzdaki output sadece 1 tane olacaksa en üstteki kod satırını, "function a=sırala(x,y)" şeklinde yapmanız yeterli olacaktır. Şu anda fonksiyonumuzu yazmış olduk, gelelim bunu ana programımızın içinde nasıl kullanacağımıza. O da aşağıda göründüğü gibi.
Ana programımızda sırası geldiğinde yukarıdaki kod satırını girmemiz yeterli olacaktır. Halihazırda elimizde olan x ve y vektörlerinden, a ve b vektörlerine tek satırda geçiş yapmış olduk. Programlarımızı yazarken bu şekilde fonksiyonlardan yararlanırsak, hem debugging kolay olur hem de alt alta yüzlerce satır gitmemiş oluruz.
function [a,b]=sırala(x,y)
dum1=sort(x,'descend')
a=dum1(1:3)
dum2=sort(y,'descend')
b=dum2(1:3)
Gördüğünüz gibi "sırala" isimli fonksiyonumuzun inputları (x,y) ikilisi, fonksiyonun outputları ise (a,b) ikilisi, bunu kodun en başında belirtmemiz şart. Eğer sizin fonksiyonunuzdaki output sadece 1 tane olacaksa en üstteki kod satırını, "function a=sırala(x,y)" şeklinde yapmanız yeterli olacaktır. Şu anda fonksiyonumuzu yazmış olduk, gelelim bunu ana programımızın içinde nasıl kullanacağımıza. O da aşağıda göründüğü gibi.
.
.
[a,b]=sırala(x,y);
.
Ana programımızda sırası geldiğinde yukarıdaki kod satırını girmemiz yeterli olacaktır. Halihazırda elimizde olan x ve y vektörlerinden, a ve b vektörlerine tek satırda geçiş yapmış olduk. Programlarımızı yazarken bu şekilde fonksiyonlardan yararlanırsak, hem debugging kolay olur hem de alt alta yüzlerce satır gitmemiş oluruz.
Comments