Fen ve Mühendislik Uygulamalarında
MATLAB
Dosya Yönetimi
Fonksiyon Yapısı
Doç. Dr. İrfan KAYMAZ
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 verilerde kaybolmaktaydı.
 Oysa pek çok uygulamada elde edilen veriler daha sonra
kullanılmak üzere saklanması gerekir. Bunun için verilerin bir
dosyaya yazılması gerekmektedir.
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.
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
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)
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, …….)
Matlab Ders Notları
Örnek
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];
M=[1 2 3 4];
a=fopen('veri.dat','w');
a=fopen('veri.dat','w');
fprintf (a,'%d %d %d %d',M);
for i=1:4
fclose(a);
fprintf(a,'%d ',M(i));
end
fclose(a);
Matlab Ders Notları
Ö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));
end
end
fclose(a);
veri.dat isimli dosyayı
silmeden A dizisini bu
sonuna eklemek
için hangi „izin‟
kulanılmalıdır?
Matlab Ders Notları
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
Aşağıda verilen vektörü bir dosyadan
okuyup b değişkenine atayan MATLAB
programı
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
Matlab Ders Notları
Dosyadan belirli sayıdaki bilgilerin okunması
Bir Dosyadan belirli bir sayıdaki bilgilerin fscanf ile
okutulması için fscanf komutu aşağıda verilen formatta
kullanılır.
[A,count] = fscanf(fid,format,size)
Örnek
clear all
clc
Aşağıda verilen vektörün ilk iki elemanını a=fopen ('veri.dat', 'r' );
bir dosyadan okuyup b değişkenine
for i=1:2
atayan MATLAB programı
b(i)=fscanf(a,'%d ',[1]);
veri.dat
end
1 5 11 2 4 5
fclose(a);
b
Matlab Ders Notları
Dosyadan birden fazla değişkene bilgi okunması
Yanda verilen formattaki bir dosyadan bilgilerin aynı
formatta okunması için:
Veri.dat
1 10
3 12
4 14
5 15
6 16
7 18
b=fopen(a,’veri.dat’,[2 inf]
b aşağıda verilen matris formatına sahip olur:
1
10
3 4 5 6 7
12 14 15 16 18
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]);
end
fclose(a)
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.
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.
Matlab Ders Notları
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;
uzaklik = uzak(ax,ay,bx,by); % uzak.m alt programını çağırıyor
fprintf(„iki nokta arasindaki uzaklık=%f‟,uzaklik);
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 hem alt programda hem
de ana programda hesaplanan sonuç değerinin aktarıldığı değişkendir.
 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.
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
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;
Alt program
(sonuckiyasla.m)
kiyasla % kiyasla.m ana programını çağırır
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)
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)
ln( x)  1
x
F(x, y)  x  y  x.y 
 tan( )
log10 ( y)
y
2
Matlab Ders Notları
Uygulama
Bir data dosyasında verilen sayıları kullanarak aşağıdaki fonksiyonun
değerini alt fonksiyonda hesaplayıp sonucu ana programda yazdıran bir
MATLAB programı yazınız.
ln( x)  1
F(x, y)  x  y  x.y 
log10 ( y)
2
x y
1 10
3 13
5 15
8 16
9 18
Matlab Ders Notları
Download

Ders Notu 6