27
Nedim TUTKUN Elektrik Elektronik Mühendisliği Bölümü [email protected] 1 MATLAB İLE PROGRAMLAMAYA GİRİŞ

M PROGRAMLAMAYA GİRİŞ - nedimtutkun.comnedimtutkun.com/ders_notlari/matlab_programlama/notlar3.pdf · Fonksiyonlar ve Alt Programlar MATLAB bir çok hazır fonksiyon içermektedir

  • Upload
    others

  • View
    18

  • Download
    0

Embed Size (px)

Citation preview

Nedim TUTKUN Elektrik Elektronik Mühendisliği Bölümü

[email protected]

1

MATLAB İLE

PROGRAMLAMAYA

GİRİŞ

3. Hafta Ders İçeriği

M Dosyası Oluşturma

Fonksiyon Yazma

Fonksiyonlar ve Alt Programlar

MATLAB bir çok hazır fonksiyon içermektedir (sqrt, sum

vb.)

Fonksiyonları oluşturan kodlar yerine bu fonksiyonları

çağıran komutlar kullanılmaktadır.

Yazdığınız programda bir dizi MATLAB komutu sıklıkla

tekrar ediyorsa, bu komutların fonksiyon yapısı altında bir

araya getirilip bir isim verilerek kullanılması daha

uygundur.

3

M-Dosya Yapısı

Senaryo dosyaları (scriptfile) özel görevlerin yerine getirilmesi

için gerekli olan MATLAB komutlarının saklandığı metin

dosyalarıdır.

Belirli bir hesaplamayı gerçekleştirmek için komut penceresinden

çok sayıda komut yazmak yerine komutlar script dosyasında

saklanır ve daha sonra bu dosya çalıştırılarak komutlar yerine

getirilir. Bu dosyalar MATLAB’ın çalıştığı dizinde "*.m" dosya

uzantısıyla kayıt edilmelidir.

M-dosyalarının oluşturulması ve düzenlenmesi için MATLAB

metin editörü arabirimi (text editor) ya da Windows Notepad gibi

metin düzenleme yazılımı da kullanılabilir. MATLAB metin

hazırlayıcısı ya komut penceresinin üst kısmında yer alan

“NewM-file” düğmesi tıklanır ya da “File” menüsünden “New/M-

file” komutu seçerek etkin hale getirilebilir.

4

5

Neden M-Dosyalarına İhtiyaç Duyuyoruz?

Değişken sayısının fazla olması

Akış diyagramlarının uygulanmasında

Programda gerekli değişikliklerin kolayca yapılmasında

M-Dosyalarının Kullanılmasında Dikkat Edilecek Hususlar

M-dosyası çalışma klasörü olarak tanımlanan klasörde

bulunmalıdır.

MATLAB’in Çalışma Dizini (CurrentFolder) altında "DosyaAdi.m"

şeklinde saklanmaları gerekir.

M-dosyasına isim verilirken kesinlikle Türkçe karakter

kullanılmamalıdır.

M-dosyasına isim verilirken MATLAB’in hazır komutları (pi, exp, sin

ve vs.) verilmemelidir.

6

Alt Programlar

7

Alt programları fonksiyonlardan ayıran en önemli özelliği,

çağıran programa, parametre listesindeki değişkenler

aracılığıyla birden çok sonuç değeri gönderebilmeleri ve

bağımsız bir komut ile çalıştırılmalarıdır.

Alt programlar, başka bir prosedür içinden Call komutu ile

çağrılırlar.

M-fonksiyon yapısı

8

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.

function cikis_ifadesi1, 2,…, n =fonksiyon_adi (giris_ifadesi1, 2, …n)

9

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

sonuc = uzak(ax,ay,bx,by); % uzak.m alt programını çağırıyor

fprintf(‘iki nokta arasindaki uzaklık=%f’,uzaklik);

10

Ana program herhangi bir isimle kaydedilip çalıştırılır.

Program, function adına geldiğinde 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 ana programda sonuc

değişkeninde saklanır.

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:

11

Uygulama: Yukarıdaki örneği ana programdan alt programa

parameter 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

Alt Programdan Ana Programın Çağrılması

12

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)

Alt program

(sonuckiyasla.m)

MATLAB Bilgilerinin Saklanması

Yapılan çalışmaları saklamak için diary, save as

komutları, bilgisayar ortamında saklı bir bilgiyi çağırmak

için ise load ve import data komutları kullanılır.

13

Komut Açıklama

diary (dosya adı) MATLAB ortamında o anda bulunan tüm text’leri (>> işaretleri hariç) belirtilen dosyaya (bu dosyanın adı diary komutundan sonra yazılır) kaydeder. Eğer dosya adı belirtilmez ise dosya adı diary olarak kaydedilir.

diary off diary işlemini askıya alır.

diary on diary işlemine geri döner.

diary komutu

14

yamuk_alan.m adlı dosya

tekrar görüntülenmek istenirse

type komutu kullanılır.

diary off komutu kullanılmaz

ise komut penceresinde

kullanılan her satır

yamuk_alan.m adlı dosyaya

kaydedilmeye devam

edecektir.

save komutu

15

save komutundan sonra dosya

adı ve boşluk bırakılarak

saklanacak değişken adları

sırası ile yazılır ve .mat dosya

uzantısı ile kayıt edilir.

save as komutu

16

Import Data komutu ile MATLAB dosyalarının okunması

17

MATLAB’de Vektör ve Matris Gösterimi

MATLAB ortamında her değişken ya bir vektör yada bir

matristir.

Örneğin a=2 yazıldığında, a sayısı MATLAB arka planında

1×1 boyutunda bir matris olarak saklanır.

Eğer söz konusu bir sayı değil de sayı dizisi ise satır veya

sütun vektörü olarak saklanır.

18

(:) operatörü kullanarak vektör elde edilmesi

başlangıç değeri:artış değeri:son değer

19

[başlangıç değeri:artış değeri:son değer]

Mevcut bir vektörün elemanlarını kullanarak başka vektör elde edilmesi

20

B vektörünün elemanları; A’nın 3 numaralı

elemanından 1’er artış ile 7 numaralı elemana

kadar yazılması ile elde edilmektedir.

linspace komutu kullanarak vektör üretilmesi

𝑎𝑟𝑡𝚤ş = 𝑠𝑜𝑛 𝑑𝑒ğ𝑒𝑟 − 𝑏𝑎ş𝑙𝑎𝑛𝑔𝚤ç 𝑑𝑒ğ𝑒𝑟𝑖

𝑡𝑜𝑝𝑙𝑎𝑚 𝑠𝑎𝑦𝚤 − 1

artış=11−0

9−1=1.375

Özel Vektör Yapıları

zeros(1,n) : Tüm elemanları sıfır olan n elemanlı satır

vektör.

ones(1,n) : Tüm elemanları bir olan n elemanlı satır

vektör.

eye(n,n) : n elemanlı birim matris.

rand(1,n) : 0 ile 1 arasında üniform rastgele üretilmiş n

elemanlı vektör

randn(1,n) : Ortalaması 0 ve standart sapması 1 olan

normal dağılımlı üretilmiş n elemanlı vektör.

21

«

prod komutu

prod(x) : Vektörün elemanlarını birbiriyle çarpar

22

«»

sign komutu

sign(x) : Vektörün pozitif elemanlarını 1, negatif elemanları

için -1, 0 olan elemanları için 0 sonucunu verir.

23

«

fix komutu

fix(y) : Sıfıra doğru yuvarlama işlemi yapar.

24

«

floor, ceil, round ve sort komutları

floor(y) : – sonsuza doğru yuvarlama işlemi yapar.

ceil(y) : + sonsuza doğru yuvarlama yapar.

round : Kendisine en yakın sayıya yuvarlama işlemi

Sort : Vektörün elemanlarını küçükten büyüğe sıralar.

25

«

Vektör ve Matris Transpozesi

Matlab’da bir vektörün tranzpozesini alma işlemi satır ve

sütunların yer değiştirmesi durumudur.

Yani satır vektör olarak tanımlanmış bir x vektörü

x’ ifadesi ile sütun vektöre çevrilmiş olur.

• xt=x’

26

Yararlanılan Kaynaklar

İ. Kaymaz, Bilgisayar Programlama MATLAB, Ders Notları, Erzurum,

2010.

B. R. Hunt, R. L. Lipsman, J. M. Rosenberg, A Guide to MATLAB for

Beginners and Experienced Users.

U. Arifoğlu, MATLAB 9.1 Simulink ve Mühendislik Uygulamaları, 1.

baskı, 2016.

M. Coşar, MATLAB, Ders Notları, Çorum.

A. Dumlu, Bilgisayar Programlama, Ders Notları, Erzurum.

27