fen ve mühendislik uygulamalarında matlabmuhserv.atauni.edu.tr/makine/ikaymaz/matlab/ders... ·...

19
MATLAB Ders Notları Fen ve Mühendislik Uygulamalarında MATLAB Doç. Dr. İrfan KAYMAZ Dosya Yönetimi Fonksiyon Yapısı

Upload: dangduong

Post on 30-Jul-2018

240 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Fen ve Mühendislik Uygulamalarında MATLABmuhserv.atauni.edu.tr/makine/ikaymaz/matlab/ders... · Matlab Ders Notları İzin Tipleri: Tipler Açıklama „r‟ Dosyayı sadece okumaya

MATLAB Ders Notları

Fen ve Mühendislik Uygulamalarında MATLAB

Doç. Dr. İrfan KAYMAZ

Dosya YönetimiFonksiyon Yapısı

Page 2: Fen ve Mühendislik Uygulamalarında MATLABmuhserv.atauni.edu.tr/makine/ikaymaz/matlab/ders... · Matlab Ders Notları İzin Tipleri: Tipler Açıklama „r‟ Dosyayı sadece okumaya

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.

Page 3: Fen ve Mühendislik Uygulamalarında MATLABmuhserv.atauni.edu.tr/makine/ikaymaz/matlab/ders... · Matlab Ders Notları İzin Tipleri: Tipler Açıklama „r‟ Dosyayı sadece okumaya

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.

Page 4: Fen ve Mühendislik Uygulamalarında MATLABmuhserv.atauni.edu.tr/makine/ikaymaz/matlab/ders... · Matlab Ders Notları İzin Tipleri: Tipler Açıklama „r‟ Dosyayı sadece okumaya

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

Page 5: Fen ve Mühendislik Uygulamalarında MATLABmuhserv.atauni.edu.tr/makine/ikaymaz/matlab/ders... · Matlab Ders Notları İzin Tipleri: Tipler Açıklama „r‟ Dosyayı sadece okumaya

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)

Page 6: Fen ve Mühendislik Uygulamalarında MATLABmuhserv.atauni.edu.tr/makine/ikaymaz/matlab/ders... · Matlab Ders Notları İzin Tipleri: Tipler Açıklama „r‟ Dosyayı sadece okumaya

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, …….)

Page 7: Fen ve Mühendislik Uygulamalarında MATLABmuhserv.atauni.edu.tr/makine/ikaymaz/matlab/ders... · Matlab Ders Notları İzin Tipleri: Tipler Açıklama „r‟ Dosyayı sadece okumaya

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:

Page 8: Fen ve Mühendislik Uygulamalarında MATLABmuhserv.atauni.edu.tr/makine/ikaymaz/matlab/ders... · Matlab Ders Notları İzin Tipleri: Tipler Açıklama „r‟ Dosyayı sadece okumaya

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?

Page 9: Fen ve Mühendislik Uygulamalarında MATLABmuhserv.atauni.edu.tr/makine/ikaymaz/matlab/ders... · Matlab Ders Notları İzin Tipleri: Tipler Açıklama „r‟ Dosyayı sadece okumaya

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

Page 10: Fen ve Mühendislik Uygulamalarında MATLABmuhserv.atauni.edu.tr/makine/ikaymaz/matlab/ders... · Matlab Ders Notları İzin Tipleri: Tipler Açıklama „r‟ Dosyayı sadece okumaya

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

Page 11: Fen ve Mühendislik Uygulamalarında MATLABmuhserv.atauni.edu.tr/makine/ikaymaz/matlab/ders... · Matlab Ders Notları İzin Tipleri: Tipler Açıklama „r‟ Dosyayı sadece okumaya

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

Page 12: Fen ve Mühendislik Uygulamalarında MATLABmuhserv.atauni.edu.tr/makine/ikaymaz/matlab/ders... · Matlab Ders Notları İzin Tipleri: Tipler Açıklama „r‟ Dosyayı sadece okumaya

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.

Page 13: Fen ve Mühendislik Uygulamalarında MATLABmuhserv.atauni.edu.tr/makine/ikaymaz/matlab/ders... · Matlab Ders Notları İzin Tipleri: Tipler Açıklama „r‟ Dosyayı sadece okumaya

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.

Page 14: Fen ve Mühendislik Uygulamalarında MATLABmuhserv.atauni.edu.tr/makine/ikaymaz/matlab/ders... · Matlab Ders Notları İzin Tipleri: Tipler Açıklama „r‟ Dosyayı sadece okumaya

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);

Page 15: Fen ve Mühendislik Uygulamalarında MATLABmuhserv.atauni.edu.tr/makine/ikaymaz/matlab/ders... · Matlab Ders Notları İzin Tipleri: Tipler Açıklama „r‟ Dosyayı sadece okumaya

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:

Page 16: Fen ve Mühendislik Uygulamalarında MATLABmuhserv.atauni.edu.tr/makine/ikaymaz/matlab/ders... · Matlab Ders Notları İzin Tipleri: Tipler Açıklama „r‟ Dosyayı sadece okumaya

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

Page 17: Fen ve Mühendislik Uygulamalarında MATLABmuhserv.atauni.edu.tr/makine/ikaymaz/matlab/ders... · Matlab Ders Notları İzin Tipleri: Tipler Açıklama „r‟ Dosyayı sadece okumaya

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)

Page 18: Fen ve Mühendislik Uygulamalarında MATLABmuhserv.atauni.edu.tr/makine/ikaymaz/matlab/ders... · Matlab Ders Notları İzin Tipleri: Tipler Açıklama „r‟ Dosyayı sadece okumaya

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

Page 19: Fen ve Mühendislik Uygulamalarında MATLABmuhserv.atauni.edu.tr/makine/ikaymaz/matlab/ders... · Matlab Ders Notları İzin Tipleri: Tipler Açıklama „r‟ Dosyayı sadece okumaya

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