Matlab ile Inline Fonksiyonlar

Uzun zamandır Matlab hakkında bir şeyler yazmamıştım. Hazır bir ödev için lazım olunca, Inline fonksiyonların Matlab üzerinde nasıl kullanıldığından bir örnekle bu yazıda bahsedeyim.

İlk olarak, inline fonksiyonu ne için kullandığımıza bir bakalım. Normalde Matlab ile fonksiyon tanımlamak için bir .m dosyası oluşturup içerisine uygun formatta bir fonksiyon tanımlar, dosyayı fonksiyon adıyla kaydettikten sonra eğer path’e ekliyse bu fonksiyonu çalıştırabiliyor olurduk. Bunda bir değişiklik yok. Inline fonksiyonlar bize bunu yapmadan, işimizi göreceğimiz tek satırda ifade edilebilen fonksiyonlar sağlıyor.

Matlab dökümantasyonuna göre, inline fonksiyonlar yerini anonymous fonksiyonlara bırakıyor. (http://www.mathworks.com/help/matlab/ref/inline.html)

Bu durumda, bu yazıda anonymous fonksiyonlardan bahsetmek daha iyi olacak. Inline fonksiyonlardan farkı, bunları tanımlarken bir fonksiyon kullanmamak. Daha anlaşılır olması açısından size bir küp alan fonksiyon örneği vererek başlayayım:

>> kupAl = @(x) x^3;

Sözdiziminden de anlaşılacağı üzere, fonksiyona verilecek değişkeni belirtirken bir parantez içine alıp başına @ işareti koyuyoruz. Ardından gelecek ifade ise fonksiyonun döndüreceği değer oluyor. Eşitliğin sol tarafında da fonksiyon ismi yer alıyor. Fonksiyonu deneyecek olursak:

>> kupAl(3)

ans =

    27

>> kupAl(30)

ans =

       27000

>> kupAl(4)

ans =

    64

İstediğimiz şekilde çalıştığını artık biliyoruz. Peki, fonksiyona birden fazla parametre göndermek istersek?

>> carp = @(x,y) x*y;

Kısacası, parantez içerisine birden fazla değer yazabiliyoruz. Bu durumda çıktılara bakacak olursak:

>> carp(3,4)

ans =

    12

>> carp(5,6.2)

ans =

    31

Şimdi, elimizdeki bir parametreye göre fonksiyon tanımladığımızda ne olacağına bakalım:

>> parametre = 10;
>> f = @(x,y,z) x*y*z*parametre;
>> f(1,2,3)

ans =

    60

Fonksiyonumuz sorunsuz çalıştı, parametre değeri atandı. Peki bu noktada parametre isimli değişkenin değeri değişirse ne olur? Deneyelim:

>> parametre = 0

parametre =

     0

>> f(1,2,3)

ans =

    60

Gördüğümüz gibi, fonksiyon tanımlanırken değişkenin değeri neyse o geçerli oluyor. Değiştirmek istersek fonksiyonu tekrar tanımlamamız gerekli.

Fonksiyonların bir diğer artısı da, birden çok yerde aynı ifadeyi kullanacağınız zaman, ifade üzerinde değişiklik yaptığınızda her birini teker teker değiştirmek yerine, fonksiyon tanımındakini değiştirmenin yeterli olacağıdır.

Daha fazlası için:

http://www.mathworks.com/help/matlab/matlab_prog/anonymous-functions.html

http://stackoverflow.com/questions/18253157/matlab-inline-vs-anonymous-functions

 
comments powered by Disqus