MATLAB’a Giriş
Konular:
MATLAB ortamının tanıtımı
Matlab sistemi (ara yüzey tanıtımı)
- Geliştirme ortamı
- Komut penceresi
- Başlatma penceresi (launch pad)
- Workspace
- History
- Current directory
MATLAB
MATLAB, bilim adamları ve mühendislere, Fortran ve C gibi gelenekselleşmiş dillerde program yazmaksızın, matrislere dayalı problemleri çözmede kullanılmak üzere bir sayısal hesaplama kütüphanesi sunmak amacıyla, MATris LABoratuvarı (MATrix LABoratory) programı olarak tasarlanmıştır. Fakat daha sonra, Optimization Toolbox ve Control System Toolbox gibi bazı toolbox’lar eklenerek geliştirilmiştir.
MATLAB bir yorumlayıcıdır (interpreter); yani sonuç, daha ziyade eltipi hesap makinelerine benzer tarzda ekranda yazılı bir metin olarak alınabilir. Neticede diğer dillerde olduğu gibi “derleme”ye (compiler) ihtiyaç yoktur; fakat programlamaya izin vermesinden dolayı da güçlü bir paket programdır.
Temel Bilgiler
Komut Penceresi: MATLAB ile iletişim kurulan ana penceredir. MATLAB yorumlayıcısı kullanıcıdan gelecek komutları kabul etmeye hazır olduğunu gösteren “ >> ” biçiminde bir ileti görüntüler. Örneğin, 4*25+6*52+2*99 gibi basit matematiksel işlemi yapmak için
>> 4*25+6*52+2*99 ifadesini yazıp Enter tuşuna basılınca,
ans=
610
Komut satırında yanlışların düzeltilmesi: Klavyede yer alan ok tuşları komut satırında yapılan yanlışlıkları düzeltilmesine olanak tanır. Bunlar yukarı “↑” aşağı “↓” sol “←” sağ “→”. Yukarı tuşu kullanılarak bir önceki satır tekrar görüntülenerek sağ ve sol tuşları ile yanlış yazılı yere kursör taşınarak düzenleme gerçekleştirilir.
Sonucun Ekranda Görüntülenmesini Gizleme: bir deyim yazıp, Enter tuşuna basılınca sonuçlar ekranda otomatik olarak görüntülenir. Buna karşılık, deyimin sonuna “ ; ” ilave edilecek olursa, bu deyim ile yapılan hesaplamalar ekranda görüntülenmez.
MATLAB DEĞİŞKENLERİ VE KURALLAR
Diğer programlama dillerinin pek çoğunda olduğu gibi MATLAB da matematik deyimler şart koşmakla beraber, diğer pek çok programlama dillerinden farklı olarak bu deyimler tümüyle matrisleri kapsar.
Deyim oluşturma gurupları: Değişkenler, rakamlar, işletmenler ve fonksiyonlardır. MATLAB deyimleri ise komut ortamında yazılan her türlü komut satırlarıdır.
Değişkenler: Deyimler içerisinde sayısal değerlerin yerini alan ifadelerdir. MATLAB bir değişken ile karşı karşıya geldiğinde, otomatik olarak bu değişkeni oluşturulur ve yeteri kadar bellek ayrılır. Eğer değişken daha önceden tanımlı ise MATLAB onun içeriğini değiştirir ve gerekirse yeni bellek ayırır.
Örneğin, >>x =50
yazıldığında “x” adı altında bir değişken oluşturur ve 50 değerini bu değişkene atar.
Diğer bilgisayar dillerinde olduğu gibi MATLAB’ın da değişken isimleri konusunda bazı kuraları vardır.
Belli Başlı Kurallar Aşağıda Olduğu Gibi Özetlenebilir
- Değişken isimleri küçük büyük harf kullanımına duyarlıdır. Buna göre aynı anlama gelen fakat farklı yazılan “orta”, “Orta”, “orTa” ve “ORTA” kelimeleri MATLAB için farklı değişkenlerdir.
- Değişken isimleri en fazla 31 karakter içerebilir. Bundan fazla olanlar dikkate alınmaz
- Değişken isimleri daima bir harf ile başlamalı ve bunu herhangi bir sayıda harfler, rakamlar veya alt çizgi ”_” izleyebilir. Noktalama işaretleri değişken isminde kullanılmaz. Çünkü bunların pek çoğunun MATLAB için bir anlamı vardır.
Rakamlar: MATLAB rakamlar için artı veya eksi işareti ve tercihli ondalık noktası ile birlikte alışagelmiş ondalık işaretler sistemi kullanır. Bilimsel işaretler sistemi 10 tabanına göre kuvvet belirlemek için “e” harfi kullanır. Sanal rakamlar son takı olarak “ i ” veya “ j ” harfi kullanır.
3, -100, 0.0005, 9.53564 1.456e10, 2.5e-5, 10i, -3.4j, 3e5i
İşletmenler: MATLAB deyimler içerisinde alışageldik aritmetik işletmenler ve öncelik kuralları kullanır.
Matematik işlemlerde öncelik hakkı: Tek bir matematiksel deyim içinde birden fazla işlem bir arada bulunabildiğine göre hangi işlemin öncelik hakkına sahip olduğunun bilinmesi yerinde olacaktır. Aşağıda MATLAB da kullanılan işlemlerde, işlemlerin öncelik listesi verilmiştir.
Fonksiyon: MATLAB sin, abs, sqrt, ve Log gibi çok önemli fonksiyonları da içine alan çok sayıda elemansal matematik fonksiyon sağlar. Bu fonksiyonların bazıları aşağıdaki Tablo’da listelenmiştir.
MATLAB’ DE DEĞİŞKEN TİPLERİ
Double:
Skaler veya vektörlerden oluşan sayısal değişkenleri ifade eder.
Char:
Tek bir karakter veya karakter grubundan oluşan skaler veya dizinleri ifade eder.
MATLAB’ DE DEĞİŞKEN ATAMALARI
Eşitlik İfadeleri ile Değişken Atamaları
Bu şekildeki bir değişken atamasının genel hali,
>> değişken = değer
şeklindedir. Burada “değişken”, herhangi bir karakter veya karakter grubu olabilir. “değer” ise, herhangi bir matematiksel ifade, bir karakter dizisi, bir sabit, bir matris veya bunların birden fazlasının matematiksel işlemler ile oluşturulmuş kombinasyonları olabilir.
ÖZEL DEĞERLER VE KALICI DEĞİŞKENLER
MATLAB‘ın yapısında önceden tanımlanmış, kullanılacakları zaman tekrar tanımlanmalarına gerek olmayan ve herhangi bir anda kullanılmaya hazır bazı özel değerler bulunur.
Örneğin:
yarıçapı 2 birim olan bir kürenin alanını
>> r=2;
>> alan = 4 * pi * r^2
>> alan =
50.2655
BİR DEĞİŞKENE DIŞARIDAN BİR DEĞER ATANMASINI İSTEMEK
“ input ” fonksiyonu, komut penceresinde kullanıcıdan bir değişkene bir değer girmesini isteyen bir komut görüntüler ve kullanıcının bu değeri girmesini bekler,
X=input(‘Bir değer giriniz= ‘);
MATEMATİKSEL VE MANTIKSAL OPERATÖRLER
Program dallandıran bir çok yapıda, işlemler, sonucun “doğru” (1) veya “yanlış” (0) olması durumları ile kontrol edilir. MATLAB’ da ‘doğru‘ veya ‘yanlış‘ ifadeleri ile sonuçlar üreten iki çeşit operatör vardır. Bunlar matematiksel ve mantıksal operatörlerdir.
Matematiksel Karşılaştırma Operatörleri
Bu operatörler iki değişkenin değer bakımından karşılaştırmasını yaparlar ve üretilen sonucun doğru (1) veya yanlış (0) durumuna göre sonuçlar üretirler.
Genel kullanımları a1 işlem a2 şeklindedir. Burada a1 ve a2, aritmetik değerler, değişkenler veya karakter dizileri olabilir, “işlem” ise, söz ettiğimiz matematiksel kıyaslama operatörlerinden biri olabilir. Eğer a1 ve a2 arasındaki ilişki operatörün belirttiği şekilde ise sonuç, 1 değerini alır. Eğer operatörün belirttiği durumdan farklı bir durum söz konusu ise sonuç, 0 değerini alır.
Eşitlik durumlarında verilen işaret iki adet eşittir “==“ işaretinden oluşur. Oysa değişken atamalarında kullandığımız eşittir “=“, bir tanedir. Bu ikisi birbirlerinden farklı operatörlerdir. “==” operatörü, kıyaslama durumlarında kullanılır ve mantıksal bir sonuç üretir. “Eşit ise”, “eşit midir?” şeklindeki durumlarda kullanılır. “=“ işareti ise, bir değişkene bir değer atamada kullanılır, örneğin MATLAB komut penceresinde; 3=5 yazdığımızda; program hata üretir. Oysa 3==5 yazdığımızda bu “ 3, 5’e eşit midir? ” anlamına gelir, kıyaslama yanlıştır ve MATLAB bu durum için “0” cevabını üretir. Yeni başlayanlar için bir karşılaştırma durumunda tek eşittir “=“ işareti kullanmak, sık yapılan bir hatadır.
şeklinde yapılan iki değişken atamasını takiben yapılan x==y karşılaştırmasının sonucu olarak 1 cevabı beklenirken, 0 cevabı alınır. MATLAB, bu iki değeri farklı olarak algılamıştır. Çünkü MATLAB‘da sin (pi) değeri 0’a eşit değildir, sin(pi), yuvarlamadaki farklılıktan ötürü 1.2246e-016 değerine sahiptir ve 0‘a eşit değildir. Yani teorik olarak birbirine eşit iki değer, aslında farklı sayılara tekabül etmektedir.
Sık yapılabilecek diğer bir hata da karşılaştırma operatörlerinin aritmetik operatörlerden daha sonra değerlendirildikleri durumunu ihmal etmektir. Yani parantezlerden yararlanılmadığı durumlarda bile aritmetik işlemler, öncelikle yapılır.
Mantıksal Operatörler
Bu operatörler, bir veya iki mantıksal anlamı olan ve mantıksal bir sonuç üreten operatörlerdir. Üç tane çiftli mantık operatörü vardır. Bunlar; “AND“, “OR” ve “XOR” dur. Diğer bir mantık operatörü tekli yapıya sahip olan “NOT” operatörüdür. Çiftli yapıdaki operatörlerin genel kullanımı a işlem b şeklinde iken tekli bir operatör olan “NOT” genel kullanımı işlem a şeklindedir. Burada a ve b değişkenler iken işlem, aşağıdaki mantık operatörlerinden biridir, a ile b‘nin arasındaki ilişki, operatörün belirttiği şekilde ise sonuç 1, eğer değilse sonuç 0 olur.
MATLAB’ de Programlama
M-dosyası
Genel tanıtımı : Bir senaryo dosyası (script file) özel bir görevi yerine getirmek için gerekli MATLAB komutlarının saklandığı bir metin programıdır. Başka bir ifadeyle; bir hesaplamayı gerçekleştirmek için yazılacak bir çok komutlar dizisi, komut penceresinden tek tek girmek yerine bir dosyada saklanır daha sonra bu dosya çalıştırılarak bu komutlar icra edilir. Bu dosyaların MATLAB’ın çalıştığı birimde “dosya_adı.m” uzantısıyla saklanmaları gerekir.
Senaryo dosyalarının ( M-dosyalarının ) oluşturulması ve yazılması için MATLAB bir metin hazırlayıcısı (text editor) sunmaktadır. Bu senaryo dosyaları Windows’da Notepad gibi herhangi bir metin hazırlayıcısında da yazılabilirler. MATLAB metin hazırlayıcısı ya komut penceresinin üst kısmında yer alan “New M-file” düğmesi tıklanarak veya kısaca “File” menüsünden “New/M-file” ibaresini seçerek etkin hale getirilebilir.
M-dosyalarının Gerekliliği:
- Değişken sayısı fazla olması durumunda
- Akış diyagramlarının uygulanmasında
- Programdaki değişikliklerin kolayca yapılmasında
Örnek: Dışardan girilen dairenin yarıçapına göre alan ve çevre hesaplayan program yazınız?
R = input(‘ Dairenin yarıçapını giriniz = ‘);
Alan=pi*R^2;
Cevre=2*pi*R;
Alan,Cevre
Kontrol Yapıları
if Şartlı deyimi
Bir mantıksal ifadeyi kontrol ederek bunun sonucuna göre mümkün seçeneklerden birini icra edebilen bir komuttur.
Disp:
Ekrana mesaj veya değer yazdırmak için kullanılan komuttur.
Disp(‘yazdırılacak mesaj’);
Disp(değişken adı);
Switch
Şartlı Deyimi
FOR DÖNGÜSÜ
Bir çok uygulamada belirli işlemlerin tekrar tekrar gerçekleştirilmesi gerekir. Programlamada bu işlemler grubunu çok sayıda tekrar etmek imkanı sağlayan yapılara ÇEVRİM, DÖNGÜ veya LOOP denir.
►Çevrim, bir tekrarlı işlem yapısıdır.
- Çevrimdeki işlem sayısını önceden belirleyerek ve bu sayıya ulaşıp ulaşmadığını bir sayaç ile denetleyerek gerçekleştirilen çevrim yapıları
- Çevrimin sona ermesini bir koşula bağlı olarak kontrol eden çevrim yapıları
for döngüsünün genel yapısı
for döngü değişkeni = başlangıç : bitiş
komutlar
end
fprintf Fonksiyonu
Genel kullanımı:
fprintf (‘ekrana basılacak açıklama %f \n’, deger)
Burada
- %f : Değerin reel sayı olduğunu gösterir
- \n : Bir satır atlatır
- deger : Ekrana yazılması istenen sayısal değişkenin adı
Diğer yazım biçimleri:
- %g : Tamsayı değeri basar
- %e : Üstel değer basar
While Döngüsü
Önceden belirlenmiş belli bir durum gerçekleşinceye kadar gereken sayıda tekrar edilen ifadeleri içerir.
Genel Kullanımı:
While durum
ifade_1
ifade_2
ifade_n
end
Örnek:
a=5
while a<10
a=a+1
end
Break ifadesi
FOR ve WHILE döngülerine ilaveten bir program akışını kontrol edebilmenin diğer bir yolu break ifadesini kullanmaktır. Break ifadesini döngü gövdesi içerisinde kullanmak, döngünün durmasını ve döngüden sonra gelen ilk ifade veya komutun işletilmesini sağlar.
İç İçe FOR Döngüleri
İç İçe While Döngüsü
Uygulamalar
Uygulama : Kenar Uzunlukları dışardan girilen bir ABC üçgenini kenarlarına göre inceleyen programın algoritmasını MATLAB’de kodlayınız
A1: Basla
A2: A,B,C değerlerini gir
A3: A=B ise A4’e git değilse A5’e git
A4: B=C ise A6’ya git değilse A8’e git
A5: A=C ise A8’e git değilse A7’e git
A6: ‘Üçgen Eşkenardır’
A7: B=C ise A10’a git, değilse A9’a git
A8: ‘Üçgen İkizkenardır’
A9: ‘Üçgen Çeşitkenardır’
A10: ‘Üçgen İkizkenardır’
A11: Son
Uygulama: Ax2+Bx+C=0 ikinci derece denklemin köklerini hesaplayan aşağıdaki algoritmayı MATLAB’de programlayınız
MATLAB’de Karakter Tipinde Değişken Girişi:
k=input(‘Açıklama: ‘);
Komutu ile k değişkenine sadece sayısal değerler girebiliriz. Bu k değişkeni bir karakter olduğunda ve bu değişkene komut penceresinde bir karakter değer girmek istediğimizde değeri iki tırnak içinde girmek zorundayız. Bu durumdan kurtulmak için MATLAB’de karakter tipindeki değişkenin okutulması için şu yapı kullanılır:
Degisken_adi=input(‘Açıklama: ‘, ‘s’);
↓
Değişkenin karakter tipinde olduğunu gösterir
Örnek: Karakter değerler okuyan ve bir noktaya rastlayınca toplam karakter sayısını veren programı MATLAB’de yazınız.
karakter=input(‘Karakteri giriniz: ‘, ‘s’);
ksayi=0;
while karakter ~= ‘ . ‘
karakter=input(‘Karakteri giriniz:’, ‘s’);
ksayi=ksayi+1;
end
fprintf(‘Toplam karakter sayısı=%g’, ksayi)
PROGRAMLAMADA DİZİ KAVRAMI
Bir değişken içerisinde birden çok veri numaralandırılarak tek bir isim altında saklanmasına DİZİ denir.
Dizi içinde aynı isim altında çok sayıda veri olduğu için bunları birbirinden ayırt etmek için İNDİS adı verilen bir bilgiye ihtiyaç vardır.
Tek boyutlu bir dizinin değerlerinin girilmesi (okutulması)
Aşağıda 1×5 boyutunda (1 satır ve 5 sütun) bir dizinin elemanlarını giren MATLAB programı aşağıda verilmiştir
for i=1:5
fprintf(‘A(%d)=’,i)
A(i)=input(‘ ‘);
end
A
Örnek: N elemanlı bir dizinin N değeri ve elemanları okutulacak (dışardan girilecek) ve bu vektörün normunun karesi (elemanlarının karelerinin toplamı) bulunacaktır
N=input(‘N değerini giriniz=’);
toplam=0;
for i=1:N
fprintf(‘A(%d)=’,i);
A(i)=input(”);
end
for i=1:N
toplam=toplam+A(i)*A(i);
end
fprintf(‘A matrisinin normunun karesi=%f’, toplam)
İKİ BOYUTLU BİR DİZİNİN DEĞERLERİNİN GİRİLMESİ (OKUTULMASI)
Aşağıda 2×3 boyutunda (2 satır ve 3 sütun) bir dizinin elemanlarını giren MATLAB programı aşağıda verilmiştir:
for i=1:2
for j=1:3
fprintf(‘B(%d,%d)=’,i,j)
B(i,j)=input(”);
end
end
B
VEKTÖRLER (DİZİLER) ve MATRİSLER
MATRİSLE, iki boyutlu DİZİLER (VEKTÖRLER) olarak düşünülebilirler:
Böyle dikdörtgen bir tabloya, mxn matrisidir denir. Burada, m sayısına matrisin satır sayısı, n sayısına matrisin sütun sayısı denir. Eğer, m=n ise matris kare matris olarak adlandırılır, ve A matrisi, n. mertebedendir denir.
MATRİSLERLE İŞLEMLER
Matrislerin kendilerine ait bir cebirleri vardır. Özellikle matrislerin aşağıda sıralanan dört işlemleriyle ilgileneceğiz.
- Bir skalerle çarpım
- Matris toplama
- Matris çıkarma
- Matris çarpımı
- Matris transpozu
İleri MATRİS işlemleri için MATLAB hazır fonksiyonları kullanılacaktır
Matrislerle Skaler Çarpım
Herhangi bir matris, bir c skaleriyle çapılabilir. Sonuçta, matris cA,
ÖRNEK: Elemanları dışardan girilen 2×2’lik bir Matrisin 2. sütununu 3 ile çarpıp yeni bir Matris elde eden bir MATLAB programı yazınız
A=[1 3; 4 2];
for i=1:2
for j=2:2
A(i,j)=3*A(i,j);
end
end
A
Matrislerde Toplama ve Çıkarma İşlemi
İki matrisin toplanabilmesi veya çıkarabilmesi için boyutlarını yani satır ve sütün sayısını eşit olmalıdır.
Matrislerde Çarpma İşlemi
A ve B gibi iki matrisin çarpılabilmesi için A matrisinin Sütun sayısının B matrisinin satır sayısının eşit olması gerekmektedir. A matrisi mxn boyutunda, B matrisi nxk olmak üzere Bu çarpma işlemi sonucunda elde edilecek C matrisinin boyutu mxk olacaktır.