Upload
others
View
18
Download
0
Embed Size (px)
Citation preview
Nedim TUTKUN Elektrik Elektronik Mühendisliği Bölümü
1
MATLAB İLE
PROGRAMLAMAYA
GİRİŞ
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
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.
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
«
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
«
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