MATLAB de Programlama & Dosya Yönetimi EE-346 Hafta 6 Dr. Ayşe DEMİRHAN
error Fonksiyonu error fonksiyonu, disp fonksiyonunun tek farkı hata mesajından önce bir Error satırı içermesidir. sayi=input( * 0 ile 1 arasinda bir sayi giriniz * : ); if sayi > 1 error( Dikkat! Sayi 0 ile 1 arasinda olmalidir. ) else disp( ) disp( Rasyonel sayi karsiligi= ) disp(rats(sayi))» rasyonelkar * 0 ile 1 arasinda bir sayi giriniz * : 4??? Error using ==> rasyonelkar Dikkat! Sayi 0 ile 1 arasinda olmalidir.
warning Fonksiyonu warning fonksiyonunun, aslında çok geniş uygulama alanları vardır. Buradaki kullanımı sadece bir örnekleme olması içindir. sayi=input( * 0 ile 1 arasinda bir sayi giriniz * : ); if sayi > 1 warning ( Dikkat! Sayi 0 ile 1 arasinda olmalidir. ) else disp( ) disp( Rasyonel sayi karsiligi= ) disp(rats(sayi))» rasyonelkar * 0 ile 1 arasinda bir sayi giriniz * : 4 Warning: Dikkat! Sayi 0 ile 1 arasinda olmalidir. > In E:\bin\rasyonelkar.m at line 5
nargin ve nargout fonksiyonları Fonksiyonlarda kullanılan giriş ve çıkış değişkenlerinin sayısını kontrol etmek için kullanılır. nargin (number of argument input); fonksiyonun kaç adet giriş değişkeni ile çağırıldığını verir. nargout (number of argument input); fonksiyonun kaç adet çıkış değişkeni ile çağırıldığını verir. Farklı sayıdaki giriş ya da çıkış değişkenine göre farklı fonksiyona değişik görevler yaptırılabilir.
nargin- Örnek function c = addme(a,b) switch nargin case 2 c = a + b; case 1 c = a + a; otherwise c = 0; >>c = addme(13,42) c = 55 >>c = addme(13) C=26
nargout- Örnek function [dif,absdif] = subtract(y,x) dif = y-x; if nargout > 1 disp('calculating absolute value') absdif = abs(dif); End >>diff = subtract(42,13) diff = 29 >>[dif,absdif] = subtract(2,5) Calculating absolute value dif = -3 absdif = 3
Özyinelemeli (Recursive) Fonksiyonlar MATLAB, recursive fonksiyonları desteklemektedir. Recursive fonksiyonlar; fonksiyonun ki içinde kini yeniden çağırması şeklinde çalışır. Bu fonksiyonda işlemler kuyruk mantığıyla işlem belirli bir noktaya gelene kadar devam ettirilir. Örnek Kullanım: function kuyruk_islemleri(kuyruk) if kuyruk==0 return else kuyruk_islemleri(kuyruk-1)
Özyinelemeli (Recursive) Fonksiyonlar Klavyeden girilen sayıya kadar olan sayıları ekrana yazan programın recursive fonksiyon ile yazılması function rec1(n) if n==0 return else rec1(n-1) disp(n)
Özyinelemeli (Recursive) Fonksiyonlar Klavyeden girilen sayının faktöriyelini alan programın recursive fonksiyon ile yazılması function f=rec2(n) % Bu program klavyeden girilen bir sayının faktoriyelini alır. if n==0 f=1; else f=n*rec2(n-1);
Özyinelemeli (Recursive) Fonksiyonlar Klavyeden girilen sayı kadar 2 nin karesini alan programın recursive fonksiyon ile yazılması function y=rec3(n) if n==0 y=1; else y=2*rec3(n-1);
Özyinelemeli (Recursive) Fonksiyonlar Klavyeden taban ve üsdeğerleri girilmektedir. Buna göre tabanın üsdeğerine göre üssünü recursive fonksiyonda alan program. function p=rec4(taban, us) %klavyeden taban ve üs değerleri girilerek tabanın üssü değeri bulunur. if (us==0) p = 1; else p = taban*rec4(taban, us-1);
Özyinelemeli (Recursive) Fonksiyonlar Klavyeden bir dizi ve eleman sayısı fonksiyona gönderiliyor.buna göre bu dizinn elemanlarınının toplamını recursive fonksiyonda alan program. function toplam=rec5(dizi, n) if(n<1) toplam = 0; else toplam = dizi(n) + rec5(dizi, n-1);
Dosya Yönetimi Ş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.
Dosya Açma 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.
Dosya Açma
Dosya Kapama 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)
Dosyaya Kayıt 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,.)
Örnek Aşağıda verilen M dizisini (vektörünü) bir dosyaya kaydeden bir MATLAB programı yazınız M=[1 2 3 4]; a=fopen('veri.dat','w'); fprintf (a,'%d %d %d %d',m); fclose(a); For döngüsü ile: M=[1 2 3 4]; a=fopen('veri.dat','w'); for i=1:4 fprintf(a,'%d ',M(i)); fclose(a);
Örnek 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)); fclose(a); veri.dat isimli dosyayı silmeden A dizisini bu sonuna eklemek için hangi izin kulanılmalıdır?
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 alan : okunan data sayısı : inf ile verilerin tamamını okunması sağlanır
Örnek Aşağıda verilen vektörü bir dosyadan okuyup b değişkenine atayan MATLAB programını yazınız veri.dat 1 5 11 2 4 5 clear all clc a=fopen ('veri.dat', 'r' ); [b,sayi]=fscanf(a,'%d ',inf); fclose(a); b
Uygulama Dışardan girilen öğrenci no ve döneme ait aldığı ders isimlerini ve notunu kaydeden bir MATLAB programı yazınız
Dosyadan Bilgi Okuma Yanda verilen formattaki bir dosyadan bilgilerin aynı formatta okunması için: b=fopen(a, veri.dat,[2 inf] b aşağıda verilen matris formatına sahip olur: Satır vektörlerini faklı değişkenlere atamak için: c=b(1,:) d=b(2,:) Dosyadan bilgilerin direkt olarak farklı değişkenlere okutmak için a=fopen('veri.dat','r') for i=1:6 d(i)=fscanf(a,'%f',[1]); e(i)=fscanf(a,'%f',[1]); fclose(a)
Ödev Bir data dosyasında verilen sayıları kullanarak aşağıdaki fonksiyonun değerini hesaplayıp sonucu ana programda yazdıran bir MATLAB programı yazınız.
Excel ile Veri AlışVerişi Bir Excel (.xls) veri dosyası veya.txt ya da.dat dosyası Matlab ortamından okunabilir ve üzerinde Matlab işlemleri uygulanabilir. Benzer olarak bir Matlab program çıkışı da.xls olarak kaydedilebilir. Excel den veri almak: degisken =xlsread( xxx.xls ) x=degisken(:,1); %1. sütun y=degisken(:,2); %2. sütun Text dosyasından veri almak: load xxx.txt x=xxx(:,1); %1. sütun y=xxx(:,2); %2. sütun
Excel ile Veri AlışVerişi Excel den veri okutmak amacıyla xlsread fonksiyonu kullanılır. num = xlsread( filename, sheet, 'range') A = xlsread('deneme.xlsx', 1, 'C4:D7') A = 1 6 2 7 3 8 4 9