9. HAFTA 25 Nisan2016
Fonksiyon M-Dosyaları Fonksiyon dosyaları ilk satırda “function” kelimesi bulunan “.m” uzantısı bulunan dosyalardır. MATLAB içinde bulunan tüm M-dosyaları fonksiyon dosyaları biçiminde olup, bunlar hazırlanan herhangi bir program içinde çağırılabilir. Fonksiyon dosyası; “function” satırında yer alan giriş argümanlar (function tarafından bulunan sonuçlar ) istenirse diğer hesaplamalarda kullanılabilir. Fonksiyon dosyaları, MATLAB komut iletisindeki çalışma alanından ayrılmış, kendi çalışma alanı içindeki değişkenleri işletirler. Fonksiyon dosyasının oluşturulması ve çalıştırılması aşağıda verilen basit bir örnekle açıklayabiliriz. Burada MATLAB`ta mevcut bir vektörün ortalamasını hesaplayan “ortalama.m” dosyasına ait bildirimler listesi verilmiştir. FONKSİYON OLUŞTURMA
Bir fonksiyon dosyasının belli başlı bölümleri ve özellikleri örnek “ortalama.m” fonksiyon dosyası üzerinden aşağıdaki şekilde açıklayabiliriz. % işareti ile başlayan satırlar yardım açıklama satırlarıdır. Bu satırların birincisi 1.yardım (help1 ) satırıdır. Belli fonksiyon hakkında yardım istendiğinde MATLAB 1 yardım satırı ile birlikte tüm yardım metnini görüntüler. Bu satırlara yazılanlar MATLAB tarafından icra edilmez. Fonksiyon gövdesi, % işareti ifade eden satırlardan sonraki satırlardır. Fonksiyonun bu kısmı hesaplamaları yerine kod içerir ve herhangi çıkış argümanları için değerleri saptar. Fonksiyon dosyası içinde yer alan m, n ve y gibi değişkenler “ortalama” dosyasının çalışması sırasında kendi içinde geçerli olup daha sonra çalışma ortamında görüntülenemez ve kullanılamaz. Fonksiyon dosyaları hakkında daha ayrıntılı bilgi alma ve çeşitli MATLAB fonksiyon dosyalarını incelemek için MATLAB ortamında edit fonksion_adı yazılarak biçimleri görüntülenebilir.
function[çıktı1,çıktı2,...,çıktıN]=fonksiyon_adi( girdi1,girdi2,…,girdiM) şeklinde bir yapı vardır. Girdiler ve çıktılar ilk satırda tanımlanmak zorundadır.
Uygulama 1 function[toplam]=toplama(a,b); disp(‘TOPLAMA’); a=input(‘Birinci Sayiyi Giriniz:’); b=input(‘İkinci Sayiyi Giriniz:’); toplam=a+b; disp(”); toplam
UYGULAMA 2 function y=ortalama (x ) % ortalama (x ) her bir % sütunda ortalama % değeri olan bir satır vektörüdür. [m,n]=size (x ) if m==1 m=n; end y=sum (x ) /m;
UYGULAMA 3 function[toplam]=toplama(a,b); disp('TOPLAMA'); a=input('Birinci Sayiyi Giriniz:'); b=input('İkinci Sayiyi Giriniz:'); toplam=a+b;
% uzaklýk hesabý %(x1,y1) ve (x2,y2) olarak verilen iki nokta arasýndaki mesafeyi %s=sqrt((x2-x1)^2+(y2-y1)^2) formülünden hesaplar function y=uzaklik(x1,y1,x2,y2) x1=input('1. noktanýn x giriniz') y1=input('1. noktanýn y giriniz') x2=input('2. noktanýn x giriniz') y2=input('2. noktanýn y giriniz') % uzaklýk hesabý y=sqrt((x1-x2)^2+(y2-y1)^2); İki nokta arasındaki uzaklığı bulan programı m-fonksiyon (alt program) kullanarak yazınız ve bu fonksiyonu başka bir ana programda çağırarak kullanınız. x1=1.noktanın x koordinati; x2=2.noktanın x koordinati y1=1.noktanın y koordinati; y2=2.noktanın y koordinati FUNCTION ALT PROGRAMI (uzaklik.m): ANA PROGRAM: ax=3; ay=4; bx=1; by=2; sonuc = uzaklik(ax,ay,bx,by); % uzak.m alt programını çağırıyor fprintf(‘iki nokta arasindaki uzaklık=%f’,sonuc);
Dosya açma: fopen fopen komutu bilgi kaydetmek için veri dosyası açar veya oluşturur. Yazım formatı: dosya değişkeni= fopen(‘dosya adı’,’izin’) izin: dosyanın kullanım izni : r,w,.., vs. efe.ege.edu.tr/~matlab/hafta8/Hafta8.ppt
TiplerAçıklama ‘r’‘r’Dosyayı sadece okumaya açar (yazmaya izin vermez) ‘r+’Dosyayı yazmaya ve okumaya açar ‘w’‘w’Varolan bir veri dosyasının içindekini siler, dosya yoksa oluşturur ve dosyayı yazmaya açar ‘w+’Varolan bir veri dosyasını yazmak için açar, dosya yoksa oluşturur ve dosyayı okumaya ve yazmaya açar ‘a’‘a’Varolan bir veri dosyasını yazmak için açar, dosya yoksa oluşturur ve girilecek bilgileri dosya sonuna ekler ‘a+’Varolan bir veri dosyasını okumak ve yazmak için açar, dosya yoksa oluşturur ve girilecek bilgileri dosya sonuna ekler efe.ege.edu.tr/~matlab/hafta8/Hafta8.ppt
Dosya kapama: fclose fclose komutu dosya yazma ve/veya okumaya açılan dosyanın MATLAB ’den ilişkisini kesmeye (dosyayı kapamaya) yarar. Yazım formatı: sonuc=fclose (dosya değişkeni) efe.ege.edu.tr/~matlab/hafta8/Hafta8.ppt
Dosyaya bilgilerin kaydedilmesi: fprintf Verilerin ekrana yazılmasın da kullanılan fprintf fonksiyonu, aynı zamanda fopen komutuyla açılmış dosyaya yazmakta da kullanılır. Yazım formatı: fprintf (dosya değişkeni = ‘%format %format %format … %format’, değişken1, değişken2,değişken3,…değişken_n) efe.ege.edu.tr/~matlab/hafta8/Hafta8.ppt
M=[ ]; a=fopen('veri.dat','w'); fprintf (a,'%d %d %d %d',M); fclose(a); M=[ ]; a=fopen('veri.dat','w'); for i=1:4 fprintf(a,'%d ',M(i)); end fclose(a); efe.ege.edu.tr/~matlab/hafta8/Hafta8.ppt
A=[ ; 2 4 5]; a=fopen('veri.dat','w+'); for i=1:2 for j=1:3 fprintf(a,'%d ',A(i,j)); end fclose(a); efe.ege.edu.tr/~matlab/hafta8/Hafta8.ppt