MATLAB’ de Programlama IX-X Hafta 9-10 Matlab Ders Notları
M-Fonksiyon Yapısı function cikis_ifadesi1, 2,…, n =fonksiyon_adi (giris_ifadesi1, 2, …n) M-Fonksiyonlar kullanılırken dikkat edilecek hususlar: 1- Kullanıcılar kendi fonksiyonlarını yazmak için m-fonksiyonlarını kullanabilirler. 2- Function alt programı ve ana program şeklinde iki program yazılarak bu iki program ayrı ayrı kaydedilir. 3- Alt programdaki fonksiyon_adı, m-dosyasına verilen isimle aynı olmalıdır. 4- Ana programdan alt program, function adı kullanılarak çağrılır. 5- Alt programdan da ana programa geçiş yapılabilir fakat genelde tercih edileni tersidir. 6- Parametre aktarımı olması durumunda alt ve ana programda eşit sayıda parametre ve giriş değişkeni olmalıdır. Hafta 9-10 Matlab Ders Notları
function uzaklik = uzak(x1,y1,x2,y2) function cikis_ifadesi1, 2,…, n =fonksiyon_adi (giris_ifadesi1, 2, …n) Örnek: İki nokta arasındaki uzaklığı bulan programı m-fonksiyon (alt program) kullanarak yazı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 (uzak.m): function uzaklik = uzak(x1,y1,x2,y2) uzaklik=sqrt((x2-x1).^2+(y2-y1).^2); Bu function alt programı uzak.m olarak kaydedilir. ANA PROGRAM: ax=3; ay=4; bx=1; by=2; sonuc = uzak(ax,ay,bx,by); % uzak.m alt programını çağırıyor fprintf(‘iki nokta arasindaki uzaklık=%f’,uzaklik); Hafta 9-10 Matlab Ders Notları
Adım adım gerçekleştirilen işlemler: Ana program herhangi bir isimle kaydedilir ve koşturulur. Program, function adına (uzak) geldiği zaman alt program çağrılır ve ax, ay, bx, by parametreleri sırasıyla x1, y1, x2, y2 giriş değişkenlerine aktarılır. Function alt programında hesaplama gerçekleştirilir. Function’daki çıkış değişkeni olan uzaklik alt programda kullaılmakta ana programda aynı değer sonuc değişkeninde saklanır. Alt programdan ana programa parametre aktarımı zorunlu değildir. İstenirse değişkenlerin değerleri alt programda da girilebilir ve sonuç alt programda yazdırılabilir. Hafta 9-10 Matlab Ders Notları
Uygulama: Yukarıdaki örneği ana programdan alt programa parametre aktarımı yapmadan yeniden yazınız. (Değişkenlerin girilmesi, sonucu hesaplama ve yazdırma işlemi alt programda yapılacaktır) FUNCTION ALT PROGRAMI: function uzaklik = uzak x1=3; y1=4; x2=1; y2=2; uzaklik=sqrt((x2-x1).^2+(y2-y1).^2); fprintf(‘iki nokta arasindaki uzaklık=%f’, uzaklik); ANA PROGRAM: uzak; % uzak.m alt programını çağırıyor Hafta 9-10 Matlab Ders Notları
Alt programdan ana programın çağrılması: Örnek: a, b ve c değişkenlerinin alt programda girilmek suretiyle alt programdan ana programın çağrılmasına dair örnek (Sık kullanılmaz) function sonuc = sonuckiyasla a=input(‘ a =‘) ; b=input(‘ b=‘) ; c=input(‘ c=‘); d=a*b; e=a*c; f=b*c; kiyasla % kiyasla.m ana programını çağırır Alt program (sonuckiyasla.m) if d>e sonuc=‘d, e den büyüktür’ elseif d>f sonuc=‘d, f den büyüktür’ else sonuc=‘d, en küçüktür’ end Ana program (kiyasla.m) Hafta 9-10 Matlab Ders Notları
ÖDEV: Dışarıdan girilen x ve y değerlerine göre aşağıdaki fonksiyonun değerini hesaplayan bir program yazınız (M-fonksiyonu kullanınız) Hafta 9-10 Matlab Ders Notları
DOSYA YÖNETİMİ Şu ana kadar bir programda hesaplanan veya elde edilen veriler RAM’de saklanacak şekilde tanımlanmıştı. Yani, bilgisayar kapatıldığında veya MATLAB programı sona erdirildiğinde veriler de kaybolmaktaydı. Oysa pek çok uygulamada elde edilen veriler daha sonra kullanılmak üzere saklanması gerekir. Bunun için verilerin bir dosyaya yazılması gerekmektedir. Hafta 9-10 Matlab Ders Notları
MATLAB ’de VERİ GİRİŞ-ÇIKIŞ FONKSİYONLARI Dosya açma: fopen fopen komutu bilgi kaydetmek için veri dosyası açar veya oluşturur. Yazım formatı: İfade = fopen(‘dosya adı’,’izin’) Burada: ifade-> dosya değişkeni dosya adı->verilerin kaydedileceği dosyanın adı izin-> dosyanın kullanım izni : r,w,.., vs. Hafta 9-10 Matlab Ders Notları
İzin Tipleri: Tipler Açıklama ‘r’ Dosyayı sadece okumaya açar (yazmaya izin vermez) ‘r+’ Dosyayı yazmaya ve okumaya açar ‘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’ 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 Hafta 9-10 Matlab Ders Notları
Dosya kapama: fclose Dosya yazma ve/veya okumaya açılan dosyanın MATLAB ’den ilişkisini kesmeye (dosyayı kapamaya) yarayan komuttur. Kullanımı: Sonuc=fclose(ifade) Hafta 9-10 Matlab Ders Notları
Dosyaya bilgilerin kaydedilmesi: fprintf Verilerin ekrana yazılmasında kullanılan fprintf fonksiyonu, aynı zamanda fopen komutuyla açılmış dosyaya yazmakta da kullanılır. Kullanımı: fprintf (ifade=‘%format%format%format….%format’,değişken1, değişken2,değişken3, …….) Hafta 9-10 Matlab Ders Notları
Örnek M=[1 2 3 4]; a=fopen('veri.dat','w'); Aşağıda verilen M dizisini (vektörünü) bir dosyaya kaydeden bir MATLAB programı yazınız For döngüsü ile: M=[1 2 3 4]; a=fopen('veri.dat','w'); fprintf (a,'%d %d %d %d',M); fclose(a); M=[1 2 3 4]; a=fopen('veri.dat','w'); for i=1:4 fprintf(a,'%d ',M(i)); end fclose(a); Hafta 9-10 Matlab Ders Notları
Örnek A=[1 5 11 ; 2 4 5]; a=fopen('veri.dat','w+'); for i=1:2 Aşağıda verilen matrisi “veri.dat” dosyasına kaydeden bir MATLAB programı yazınız. A=[1 5 11 ; 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); veri.dat isimli dosyayı silmeden A dizisini bu sonuna eklemek için hangi ‘izin’ kulanılmalıdır? Hafta 9-10 Matlab Ders Notları
Örnek Dosyadan bilgilerin okunması: fscanf fscanf: Formatlanmış verileri içeren dosyadan değerleri okuma komutudur ve yazılımı: [değişken, sayi] = fscanf (ifade,’format’,alan) Burada; değişken: okunan değerlerin atandığı değişken sayi : okunan data sayısı alan : inf ile verilerin tamamını okunması sağlanır Örnek clear all clc a=fopen ('veri.dat', 'r' ); [b,sayi]=fscanf(a,'%d ',inf); fclose(a); b Aşağıda verilen vektörü bir dosyadan okuyup b değişkenine atayan MATLAB programı veri.dat 1 5 11 2 4 5 Hafta 9-10 Matlab Ders Notları
uygulama Dışardan girilen öğrenci no ve döneme ait aldığı ders isimlerini ve notunu kaydeden bir MATLAB programı yazınız Hafta 9-10 Matlab Ders Notları