Upload
others
View
11
Download
0
Embed Size (px)
Citation preview
Dr. Gökçe BAYSAL TÜRKÖLMEZ
1
Matlab
1) Temel İşlemler
Vektörler ve Matrisler
Satır Vektörü: birkaç farklı yoldan satır vektörü oluşturulabilir.
>> sv=[1 2 3 4 5]
sv =
1 2 3 4 5
>> sv=[1,2,3,4,5]
sv =
1 2 3 4 5
1’den 6’ya kadar satır vektörü
>> sv=1:6
sv =
1 2 3 4 5 6
1’den 15’e kadar 3’erli aralıkla oluşturulan satır vektörü
>> nv=1:3:15
nv =
1 4 7 10 13
Linspace fonksiyonu: Doğrusal aralıklı vektör oluşturur; linspace(x,y,n), x’ten y’ye aralık içeren n
değerli bir vektör oluşturur.
ls=linspace(3,15,5)
ls =
3 6 9 12 15
Dr. Gökçe BAYSAL TÜRKÖLMEZ
2
İki vekötrü birleştirip yeni bir vektör oluşturmak
>> yenivektor=[nv ls]
yenivektor =
1 4 7 10 13 3 6 9 12 15
Yeni vektörün 5. Elemanı=13
>> yenivektor(5)
ans =
13
Yeni vektörün 4. Elemanından 6. Elemanına kadar olan elemanları
>> b=yenivektor(4:6)
b =
10 13 3
Yeni vektörün 1., 5. ve 10. Elemanları
>> yenivektor([1 5 10])
ans =
1 13 15
Yukarıdaki ifadede b değişkenine atanan yenivektor(4:6) ifadesinde 2. Elemanı 11 ile değiştirir.
>> b(2)=11
b =
10 11 3
Satır vektörüne yeni bir değer eklemek için;
>> yv=[5 65 18]
yv =
5 65 18
Dr. Gökçe BAYSAL TÜRKÖLMEZ
3
>> yv(4)=7
yv =
5 65 18 7
>> yv(7)=8
yv =
5 65 18 7 0 0 8
Sütun vektörü:
>> c=[1;6;7;9]
c =
1
6
7
9
Transpoz:
>> s=1:3;
>> c=s'
c =
1
2
3
Matris Değişkeni:
>> mat=[5 8 7;6 9 2]
mat =
5 8 7
6 9 2
>> mat=[1:3; 7:9]
mat =
1 2 3
7 8 9
Dr. Gökçe BAYSAL TÜRKÖLMEZ
4
2x2 boyutlu (0,1) uniform dağılışlı rastgele sayı türeterek matris oluşturmak için;
>> rand(2)
ans =
0.8147 0.1270
0.9058 0.9134
Not: randn komutu Normal dağılışlı rassal sayı türetir.
Sembolik Hesaplamalar
‘syms’ değişkenleri sembolik olarak ifade etmeye yarar. ‘expand’ komutu ifadeyi açar, ‘factor’
çarpanlarına ayırır, ‘simplify’ sadeleştirir.
>> syms x y
>> (x - y) * (x – y) ^2
ans =
(x – y) ^3
>> expand (ans)
ans =
x^3 – 3 *x^2*y + 3*x*y^2 – y^3
>> factor (ans)
ans =
(x – y)^3
>> simplify ((x^3 – y^3) / (x-y))
ans =
x^2 + x*y + y^2
Dr. Gökçe BAYSAL TÜRKÖLMEZ
5
Sembolik İfadeler
subs(t, a, 2) komutu t ifadesinde 2 değişkeninin yerine 2 değerini koyacaktır. Örneğin:
>> syms a b
>> t = a^2 – b^2
t =
a^2 – b^2
>> subs (t, a, 2)
ans =
4 – b^2
>>d=1;
>> subs (t, b, d)
ans =
u^2-1
>> subs (t, b, a + b)
ans =
a^2 – (a+b)^2
Dr. Gökçe BAYSAL TÜRKÖLMEZ
6
2) Matlab’da Programlamaya Giriş
Giriş ve Sonuç Komutları:
MATLAB’de programlama genel olarak iki yolla yapılır:
Komut satırında (inline) programlama
m-dosyaları ile (m-files) programlama
Düzyazı (script) m-dosyaları ile programlama
Fonksiyon (function) m-dosyaları ile programlama
m-dosyaları oluşturabilmek için ise bir metin düzenleyicisine (editor) ihtiyaç vardır.
Editör penceresi (.m dosyaları)
Örnek 2.1
Dr. Gökçe BAYSAL TÜRKÖLMEZ
7
Giriş Komutları (input)
Veri Girmek için ‘input’ fonksiyonu:
Command Window’da:
>> sayi=input('Lütfen bir sayı yazınız=')
Lütfen bir sayı yazınız=52
sayi =
52
>> bolum=input('Lütfen bölümünüzün adını yazınız=','s')
Lütfen bölümünüzün adını yazınız=Ekonometri
bolum =
'Ekonometri'
Editör penceresinde:
Örnek 2.2
Dr. Gökçe BAYSAL TÜRKÖLMEZ
8
Çıktıyı göstermek için kullanılan komutlar: ‘disp’ (display) ve ‘fprintf’
>> disp('Merhaba')
Merhaba
>> disp(4^3)
64
MATLAB’in num2str fonksiyonu kendisine parametre olarak aldığı bir sayıyı bir karakter dizisine
(string) çevirir. (22 sayısı '22' olur.)
Çıktıyı belirli bir formatta ekranda yazdırmak için fprintf komutu kullanılır
fprintf('Ekrana Basilacak Aciklama %X \n', deger);
Burada %X Kısmında Kullanabileceğimiz Seçenekler :
%c : deger in tek bir karakter olduğunu gösterir.
%s : deger in bir karakter dizisi (string) olduğunu gösterir.
%d : deger in bir tamsayı olduğunu gösterir.
%f : deger in bir ondalıklı sayı olduğunu gösterir.
%g : deger i mümkün olan en kompakt forma sokar.
\n : İmleci bir alt satırın başına götürür. (n, newline)
\t : İmleci bir TAB kadar sağa kaydırır.
Örnek 2.3:
>> fprintf('Sonuç %d',4^3)
Sonuç 64>>
>> fprintf('Sonuç %d, \n',4^3)
Sonuç 64,
>> fprintf('Sonuç %f, \n',4^3)
Sonuç 64.000000,
Dr. Gökçe BAYSAL TÜRKÖLMEZ
9
disp komutu ekrana çıktı verdikten sonra bir alt satıra otomatik olarak atlar. fprintf komutunu bir alt
satıra götürebilmek için ise \n kullanılmalıdır.
Ayrıca disp komutu satır veya sütun vektörleri ile matrisleri ekrana kolayca yazdırabilirken aynı işlemi
fprintf ile yapabilmek daha çok işlem gerektirmektedir.
Editör penceresinde:
Örnek 2.4
Dr. Gökçe BAYSAL TÜRKÖLMEZ
11
3) İlişkisel ve Mantıksal Operatörler, If ve Switch Komutları
İlişkisel Operatörler
İlişkisel operatörler sonuç olarak 1 (BİR) (true) veya 0 (SIFIR) (false) değerlerini üretirler.
Mantıksal Operatörler Mantıksal operatörler de ilişkisel operatörler gibi sonuç olarak 1 (BİR) (true) veya 0 (SIFIR) (false) değerlerini üretirler.
Mantıksal Matlab Operatörleri
İşlevleri
x&&y Ve (and)
x || y Veya (or)
~x Değil (not)
If Komutu: if koşul
eylem
end
== Eşit
~ = Eşit değil
> Büyük
>= Büyük veya eşit
< Küçük
<= Küçük veya eşit
Dr. Gökçe BAYSAL TÜRKÖLMEZ
12
Örnek 3.1: Yazılan bir sayı eğer sıfırdan küçükse mutlak değerini alan bir program yazınız
Örnek 3.2: Yazılan bir sayının karekökünü alsın, sayı sıfırdan küçükse önce mutlak değerini alsın
Dr. Gökçe BAYSAL TÜRKÖLMEZ
14
Örnek 3.4: If-else komutu (iç içe if else)
𝑦 = 𝑓(𝑥) fonksiyonu tanımlanmış
𝑦 = 𝑓(𝑥) = {
1
𝑥 𝑥 < −1
𝑥2 − 1 ≤ 𝑥 ≤ 2𝑥3 𝑥 > 2
1.Yol:
2. Yol: elseif
Dr. Gökçe BAYSAL TÜRKÖLMEZ
15
3. Yol: Fonksiyon çağırma
Editor penceresine fonksiyon yazılır. Editor penceresindeki program fonksiyonun adıyla
kaydedilmelidir. Örnekte fonksiyonun adı dongu1, dosyanın adı da dongu1.m olmak zorundadır.
Command Window penceresinde değişkenin değeri ve fonksiyonun adı aşağıdaki gibi yazılarak sonuç
hesaplatılır.
Switch Şartlı Deyimi:
ayNo = input('Bir Ay Numarasi Giriniz (1-12)= ');
switch ayNo
case {1,3,5,7,8,10,12}
disp('Bu Ay 31 Gunden Olusur.');
case 2
disp('Bu Ay 28 Gunden Olusur.');
case {4,6,9,11}
disp('Bu Ay 30 Gunden Olusur.');
otherwise
disp('Yanlis Bir Ay Numarasi Girdiniz.');
end
Uygulama 3.1
Klavyeden girilen iki sayının oranını bulan ve fprintf komutuyla ekrana yazdıran bir Matlab programı
yazınız. Payda=0 girildiğinde “disp” komutuyla “Üzgünüm! Sıfıra bölüm hatası var” mesajı yazdırsın.
Dr. Gökçe BAYSAL TÜRKÖLMEZ
16
4) Döngüler
For Döngüsü:
for döngü değişkeni=başlangıç:artış miktarı:bitiş
komutlar
end
Sadece başlangıç ve bitiş yazılırsa artış miktarı 1 olur. Döngü değişkeni sayaç olarak isimlendirilir. for döngü değişkeni=başlangıç:bitiş
komutlar
end
Örnek 4.1: Klavyeden girilen bir sayı ile 1 sayısı arasındaki sayıların toplamını veren bir Matlab programı yazınız.
Not: Hangi fprintf komutunun çalıştırıldığına dikkat edin.
Dr. Gökçe BAYSAL TÜRKÖLMEZ
17
While Döngüsü
while koşul
işlem 1
işlem 2
işlem 3
işlem n
end
Bu döngüde koşul sonucu sıfır veya bir olan bir karşılaştırma testi, mantıksal sınama veya eşitlik testi olabilir.
Örnek 4.2: For döngüsündeki örneğin while döngüsü ile çözümü
Dr. Gökçe BAYSAL TÜRKÖLMEZ
18
Uygulamalar
1) Ekranda adınızı ve soyadınızı 5 kez yazan bir Matlab programını for ve while döngüleriyle oluşturunuz. 2) Klavyeden girilen bir sayı ile 1 sayısı arasındaki sayıların çarpımını alan bir Matlab programını while ve
for döngüleriyle oluşturunuz. 3) Çarpım tablosunu hesaplayıp ekrana yazan bir Matlab programı yazınız.