MATLAB ortamında en çok ihtiyaç duyulan konulardan birisi fonksiyon yazımı ve kullanımı olduğundan dolayı bu konudan bahsetme gereği duyduk.

MATLAB Help Center sayfasından destek alarak bu konuyu açıklamaya çalışacağız.

Yazı İçeriği

Fonksiyon Nedir?

Fonksiyon, anlam olarak kısaca görev veya kural anlamına gelir. Bilimsel olarak da fonksiyon, matematikte değişken sayıları girdi olarak kabul edip bunlardan bir çıktı sayısı oluşmasını sağlayan kurallardır.

MATLAB programında, kütüphanesi içinde dahili olarak gelen hazır komutlar vardır. Bunlar da bir fonksiyondur. Bir de sizin istediğiniz gibi yazabildiğiniz fonksiyonlar olabilir.

MATLAB ortamında yaptığınız çalışmada sıklıkla kullanacağınız kuralları veya komutları bir fonksiyon halinde kullanmak mümkündür. Bu şekilde ana programınız içinde kod yoğunluğu azalacak, incelemesi ve çalışması daha kolay olacaktır.

MATLAB ile Fonksiyon Nasıl Tanımlanır?

En Temel hali ile bir fonksiyon aşağıdaki gibi tanımlanır.

function [y1,...,yN] = myfun(x1,...,xM)

Burada:

  • function = “Fonksiyon” anlamına gelir. Kendisini takip eden satırların bir fonksiyon ifadesi olduğunu tanımlamaya yarar.
  • [y1, …, yN] = Bu ifade ise fonksiyonun çıktılarını(“output”) ifade eder. Burada tek bir çıktı da olabilir veya birden fazla çıktı ifadesi de olabilir
  • myfun = Fonksiyonun “adını” Bu fonksiyon adı, MATLAB programında başka bir komut sayfasında(“Editor”) veya komut penceresinde(“Command Window”) yazdığınız komutlar içinde fonksiyonunuzu çağırmak için kullanılır. Ayrıca önemli bir nokta fonksiyonunuz bu ad ile kaydetmeniz gerekmektedir.
  • (x1,…,xM) = Bu ifade ise fonksiyonunuzun giriş(“input”) değerleridir. Bu giriş değerleri dışarıdan fonksiyonda kullanmak için dahil edilir.
  • Önemli bir nokta da fonksiyonu bitirirken “end” ifadesi ile bitirilmelidir.
  • Eğer fonksiyonunuz ana programınızı kayıt ettiğiniz ve çalıştırdığınız dosya yolundan ayrı bir yerde ise ve bunu ana programda belirtmediyseniz, aşağıdaki gibi hata alabilirsiniz.

MATLAB ile Fonksiyon Örnekleri

Temel İslem Fonksiyonu

Başlangıç için temel bir fonksiyon ifadesi oluşturup, çalıştıralım.

function output = islem(x)
    output = (x * 5) - 2;
end

Fonksiyonumuz ana programdan gelecek olan değeri önce 5 ile çarpacak ardından 2 çıkarıp sonuç değerini ana programa geri gönderecektir.

% Ana Program

giris = 10;

cikis = islem(giris)

Fonksiyonumuzun çıktısı da aşağıdaki gibi olacaktır.

> islem_Kodu

cikis =

    48

“islem” fonksiyonu ile ana programın herhangi bir yerinde direkt olarak giriş değerini yazdıktan sonra cikis değerini alabiliriz.

Fonksiyonun içindeki 1 satırlık kodu ana program içinde de direkt yazabilirdik. Ancak aşağıdaki örneklerde de görüleceği üzere daha geniş kapsamlı fonksiyonları ana programın içinde yazmak hem programı kalabalık hale getirecek hem de incelenmesini zorlaştıracaktır.

Polinom Hesaplayan Fonksiyonu

P(x) = 8x^{3}-3x^{2}+4x-9 polinomunu hesaplamak için bir fonksiyon yazalım.

function P = polinom(x)

    P = (8^3) - (3^2) + (4*x) - 9;

end

Giriş değeri olarak 5’e göre sonuç ifadesini hesaplatalım.

% Ana Program

giris_degeri = 5;

sonuc_degeri = polinom(giris_degeri)

Fonksiyonumuzun çıktısı da aşağıdaki gibi olacaktır.

>> polinom_Kodu

sonuc_degeri =

   514

Bu fonksiyon da yol göstermek adına buraya ekledik. Elbette bir polinomu ana program içinde de yazıp, hesaplatabilirdik. Ancak birden fazla polinom olsaydı ve her bir yeni değişken için sonuçları bize lazım olsaydı onları da tek tek yazıp, sonuçlarını bulmak gereksiz kod kullanımına ve fazlalığa yol açacaktı.

Ortalama Hesaplama Fonksiyonu

Bir adım daha ileriye gitmek adına “hazır fonksiyonları da” kullandığımız bir ortalama alma fonksiyonu yazalım.

function ort = ortalama(x)

    ort = sum(x(:))/numel(x);

end

Yukarıda bahsettiğim gibi burada kullandığım bazı komutlar hazır fonksiyonlardır. Bunları bir daha yazmanıza gerek yoktur.

Burada da:

  • sum: Elemanların toplamını veren bir fonksiyondur.
  • numel : Elemanların toplam kaç adet olduğunu veren bir fonksiyondur.

Bu fonksiyonda ortalama hesaplama üzerine bir kod yazdık. Normalde tek teker ilk giriş değerinden bitiş değerine kadar bütün sayıları toplamak gerekecekti. Ardından kaç adet sayı olduğunu hesaplamak gerekecekti. Son olarak bunu da birbirine bölerek sonuç elde edilecekti. Küçük bir aralıkta bu durum uzun uzun kodla veya elle hesaplanarak bulunabilirdi. Ancak daha büyük bir aralık içinde bu durum pek mümkün değildir.

Şimdi de fonksiyonu çağırmayı ve sonucunu görelim. 1’den 99’a kadar (99 dahil) olan sayıların ortalamasını bulalım.

% Ana Program

giris = 1:99;

sonuc = ortalama(giris)
  • giris ifadesi ile aralık belirlenir.
  • sonuç ifadesi de çıkış değişkenidir. Fonksiyonun çıktısı bu değişkene atanır.

Dikkat edilirse fonksiyon ifadesinde “ortalama(x)” yazılmış iken burada “ortalama(giris)” ve aynı sekilde fonksiyon ifadesinde çıktı olarak “ort” ifadesi mevcut iken burada “sonuç” ifadesi yazılmıştır. Bu da değişken isimlerinin önemli olmadığını sadece fonksiyon adının doğru yazılması gerektiğini göstermektedir.

Fonksiyonun çıktısı da aşağıdaki gibidir.

>> Ortalama_Kodu

sonuc =

    50

Birden Fazla Çıktısı Olan Fonksiyon

Farklı bir örnek olması adına birden fazla çıktısı olan bir fonksiyon örneği verelim.

function [m,s] = ozellik(x)

    n = length(x);

    m = sum(x)/n;

    s = sqrt(sum((x-m).^2/n));

end

Fonksiyonumuz giriş değerlerinin ortalamasını(n) ve standart sapmasını(s) bulmaktadır.

% Ana Program

degerler = [28.4, 41.9, 35.6, 73.5, 91.2];

[ortalama, karekok] = ozellik(degerler)

Burada giriş değerlerini aldıktan sonra önce ortalamasını sonra da standart sapmasını bularak birden fazla çıktı olarak sonuç vermektedir.

>> Ozellik_Kodu

ortalama =

   54.1200

karekok =

   24.1012

Birden Fazla Girdisi ve Çıktısı Olan Fonksiyon

Bu kısımda ise bir fonksiyona hem birden fazla giriş değeri verip hem de o fonksiyondan birden fazla çıktı değeri almak üzere bir örnek vereceğiz.

Fonksiyonumuz dört işlem yapan küçük bir kod bloğu. Ana programda yazdığınız 2 adet sayıyı alıp, fonksiyon içinde toplama, çıkarma, çarpma ve bölme işlemlerine uygulayıp bunların her birini ayrı ayrı çıktı olarak vermektedir.

function [s1, s2, s3, s4] = dortislem(g1, g2)

    s1 = g1+g2;

    s2 = g1-g2;

    s3 = g1*g2;

    s4 = g1/g2;

end

%Ana Program

birinci_sayi = 24;

ikinci_sayi = 8;

[toplama, cikarma, carpma, bolme] = dortislem(birinci_sayi, ikinci_sayi)

Fonksiyonun çıktısı da aşağıdaki gibidir.

>> dortislem_Kodu

toplama =

    32

cikarma =

    16

carpma =

   192
bolme =

     3

 

Sonuç olarak fonksiyonlar yazarın kodunu yazarken programı içinde kod kalabalığından kurtulmasına ve aynı işlemler için aynı fonksiyonu kullanarak hız kazanmasına neden olur. Elbette ki yapılacak olan çalışmaya göre çok farklı fonksiyonlar yazılabilir. Bu konuda temel bir bilgi oluşturmak için bu yazıyı hazırladık. Umarız ki faydalı olmuştur.

Kaynaklar

  1.  https://www.mathworks.com/help/matlab/function-basics.html
  2.  https://www.mathworks.com/help/matlab/ref/function.html
  3. https://www.mathworks.com/help/matlab/matlab_prog/create-functions-in-files.html

Yazar: ekremt

Mekatronik Mühendisi. MATLAB konusunda kendini geliştirmeye çalışan, öğrenmeye ve araştırmaya açık biri.

Bir yanıt yazın

*