• Sonuç bulunamadı

Fen ve Mühendislik Uygulamaları ile MATLAB

N/A
N/A
Protected

Academic year: 2022

Share "Fen ve Mühendislik Uygulamaları ile MATLAB"

Copied!
25
0
0

Yükleniyor.... (view fulltext now)

Tam metin

(1)

Fonksiyonlar, Giriş Çıkış İfadeleri

Doç. Dr. M. Akif CEVİZ

Fen ve Mühendislik Uygulamaları ile

MATLAB

Atatürk Üniversitesi Mühendislik Fakültesi

Makine Mühendisliği Bölümü

(2)

Fonksiyonlar, Giriş Çıkış İfadeleri

Kullanıcı tanımlı fonksiyonlar

Matlab’da hazır tanımlı çok sayıda fonksison mevcuttur; sin , sqrt, sum.

Şayet çeşitli Matlab komutlarını sıklıkla kullanıyorsanız, bu komutları bir fonksiyon haline getirebilirsiniz. Bu fonksiyonlar Matlab’da tanımlı

fonksiyonlar gibi çalıştırılabilir.

(3)

Fonksiyonlar, Giriş Çıkış İfadeleri

Kullanıcı tanımlı fonksiyonlar

Yazım metodu

function [out1, out2, ...] = funname(in1, in2, ...)

Funname isimli bir bir fonksiyon oluşturur, in1, in2, giriş ifadelerini alır ve out1, out2, çıkış ifadelerini üretir.

Kullanıcı tanımlı fonksiyon üretmek için:

1- İlk satır aşağıdaki gibi olmalıdır:

function [output variables] = function_name(input variables);

2- m-dosyası’nın adı, «function_name» ile aynı olmak zorundadır;

3- kullanıcı tanımlı fonksiyonlar, m-dosyasının adıyla çağrılırlar.

(4)

Fonksiyonlar, Giriş Çıkış İfadeleri

Örnek 1

Serbest düşen bir cismin son hızını hesaplayan fonksiyon yazınız

Fonksiyon Dosyası (sonhiz.m) (altprogram) function v= sonhiz(g,h)

v=sqrt(2*g*h);

m_file (An aprogram) clc

clear all g=9.81;

h=10;

v=sonhiz(g,h)

(5)

Fonksiyonlar, Giriş Çıkış İfadeleri

Örnek 2

Bir dairenin alan ve çevresini hesaplayan fonksiyon yazınız.

Fonksiyon Dosyası (Dosya adı: circle.m) (Alt program) function [area,perimeter]=circle(R)

area=pi*R^2;

perimeter=2*pi*R;

m_dosyası (Ana program) clc

clear all R=1;

[area,perimeter]=circle(R)

(6)

Fonksiyonlar, Giriş Çıkış İfadeleri

Örnek 3

İki nokta arası mesafeyi hesaplayan bir fonksiyon yazınız

x1= birinci noktanın x koordinatı; x2= ikincinoktanın x koordinatı y1= birinci noktanın y koordinatı; y2= ikinci noktanın y koordinatı Fonksiyon dosyası (uzak.m) (Alt program)

fundistance=sqrt((x2-x1).^2+(y2-y1).^2);

ction distance= dis(x1,y1,x2,y2) M_dosyası (Ana Program)

clc

clear all

x1=3; y1=4; x2=1; y2=2;

distance= dis(x1,y1,x2,y2);

fprintf('distance between two points=%g\n',distance);

(7)

Fonksiyonlar, Giriş Çıkış İfadeleri

Örnek 4

Aşağıdaki denklemi dışarıdan girilen x ve y değerlerine göre çözen bir fonksiyon yazınız.

F(x,y) = x

2

× y + x.y + ln(x) + 1

log

10

(y) + tan( x

y )

(8)

Fonksiyonlar, Giriş Çıkış İfadeleri

Örnek 5

x’in 0.1’er artımla 3’den 13’e kadar değerleri için aşağıdaki denklemi çözen ve x-y grafiğini çizen bir fonksiyon yazınız. Aşağıdaki değişkenler ana

programda tanıtılmalıdır; a=5, b=6, and c=8

(9)

Fonksiyonlar, Giriş Çıkış İfadeleri

Ana m-file (Dosya adı: soru.m )

clc

clear all x=3:0.1:13 a=5;b=6;c=8;

y=deneme(a,b,c,x);

plot(x,y)

Function File (Dosya Adı: deneme.m)

function y=deneme(a,b,c,x);

y=a+(b*x.^2)/2+(c*exp(x)+2)/3;

Çözüm 5

(10)

Fonksiyonlar, Giriş Çıkış İfadeleri

Giriş Çıkış İfadeleri

Programcılıkta ilerledikçe verilerinizi bilgisayara kaydetme ihtiyacı

duyacaksınız. Matlab ve disk dosyaları arsında verilerinizin transfer edilmesi işlemleri; veri alma (diskten) ve veri gönderme (diske) isimleri ile adlandırılır.

 Veri miktarının fazla olduğu durumlarda, tamamının klavyeden girilmesi ve aynı veri ile tekrar tekrar uğraşmak zorlaşacaktır.

 Bu durumda dosyalar arasında veri “alma” veya gönderme işlemleri yapılır.

 Matlab’a veri “alma” (diskten) ve Matlab’dan veri “gönderme” (diske)

işlemleri yapılabilir.

(11)

Fonksiyonlar, Giriş Çıkış İfadeleri

Dosya açma: fopen

fopen, dosya açar veya açık dosya hakkında bilgi verir.

Syntax

ifade= fopen(‘dosya_adı’, ‘izin’)

Bu satırile dosya_adı isimli tanımlanan “izin” ile açılır ve ifade ile tanımlanan dosya tanımlayıcıya eşitlenir.

ifade-> dosya tanımlayıcı

dosy_adı -> dosya ismi

izin -> r,w,.., v.s.

(12)

Fonksiyonlar, Giriş Çıkış İfadeleri

Dosy Açma: fopen

'r' Okuma için dosya açar (default).

'w' Yazma için yeni dosya açar veya oluşturur. Varsa mevcut verileri siler.

'a' Yazma için yeni dosya açar veya oluşturur. Mevcut verilere ilave eder.

'r+' Okuma ve yazma için dosya açar.

'w+' Okuma ve yazma için yeni dosya açar veya oluşturur. Varsa mevcut verileri siler.

'a+' Okoma ve yazma için yeni dosya açar veya oluşturur. Mevcut verilere ilave eder.

(13)

Fonksiyonlar, Giriş Çıkış İfadeleri

Dosya Kapatma: fclose

fclose bir dosyayı veya tüm açık dosyaları kapatır.

Syntax

durum = fclose(ifade);

ifade-> dosya tanımlayıcı

durum-> başarılı ise 0; değilse -1.

(14)

Fonksiyonlar, Giriş Çıkış İfadeleri

Verileri dosyaya yazma: fprintf

Formatlı verileri dosyaya yazma

Syntax:

fprintf(ifade,format,A,...)

fprintf (ifade,‘%format%format%format….’,var_1,var_2,var_3,….)

(15)

Fonksiyonlar, Giriş Çıkış İfadeleri

Örnek 7

Aşağıdaki M vektörünü veri.dat isimli dosyaya yazan 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

(16)

Fonksiyonlar, Giriş Çıkış İfadeleri

Örnek 8

Aşağıdaki M matrisini veri.dat isimli dosyaya yazan 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);

(17)

Fonksiyonlar, Giriş Çıkış İfadeleri

Dosyadan veri okuma: fscanf

fscanf: fscanf dosyadan formatlı verileri okumak için kullanılır.

Syntax

[deger, okunan_rakamların_sayısı] = fscanf(dosya_degiskeni, 'format', sayi);

[value, number_of_values_read] = fscanf(file_variable, 'format', count);

deger : alınan bilgi

okunan_rakamların_sayısı : Alınan rakamların sayısı

sayi : Okunması istenen rakam sayısı: n, [n, m], Inf

(18)

Fonksiyonlar, Giriş Çıkış İfadeleri

Örnek 9

Veri.dat isimli dosyadan tüm verileri alan ve b isimli dosyaya atayan program 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

(19)

Fonksiyonlar, Giriş Çıkış İfadeleri

Örnek 10

Veri.dat isimli dosyadan ilk iki veriyi alan ve b isimli değişkene atayn program yazınız.

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

(20)

Fonksiyonlar, Giriş Çıkış İfadeleri

Bir dosyadan birden fazla değişkene veri atamak

Sol taraftaki dosyadan veri almak için, a = fopen('veri.dat', 'r');

b = fscanf(a, '%g %g', [2 inf]);

fclose(a)

Veri.dat 1 10 3 12 4 14 5 15 6 16 7 18

1 3 4 5 6 7 10 12 14 15 16 18 Tsatırları 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 Dorudan değişkenlere

eşitlemek için

Sonuç

(21)

Fonksiyonlar, Giriş Çıkış İfadeleri

Diğer metot

clc

clear all

a=fopen('veri.dat','r');

for i=1:6 for j=1:2

masa(i,j)=fscanf(a,'%g',[1,1]);

end end

fclose(a);

k=(masa(:,1))' % tırnak işareti transpoz işlemidir t=(masa(:,2))'

Veri.dat 1 10 3 12 4 14 5 15 6 16 7 18

Bir dosyadan birden fazla

değişkene veri atamak

(22)

Fonksiyonlar, Giriş Çıkış İfadeleri

SORU: Tabloda sıcaklık ve basınç verileri bulunmaktadır. Bu verileri ideal gaz denkleminde kullanarak özgül hacmi hesaplayan ve özgül hacmin 0.23’den büyük ve 0.33’den küçük olan değerlerini yeni bir dizi değişkenine atayan bir MATLAB programı yazınız. (R= 0.287 kJ/kg.K)

𝑝 𝑣 = 𝑅 𝑇

(Basınç * Özgül hacim = Gaz sabiti * Sıcaklık)

Deney no Basınç (kPa) Sıcaklık(K)

1 2200 1500

2 2400 2000

3 2600 2500

4 2800 3000

5 3000 3500

CEVAP:

MATLAB Program

clc clear all

P=[2200 2400 2600 2800 3000];

T=[1500 2000 2500 3000 3500];

R=0.287;

a=0;

for i=1:5

v(i)=R*T(i)/P(i);

if v(i)>0.23 & v(i)<0.33 a=a+1;

vv(a)=v(i);

end end vv

(23)

Fonksiyonlar, Giriş Çıkış İfadeleri

%% dosya oluşturma clc

clear all

M=[2200 1500; 2400 2000;2600 2500;2800 3000;3000 3500];

a=fopen('veri.dat','w');

for i=1:5 for j=1:2

fprintf(a,'%g ',M(i,j));

end

fprintf(a,'\n');

end

fclose(a);

%% Hepsini birden okutma clc

clear all

a=fopen('veri.dat','r');

b=fscanf(a,'%g',[2 inf]);

fclose(a);

T=b(1,:);

(24)

Fonksiyonlar, Giriş Çıkış İfadeleri

%% birer birer okutma clear all

clc

a=fopen('veri.dat','r');

for i=1:5

T(i)=fscanf(a,'%g',[1]);

P(i)=fscanf(a,'%g',[1]);

end

fclose(a);

%% işlemler R=0.287;

a=0;

for i=1:5

v(i)=R*T(i)/P(i);

if v(i)>0.23 & v(i)<0.33 a=a+1;

vv(a)=v(i);

end end

(25)

Fonksiyonlar, Giriş Çıkış İfadeleri

Örnek 10

Bir kargo şirketinde, ücretlendirme paket ağırlığına göre yapılmaktadır. Taban fiyat, 2 kg’a kadar 5 TL olup ondan sonraki her kilo başına 0.5 TL ilave yapılarak hesaplanmaktadır. Eğer paket ağırlığı 35 kg’dan fazlaysa, hesaplanan ücrete “ilave”

10 TL alınmakta ve 50 kg’dan fazla tek paketler, işçi sağlığı açısından kabul edilmemektedir. Kullanım kolaylığı açısından paket ağırlığını kg cinsinden alıp, ücreti hesaplayan ve aşağıdaki formatta veri.dat isimli dosyaya yazdıran bir MATLAB programı yazınız.

(Paket ağırlıklarını tam sayı alınız)

Ağırlık (kg) Ücret(TL)

1 5

2 5

3 5.5

4 6

50 39

Referanslar

Benzer Belgeler

Böylece, Türk top­ lumunun tarihsel gelişimine uygun düşebilecek bir mo­ deli öğretisi için hareket noktası olarak kabul etmiş­ tir.. Gökalp’e göre, Türk

Kendisi tek bir aşk romanı yazmış olmasına rağmen nasılsa 'aşk uzmanı yazar' oluvermiş, bu konuda bol bol fikir belirtmek durumunda bırakılmış.. Ancak bu

Ya şamı yok eden enerji politikalarının insanlara dayatıldığı, her gün daha fazla kirletilen bir dünya ve insana değer vermeyen bir sistemle kar şı karşıyayız.. Bu

BirdLife International isimli kurumun başlattığı dünyanın en geniş çaplı kuş koruma programı, iddialı amacıyla gelecek hafta ba şlıyor: Dünyanın tehdit altında bulunan

Merat ve Gutierrez isimli iki Meksikalı, petrol fiyatlarının tavan yaptığı ve küresel ısınmanın en önemli nedenlerinden birinin otomobillerden kaynaklanan sera gaz ı

İbn Korkmaz âyetleri tefsir ederken seciʻ sanatını kullanmıştır. Ele aldığı âyetlerin tefsirine geçmeden önce o âyet grubunun üslûb özelliği hakkında

Bölüm 2- Mikrobiyoloji Laboratuvarında Bulunması Gereken Araç Gereç ve Aletler Bölüm 4- Mikroorganizmaların Canlılar Alemindeki Yeri. Bölüm 5- Funguslar Bölüm

43 Sevilen naat ve medhiyeleri; lirik ve duyarlı gazelleri bulunan Kerkük'ün Piryâdi Mahallesinde 1834 yılında doğmuş olan şair, kendisinden sonra gelen Kerkük