fen ve mühendislik uygulamalarında matlabmuhserv.atauni.edu.tr/makine/ikaymaz/matlab/ders... ·...
Post on 30-Jul-2018
240 Views
Preview:
TRANSCRIPT
MATLAB Ders Notları
Fen ve Mühendislik Uygulamalarında MATLAB
Doç. Dr. İrfan KAYMAZ
Dosya YönetimiFonksiyon Yapısı
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
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);
For döngüsü ile:
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
ÖrnekAş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)
ÖrnekAşağıda verilen vektörün ilk iki elemanını
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' );
for i=1:2
b(i)=fscanf(a,'%d ',[1]);
end
fclose(a);
b
Matlab Ders Notları
Yanda verilen formattaki bir dosyadan bilgilerin aynı
formatta okunması için:
b=fopen(a,’veri.dat’,[2 inf]
Dosyadan birden fazla değişkene bilgi okunması
Veri.dat
1 10
3 12
4 14
5 15
6 16
7 18
b aşağıda verilen matris formatına sahip olur:
1 3 4 5 6 7
10 12 14 15 16 18
Satır vektörlerini faklı değişkenlere atamak için:
c=b(1,:)
d=b(2,:) a=fopen('veri.dat','r')
for i=1:6
d(i)=fscanf(a,'%f',[1]);
e(i)=fscanf(a,'%f',[1]);
end
fclose(a)
Dosyadan bilgilerin direkt
olarak farklı değişkenlere
okutmak için
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ı
Ö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 uzaklik = uzak(x1,y1,x2,y2)
uzaklik=sqrt((x2-x1).^2+(y2-y1).^2);
function cikis_ifadesi1, 2,…, n =fonksiyon_adi (giris_ifadesi1, 2, …n)
Bu function alt programı
uzak.m olarak kaydedilir.
FUNCTION ALT PROGRAMI (uzak.m):
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ı
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.
Adım adım gerçekleştirilen işlemler:
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 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);
FUNCTION ALT PROGRAMI:
ANA PROGRAM:
uzak; % uzak.m alt programını çağırıyor
Matlab Ders Notları
Alt programdan ana programın çağrılması:
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
Ö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)
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
Alt program
(sonuckiyasla.m)
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)
)y
xtan(
)(log
1)ln(x.yyxy)F(x,
10
2
y
x
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.
)(log
1)ln(x.yyxy)F(x,
10
2
y
x
x y
1 10
3 13
5 15
8 16
9 18
top related