[Bölüm 6] MATLAB’ta Kullanıcı Tanımlı Fonksiyonlar

Merhaba arkadaşlar, bu yazımda sizlere MATLAB üzerindeki kullanıcı tanımlı fonksiyonlardan bahsedeceğim.

  • poly(x) = 3×3 + 5×2 – 2x + 1 fonksiyonunu tanımlamak için aşağıdaki komutlar uygulanır ve ardından fonksiyon ismi poly olacak şekilde komutları içeren fonksiyon dosyası bilgisayarın hard diskine kaydedilir. Fonksiyonun ismi illaki poly olmak zorunda değil lakin aşağıdaki örnekte ben poly olarak tanımladım.
function output = poly(x)
output = 3*x.^3 + 5*x.^2 – 2*x + 1

poly(3)
y =
   121
ans =
   121

a = 1:5;

poly(a)
y =
   7  41  121  256  491
ans =
   7  41  121  256  491
  • İki bilinmeyenli fonksiyonları tanımlamak için aşağıdaki iki yol da izlenebilir.
function output = g(x,y)
output = x.*y

function output = g(x,y)
a = x.*y
output = a
  • İki bilinmeyenli fonksiyon tanımlarken bilinmeyenler arasında yapılan işleme göre bilinmeyenlerin matris boyutlarının aynı olması ya da olmaması gibi durumlara dikkat edilmelidir.
function [dist, vel, accel] = motion(t)
accel = 0.5 .* t;
vel = t.^2/4;
dist = t .^3/12

[distance, velocity, acceleration] =motion(10)

distance =
          83.33

velocity =
          25

acceleration =
              5
  • Yukarıdaki örnekte 3 adet değişken olmadan sonuç alınmak istenirse motion(10) yazılır. Sonuç olarak ilk değişken olan distance değişkeninin sonucunu verir.
  • Aşağıdaki örnekte kullanılan değişken bir vektördür.
time = 0:10:30;
[distance, velocity, acceleration] = motion(time)

distance =
          0   83.33   666.67   2250.00

velocity =
          0   25.00   100.00   225.00

acceleration =
              0   5.00   10.00   15.00

results = [time',distance',velocity',acceleration']

results =
         0        0         0         0
         10.00    83.33     25.00     5.00
         20.00    666.67    100.00    10.00
         30.00    2250.00   225.00    15.00
  • nargin(‘function_name’) komutu fonksiyonun girdi sayısını, nargout(‘function_name’) komutu ise fonksiyonun çıktı sayısını verir.
nargin(‘motion’)
ans =
     1

nargout(‘motion’)
ans =
     3
  • global komutu küresel boyutta sabit değeri olan fonksiyonları tanımlamak için kullanılır. Global komutu algoritma yazılırken değişkenlerin her blokta işleme alınmasını da sağlar.
function result = distance(t)

%this function calculates the distance a falling object
%travels due to gravity

global G
result = ½*G*t.^2;
global G
G = 9.8;
  • Zamana bağlı distance fonksiyonu yukarıdaki gibi tanımlanır. global G komutunu fonksiyonun tanımına eklemeden de aşağıdaki gibi kullanabiliriz.
function result = distance(t)

%this function calculates the distance a falling object
%travels due to gravity

global G
result = ½*G*t.^2;

--------------------------veya--------------------------

global G
G = 9.8;
distance(1)
ans =
     4.900
  • pathtool komutu arama yolunu görüntülemek ve değiştirmek için yol ayarla iletişim kutusunu açar.
  • addpath komutu MATLAB arama yoluna bir dizin ekler.
  • @ komutu fonksiyonun değişkenini tanımlar.
ln = @(x,y) log(x).*y
ln =
    function_handle with value:
     @(x,y)log(x).*y

ln(5,7)
ans =
     11.2661
  • % komutu ile başlayan cümleler komutlar arasına veya fonksiyon tanımlarına yorum ekler.
function result = distance(t)

%this function calculates the distance a falling object
%travels due to gravity

global G
result = ½*G*t.^2;
  • fplot(işlev,[aralık]) komutu ile fonksiyon grafiği çizilebilir.
ln = @(x) log(x)
fplot(ln,[0.1,10])

veya

ln = @(x) log(x)
fplot(‘log(x)’,[0.1,10])

  • fzero komutu tek değişkenli bir fonksiyonun cevabını bulur.
x = fzero ( @(x) sin(3 * x ),2 )
x =
   2.0944

x = fzero( @tan,2 )
x =
   1.5708
  • fminbnd(fonksiyon, x1, x2) komutu fonksiyonun [x1 – x2] aralığındaki yerel minimum noktasını bulur.
  • varargin ve varargout komutları fonksiyondaki input ve output sayısını belirtmek için kullanılır.