Professional Documents
Culture Documents
Matlab Notlar
Matlab Notlar
MATLAB'e Giriş
"Demo" ları çalıştırma
Yardım Alma
Değişken oluşturma
Hesaplama Yapmak
Verileri Görülebilir Hale Getirmek
MATLAB'e Giriş
MATLAB'i MATLAB ikonuna çift tıklayarak yada Windows'un başlat menüsünden çağırarak başlatabilirsiniz.
Ana MATLAB penceresi açılacaktır; aşağıdaki gibi görünür
" " işareti "command prompt"olarak adlandırılır, bu kısma çalıştıracağınız komutları yazarsınız; MATLAB
yazdığınız bu komutu işletip sonucu verecektir. Ve yine sizin komut yazmanızı bekleyecektir, böylelikle siz
MATLAB'a isteiğiniz kadar komutu interaktif olarak girip çalıştırabilirsiniz.
Komut penceresinde demo yazdığınızda açılan pencerede çok değişik demolar bulunmaktadır. İstenilen
demo buradan çalıştırılabilir.
1
Yardım Alma
Giriş
MATLAB kendisine ait komut ve fonksiyonlar hakkında detaylı dökümantasyon ve yardım bilgisini içeren
kapsamlı bir yardım sistemine sahiptir. Bu yardım sistemi MATLAB'e yeni başlayanlar için çok kullanışlı
olduğu gibi, MATLAB'de uzman olduktan sonra bile hala kullanışlıdır çünkü daha önce kullanılmayan
fonksiyonlar bulunabilmektedir. Burada yardım sisteminden nasıl faydalanacağımızı öğreneceğiz.
Aşağıda değişik fonksiyonlar kullanarak date fonksiyonu hakkında yardım alma gösterilmektedir.
help date
DATE Current date as date string. S = DATE returns a string containing the date in
dd-mmm-yyyy format.
Not: Yardım çıktısı aynı zaman ilişkili diğer fonksiyonlara referans vermektedir. Bu örnekte: See also
NOW, CLOCK, DATENUM.
helpwin date
2
Not: helpwin ve help den elde edilen bilgi aynı olmasına rağmen helpwin komutunu kullanmak
help den daha avantajlıdır:
- Yazı ayrı bir pencerede görüntülenir.
- "See also" kısmında gösterilen komutlara tekrar help yazarak bakmaktansa direk üzerine tıklanarak o
komut hakkında yardım alınabilir.
- Default Topics kısayolu size tüm MATLAB fonksiyon katagorilerini listeleyecektir böylece siz belirli
katagori ile alakalı fonksiyonları görebilirsiniz. Örneğin, X ve Y ye bağlı iki boyutlu grafik çizdirmekle
alakalı hangi fonksiyonlar olduğunu öğrenmek için matlab\graph2d konu kısayolunu tıklayabilirsiniz.
doc date
Not: doc komutunun çıktısı en eksizidir. Bilgiyi sadece bölümlere ayırmakla kalmaz, aynı zamanda size
çalıştırılabilecek ve uygulanabilecek tamamlanmış örnekler sunar.
Farklı yardım komutlarını şu fonksiyonlar üzerinde deneyin: magic, fft, and surf.
3
'Help browser'ın iki temel kısmı var bunlar Help Navigator, ve görüntüleme panosu. Görüntüleme
panosu, adından da anlaşıldığı gibi seçilen bilgiyi görüntüler. 'Help Navigator' ise 'help browser'ın sol
kısmındadır ve çevrimiçi yardım bilgilerinde gezinmek için kullanılır.
Search sekmesi sayesinde dökümantasyonda çok verimli bir arama yapabilirsiniz, ve ayrıca aradığınız
anahtar kelimeleri seçilmiş olarak göstermesi sayesinde dökümanı daha rahat okursunuz.
Değişken Oluşturma
Giriş
Değişkenler MATLAB'in temel kavramlarındandır, ve siz onları herzaman kullanacaksınız. Temel olarak,
bir değişken bir değer için sizin isim verebildiğiniz değerin yerini tutan şeydir. Bundan anlatılmak istenen
şey şudur, daha sonra yeni birşeyler hesaplamanız gerektiğinde, yeni hesabın bir parçası olan değerin
yerine onu refere eden değişkeni kullanabilirsiniz. Bu söylediklerimiz örneklerle daha iyi anlaşılacaktır.
En basit kullanım tarzıyla, MATLAB cep hesap makinası gibi kullanılabilir. Örneğin, MATLAB'le hesap
makinasında yaptığımıza benzer hesaplar yapalım.:
4 + 10
ans = 14
5 *10 + 6
4
ans = 56
(6 + 6) / 3
ans = 4
9^2
ans = 81
ans Değişkeni
4 + 5
ans = 9
ans
ans = 9
ans + 10
ans = 19
5
Name Size Bytes Class
a 1x1 8 double array
b 1x1 8 double array
whos
Komuttan sonra noktalı virgül yazarsanız sonucun yazdırılmasını engellemiş olursunuz. Örneğin:
a = 10;
b = 20;
c = 30;
d = 40;
the_average = (a + b + c + d) / 4
the_average =
25
the_average;
b
b =
20
e = 50
e =
50
the_blank_average = (a + b + c + d + e) / 5;
the_blank_average
the_blank_average =
30
Değişkenleri isimlendirmenin bazı özel kuralları vardır, dolayısiyle dikkatli olmanız gerekir.
- Sadece birincil alfabetik karakterleri(A-Z), sayıları, ve alt çizgi karakterini("_") değişken isimlerinde
kullanınız.
- Değişken isimlerinde boşluk kallanılamaz, dolayısiyle, mesela, "this is a variable" şeklinde bir değişken
ismi kullanılamaz, fakat "this_is_a_variable" şeklinde olabilir (genelde, "_" karakterini değişken
isimlerinde kelimeleri birlikte kullanmak için ayıraç olarak kullanabilirsiniz).
- MATLAB harf karakterlerinin durumuna duyarlıdır. Örneğin, "A_VaRIAbLe", "a_variable", "A_VARIABLE",
ve "A_variablE" değişkenleri MATLAB'de aynı değişkenler değildir.
6
Siz aynı zamanda bir parça metinide değişkene atayabilirsiniz. Tek tırnak işaretini (çift tırnak değil --- tek
tırnak ve çift tırnak işaretlerinin MATLAB'de farklı kullanımları vardır.) metinin baş ve sonuna ekleyerek
değişkene atayabilirsiniz. Örneğin:
some_text =
This is some text assigned to a variable!
Metinlerin bu şekilde kullanımlarını çoğunlukla çizimlere etiket koyarken kullanacaksınız(Daha fazla bilgi
için çizimle ilgili derse bakın), fakat eşitlikler içinde metin içerikli değişkenlerle sayı içerikli değişkenleri
karıştırmamalısınız. Eğer bunu yaparsanız, çok ilginç sonuçlar alırsınız. Örneğin, aşağıdaki MATLAB
oturumunda "b" değişkeni bir metin dizgisidir, ve sayı gibi kullanmaya çalıştığınızda ilginç sonuçlar
alırsınız:
a = 5;
b = '5';
a/b
ans =
0.0943
a*b
ans = 265
Hesaplama Yapmak
Giriş
Bu derste, bazı temel matematik kavramlarını tanıyacaksınız, ve onların MATLAB'deki karşılığı olan veri
yapılarını öğreneceksiniz. Bu veri yapıları MATLAB'de nasıl 1) oluşturulur ve olar nasıl 2) indis edilir ve 3)
kullanılır.
Skalar bir sayıya verilen süslü bir isimdir (bir tek değer ).
Vektör dizilmiş skalarar listesidir (bir-boyutlu). MATLAB de bunlar satır-vektörü veya sütun-vektörü
şeklinde gösterilir.
Matris dikdörtgen şeklinde skalarar dizisidir (çok-boyutlu). MATLAB'de, iki boyutlu bir matris satırlarının
ve sütunlarının sayısı ile tanımlanır.
Not: Matrisler ikiden daha fazla boyuta sahip olabilmesine rağmen, biz bu derste sadece iki boyutlu
matrislerle çalışacağız. Daha fazla boyutlu matrislerle çalışmayla ilgili, MATLAB'in yardımını kullabilirsiniz.
7
Aşağıda MATLAB'de skalar ve vektör tanımlama ile ilgili örnekler bulunmaktadır.
my_scalar = 3.1415
my_scalar = 3.1415
my_vector1 = [1, 5, 7]
my_vector1 =
1 5 7
my_vector2 = [1; 5; 7]
my_vector2 = 1
5
7
Dikkat edilirse vektörlerden bir tanesi (my_vector1) satır vektörü, ve diğeri ise satır vektörü olarak
gösterilmiştir (my_vector2).Şimdi siz skalarlar ve vektörler nasıl üretilir biliyorsunuz peki ya iki boyutlu
matrisler? Örneğin, Biz my_matrix isimli ilk satırı 8, 12, ve 19 ,ikinci satırı 7, 3, 2, üçüncü satırı 12, 4,
23, ve dördüncü satırı 8, 1, 1, olan bir matrisi nasıl üretiriz?
my_matrix =
8 12 19
7 3 2
12 4 23
8 1 1
Yukarıdaki kodla birlikte, my_matrix 4 x 3 matris şeklinde tanımlandı (4 satır ve 3 sütun).
Siz ayrıca farklı vektör ve matrisleri birleştirerek farklı matrisler tanımlayabilirsiniz. Fakat unutmayınız ki
dikdörtgen şeklinde tanımlanmalıdır.
row_vector1 = [1 2 3]
row_vector1 =
123
row_vector2 = [3 2 1]
row_vector2 =
321
matrix_from_row_vec =
123
321
column_vector1 = [1;3]
column_vector1 =
1
3
column_vector2 = [2;8]
column_vector1 =
2
8
8
matrix_from_col_vec = [column_vector1 column_vector2]
matrix_from_col_vec =
12
38
my_matrix = [8, 12, 19; 7, 3, 2; 12, 4, 23; 8, 1, 1]
my_matrix =
8 12 19
7 3 2
12 4 23
8 1 1
combined_matrix =
8 12 19 8 12 19
7 3 2 7 3 2
12 4 23 12 4 23
8 1 1 8 1 1
Örneklerden köşeli parantez, satır ayıracı ve sütun ayıracı ile herhangi bir tipte matrisi nasıl
oluşturulduğunu gördünüz.
Çalışacağınız verilerde vektörler olabilir. Örneğin günün her saati için sıcaklık değerleri verilebilir (24
elemanlı bir vektör), be bu veriyi zamana karşı çizdirmeniz gerekiyor. Fakat zaman verisini nasıl
üreteceksiniz? Elle üretebilirsiniz,
time = [0, 100, 200, 300, 400, ..., 1900, 2000, 2100, 2200, 2300];
veya sütun operatörü kullanabilirsiniz. Sütun operatörüyle düzenli artış oranına sahip bir vektör
üretebilirsiniz:
baslangıc_degeri:artıs_miktari:son_deger
Bu durumda,
time = 0:100:2300
Artış değeri yerine azalmada tanımlayabilirsiniz. Aşağıdaki kod 2300 ten başlayıp sıfıra kadar 100'er
azalan bir vektör üretir
time_dec = 2300:-100:0
Not: Dış kaynaktan veri almak istiyorsanız MATLAB Help Browser da "import data" diye aratıp bilgi
alabilirsiniz.
Matriste İndisleme
Diyelim ki bir vektör veya matris ürettiniz, ürettiğiniz verilerin bir alt kümesi olacak verileri bunlardan
elde etmek istiyorsunuz işte bu işlemi indisleme ile yapabilirsiniz.
my_vector1 ve my_vector2 örneklerine bakalım ve vektörün değerlerini nasıl indisleriz ona bakalım.
my_vector1 = [1 5 7]
my_vector1 =
157
my_vector2 = [1; 5; 7]
my_vector2 =
1
9
5
7
my_vector1(1)
ans = 1
my_vector2(2)
ans = 5
my_vector1(3)
ans = 7
my_vector2(1)
ans = 1
my_vector2(2)
ans = 5
my_vector2(3)
ans = 7
Tİşlem iki boyutlu matrisler içinde çok benzerdir. Tek fark tek indis kullanmak yerine satır ve sütun için
indisler kullanmak.
my_matrix =
8 12 19
7 3 2
12 4 23
8 1 1
4 değerine ulaşmak için şöyle yazmalısınız
my_matrix(3,2)
ans = 4
Not: İlk olarak satır numarası, ve onu takiben sütun numarası yazılır.
Satır ve sütun menzillerini girerek matrisin içinden alt kümesi olacak şekilde yeni bir matris elde
edebilirsiniz. Örneğin, mat 5 satır ve 8 sütuna sahip bir matris olsun, mat(2:4,4:7) yazarak satırı 2
den 4'e kadar ve sütunu 4 den 7'ye kadar olan elemanları elde edersiniz:
new_mat = mat(2:4,4:7)
new_mat
10
new_mat(2,3) = 1999
Herşeyden önce, eleman nedir onu tarif edelim: matrisin bir elemanı basit olarak matris içinde tutulan bir
sayıdır.
Örneğin, "On elemanlı bir satır vektörü" denildiğinde anlamanız gereken şey satır vektöründe on tane
sayı tutuluyor.
Eleman elemana işlemlere birkaç örnek verelim (satır vektörü ile sütun vektörü arasında eleman elemana
işlem yapmaya çalıştığınızda hata vereceğini unutmayın):
a =1 2 3
b
b =4 5 6
c
c =4
5
6
d
d =1
2
3
a .* b
ans = 4 10 18
a .* c
11
ans = 4
10
18
a .^ b
ans = 1 32 729
c .^ d
ans = 4
25
216
Eleman elemana işlemleri skalarlar ile vektörler arasında da kullanabilirsiniz. Örneğin, bir vektörün tüm
elemanlarını iki ile çarpmak istiyorsunuz; bunu vektörle 2 sayısını eleman elemana çarparsak
gerçekleştirebiliriz.
a = [1 2 3 4 5 6]
a =1 2 3 4 5 6
b = a .* 2
b = 2 4 6 8 10 12
Ve, benzer şekilde ".^", "+", and "-" işlemlerini de bir vektör ile skalar arasında kullanabilirsiniz. Birkaç
örnek görelim:
c = a .^ 2
c = 1 4 9 16 25 36
d = a + 2
d =3 4 5 6 7 8
e = a - 2
e = -1 0 1 2 3 4
Eleman elemana çarpım ve üs alma işlemlerinin önünde "." bulunurken, Eleman elemana toplama ve
çıkarma işlemlerinde neden bulunmadığına hayret etmiş olabilirsiniz. Sebebi şudur çarpma bölme ve üs
alma işlemlerinin eleman elemana olmayan matrisler için olan "*" , "/"and "^" şeklinde gösterilen çeşidi
var.
Bu bizi diğer çeşit işlemlere getirir : matris işlemleri. Örneğin, iki matrisin çarpımı, "*" ile gösterilir.
a = [1 2 3]
a =1 2 3
b = [4 ; 5 ; 6]
b =4
5
6
a * b
ans = 32
"32" sonucunu almak için, MATLAB ilk önce iki vektörün karşılıklı elemanları arasında şu işlemleri yapar:
"1*4 = 4", "2*5=10", and "3*6=18". Sonra, son cevab olan "32" yi almak için, MATLAB tüm çarpım
sonuçlarını aralarında toplar: "4+10+18=32".
12
Şimdi bütün bu kavramları kullanabileceğimiz bir örneği inceleyelim. Diyelim ki sizden "x" in aralığı -
100'den 100'e olacak şekilde parabol denkleminin (y=x^2) sonucunu bulmanız istenildi. Hesapladıktan
sonra x'in-2 ile 2 aralığındaki denklemin sonucuna bakalım.
x = -100:inc:100;
Not: Yukarıdaki örnek MATLAB'in etkili özelliklerinden birisidir, vektörizasyon: eşitliğin girişinde vektör
kullandığınızda, çıkışta giriş vektörünün herbir elemanının denklemde hesaplanmış değerlerine sahip
başka bir vektör elde edersiniz.
Şimdi, -2 ve 2 arasındaki denklem sonucuna bakalım. Bunu yapmak için, "x"in uzunluğunu bilmemiz
gerekli, ve "x" ve "y"yi doğru noktalarda indislememiz gerekli.
len_x = length(x)
len_x = 201
midpoint_index = round(len_x/2)
midpoint_index = 101
new_x_range = x(midpoint_index-2:midpoint_index+2)
new_x_range = -2 -1 0 1 2
new_y_range = y(midpoint_index-2:midpoint_index+2)
new_y_range = 4 1 0 1 4
input_points =
Columns 1 through 7
-3.1416 -2.7489 -2.3562 -1.9635 -1.5708 -1.1781 -0.7854
Columns 8 through 14
-0.3927 0 0.3927 0.7854 1.1781 1.5708 1.9635
Columns 15 through 17
2.3562 2.7489 3.1416
sine_curve = 3*sin(5.*input_points)
sine_curve =
Columns 1 through 7
0.0000 -2.7716 2.1213 1.1481 -3.0000 1.1481 2.1213
Columns 8 through 14
-2.7716 0 2.7716 -2.1213 -1.1481 3.0000 -1.1481
Columns 15 through 17
-2.1213 2.7716 0.0000
13
Verileri Görülebilir Hale Getirmek
Giriş
Önceki derste vektörlerin nasıl oluşturulacağını ve bir fonksiyonun girişine bu vektörü verip başka bir
vektör elde edebildiğimizi gördük. Bu derste ise, böyle vektörleri kullanarak iki-boyutlu, üç-boyutlu basit
çizimlerin nasıl yapılacağını öğreneceksiniz. MATLAB ileri çizim özelliklerine sahiptir, çok değişik türde
grafikler ve çizimler yapabilirsiniz. Bu ders çizimin temel yönlerini kapsamaktadır, daha detaylı bilgiyi
MATLAB yardım metinlerini okuyarak elde edebilirsiniz.
Bir örnek üzerinde plot komutunun tam olarak ne yaptığını inceleyelim. Şimdi MATLAB'de iki basit
vektör oluşturalım:
simple_x_points = [1 2 3 4 5]
simple_x_points = 1 2 3 4 5
simple_y_points = [25 0 20 5 15]
simple_y_points = 25 0 20 5 15
Sonra, bu vektörleri MATLAB'de çizmek için aşağıdakileri komut ekranında yazalım:
plot(simple_x_points, simple_y_points);
MATLAB'de doğru çizimlerini içeren bir şekil penceresi belirecektir; aşağıdaki gibi görünür.
Gördüğünüz gibi, (1,25), (2,0), (3,20), (4,5), ve (5,15) noktalarını çizdi, noktalar simple_x_points
ve simple_y_points vektörlerinden elde edildi ve bu noktalar arasına doğrular çizildi.
plot(simple_y_points, simple_x_points);
MATLAB'de şöyle bir şekil belirecektir.
14
Not: Bu doğru çiziminin yazıcı çıktısını şekil penceresinin üstündeki File->Print menüsünü kullanarak
kolayca alabilirsiniz.
Temel doğru çiziminin yanında, MATLAB'in şekillerinize başlık ve etiket ekleyebileceğiniz komutları
vardır. Bir çizime metin eklemek için şekili açık tutmalısınız.
xlabel komutu x-eksenini tanıtan bir metin yazmanıza imkan tanır; benzer şekilde, ylabel komutu
y-eksenini tanıtan bir metin yazmanıza imkan tanır. Ve title komutuda şekile başlık eklemenize
imkan verir. Çiziminize ızgara çizgilerini eklemek için "grid on" komutunu komut penceresinde
yazabilirsiniz, açık olan şekil penceresine ızgara çizgileri eklenir ("grid off" yazarak bu çizgileri
kaldırabilirsiniz). Bu komutları nasıl kullanacağınızı gösteren örnekler:
15
Çizimle ilgili daha pratik bir örneğe bakalım . "y = x^2" (bir parabol) fonksiyonunu x'in -5 ile 5
noktaları arasında 0.1 düzgün aralıklı değerleri için çizdirelim:
plot(x_points,y_points);
xlabel('x-axis'); ylabel('y-axis'); title('A Parabola');
grid on
Not: Sonuç çok düzgün: gerçektende önceki örnekte olduğu gibi ayrık doğru parçalarını
göremiyorsunuz. Bunun sebebi noktaların birbirlerine çok yakın olmasından kaynaklanıyor (0.1 düzgün
aralıklı) --- MATLAB hala noktalar arasında doğrular çizmektedir, fakat çizgiler çok küçük olduğundan
gözünüz fark edemiyor, böylece sonuç pürüzsüz bir eğri gibi görünüyor.
İsteyeceğiniz farklı bir şeyde bir şekil üzerine çok çizimler yapabilmektir, örneğin şekilleri karşılaştırmak
için gerekebilir. Bu hold komutu ile yapılabilir. Normalde, plot komutunu kullandığınızda, önceden
çizdirilmiş bir şekil varsa onu siler yeni şekli çizer. Ancak, komut penceresinde "hold on" yazarsanız,
sonraki bütün doğru çizimleri aynı şekil ve aynı eksen özellikleriyle üst üste çizilir. Keza "hold off"
komutu ise bu davranış biçimini durdurur, ve varsayılana geri döner ( yeni çizim öncekiyle değişir).Aynı
eksene birkaç değişik üssel fonksiyon çizimini bir örnek üzerinde görelim:
16
Aynı pencereye çoklu çizim yapmanın bir türüde aynı pencereyi bölmelere ayırıp her çizimi kendi eksen
özellikleriyle çizdirmektir. Bunu subplot komutuyla yapabilirsiniz. Eğer komut penceresinde
subplot(M,N,P) yazarsanız, MATLAB çizim penceresini dikdörtgenlere böler --- Dikdörtgenlerden M
tane satır ve N tane sütun olur --- ve MATLAB sonraki "plot" komutunu P'nci dikdörtgene yerleştirir
(Birinci dikdörtgen sol üst köşededir).Aşağıda doğru çizimi, parabol, üssel fonksiyon ve mutlak değer
fonksiyon çizimi aynı şekil penceresine farklı dikdörtgenlere çizdirilecek.
17
subplot(2,2,4);plot(x_points,absolute_value);
title('Here is the absolute value');
18