1/13/2013
MATLAB Ek Ders 1:
Temel işlemler, vektörler, matrisler, basit grafikler ve dosyalar
Kitabımız: MATLAB ile Uygulamaları (Ahmet Altıntaş)
Yrd. Doç. Dr. Sevgi Zübeyde GÜRBÜZ
Yrd. Doç. Dr. İsrafil BAHÇECİ
ELE 371 ve ELE 375
Bahar 2013
MATLAB Çalıştırma Sayfası
2
Çalıştırma sayfası (command window)
Çalıştırmak istediğin MATLAB kodu burada yazılır
Komut tarihçesi penceresi
Daha önce çalıştırılan kod burada gösterilmektedir
Workspace
Tanımlanan değişkenlerin
listesi
Current directory
Dosyanın içinde
bulunduğu folder
1
1/13/2013
MATLAB = Matrix Laboratory
3
Bütün işlemler sayılar, vektörler ve matrisler
üzerinde yapılmaktadır.
Temel aritmetik işlemler:
Toplama: +
Çıkartma: Çarpma: *
Bölme: /
Bir sayının üssü: ^
(ör.: 2 ^ 2 = 4)
İşlem sırası soldan sağa
Öncelik paranzetli ifadeler
Sonra üslü ifadeler, bölme / çarpma, ve toplama /
çıkartma
Aritmetik İşlem Örneği
4
Örnek 1
>> 1 + 2 – 3 * 4 / 5 ^ 6
ans =
2.9992
5^6 = 15625
4 / 5^6 = 2.5600e-004
3 * 4 / 5^6 = 7.6800e-004
Örnek 2: Parantez ile önceliği belirtebiliriz
>> 1 +( ((2 – 3) * 4) / 5 )^ 6
ans =
1.2621
2
1/13/2013
“...” notasyonu
5
Eğer hesaplamak istediğimiz işlem çok uzun
olupta çalıştırma sayfasının tek satırına
sığmıyorsa, “…” notasyonu kullanarak hesabımızı
bir sonraki satırda devam edebiliriz.
Örnek:
>> 1 + 2 – 3 * 4 / 5 ^ 6 /2 + 4 – 10 / 43 ^2 / 4 ...
*8–7+3
ans =
2.9888
ans
6
Eğer kendin isim tanımlamazsan, evvel örnekte
olduğu gibi, cevabın “ans” değişkeni olarak
kaydedilmektedir.
“ans” olarak kaydedilen bir değeri “ans” olarak
tekrar kullanılabilir:
>> 1 + 3 * 5
ans =
16
>> ans / 4
ans =
4
3
1/13/2013
Sabit ve değişkenlerin isimlendirilmesi
7
Değişken isimlerini istediğimiz gibi koyabiliriz, bir
kaç kural çerçevesinde:
En az bir karakterden oluşmak zorundadır
İlk karakter mutlaka bir harf olmalı (sayı ile
başlayamaz)
Türkçe karakterler kullanılamaz
Maksimüm karakter sayısı 31
Zaten tanınmış olan bir fonksiyon ismi olamaz
MATLAB büyük ve küçük harf kullanımına
duyarlıdır
İsimlendirme örneği
8
>> x = 5
x=
5
>> y = 3
y=
3
>> f = x + y
f=
8
4
1/13/2013
“;” Notasyonu
9
Eğer işlem komutumuzun sonunda “;” koyarsak,
işlemimizin sonucu çalıştırma sayfasında
gösterilmemektedir. Sonucumuz çok büyük
matrislerden oluşuyorsa özellikle bu notasyonu
kullanmakta fayda vardır.
Örnek:
>> x = 1 + 3 * 5;
>>
“%” Notasyonu
10
Bazen işlem ile ilgili yanına not düşmeyi
isteyebiliz. Aynı satırda, işlem tamamlandıktan
sonra “%” karakteri koyarsak, “%”dan sonra
yazılan hiç birşey dikkate alınmamaktadır.
Örnek:
>> x = 1 + 2
x=
3
% Hadi hesapla: y = 1
5
1/13/2013
Çalışma Sayfası Genel Komutları
11
help: Display help text in Command Window.
help fonk_ismi: “fonk_ismi” fonksiyonu hakkinda
ilgili tum bilgileri vermektedir
lookfor: Search all M-files for keyword.
demo: Access product demos via Help browser.
intro: temel matris işlemlerini gösten demo
who, whos: mevcut değişkenlerin listesi
clear: bütün değişkenleri hafizadan siler
clear x y: x ve y değişkenleri hafizadan siler
clc: çalışma sayfasını temizler
home: moves cursor to top left corner of screen
Genel Komutlara Devam
12
save: çalışma sayfası değişkenlerini matlab.mat
olarak kaydetme
save isim: çalışma sayfası değişkenlerini
isim.mat olarak kaydetme
save isim x y: x ve y değişkenleri isim.mat
dosyasına kaydetme
load isim: çalışma sayfasına isim.mat
değişkenleri yükleme
edit: program yazmak için editörü açma
quit, exit: program sonlandırma
6
1/13/2013
Vektörlerin Tanımlanması
13
Sıra vektörün tanımlanması
>> v = [1 2 3 4]
v=
1 2 3 4
Sütün vektörün tanımlanması
>> v = [1 ; 2 ; 3]
v=
1
2
3
Vektör Tanımlamaya Devam
14
İndislerle elemanlara ulaşabilme:
>> v = [1 2 3 4];
>> v(3)
ans =
3
İndis yoluyla tanımlanan vektörlerde belirtilmeyen
indislerdeki değerler sıfır kabul edilir:
>> v(1)=2; v(3)=5;
>> v
v=
2 0 5
7
1/13/2013
Özel Vektör Tanımlama Fonksiyonları
15
Dizilerin oluşturulması
>> x = 1:5
x=
1 2 3 4 5
>> x = [1:5]
x=
1 2 3 4 5
>> x = [0.1:0.1:0.5]
x=
0.1000 0.2000 0.3000 0.4000 0.5000
Dizinlerle Vektör Değerlerine Ulaşabilme
16
>> v = [1 2 3 4 5 6 7 8 9]
v=
1 2 3 4 5 6
% ornek tanimlayalim
7
>> v(4:6)=0
v=
1 2 3
7
8
9
% Ogelerin 4-6 arasini sifir yapalim
0
0
0
8
9
>> v(4:6)=[11 22 33]
% Ogeleri farkli tanimlayalim
v=
1 2 3 11 22 33 7 8 9
8
1/13/2013
Örneğe Devam
17
>> v(6:end)=1
v=
1 2 3 11 22
>> v(6:end)=[]
v=
1 2 3 11 22
% end notasyonu
1
1
1
1
% kare parantez ile silme
Özel Fonksiyonlara Devam
18
linspace: lineer aralıklı vektör
linspace(X1, X2, N) generates N points between X1 and X2
>> linspace(1,5,5)
ans =
1 2 3 4 5
logspace: logaritmik aralıklı vektör
logspace(X1, X2, N) generates a row vector of N logarithmically
equally spaced points between 10^X1 and 10^X2.
>> logspace(1,2,5)
ans =
10.0000 17.7828 31.6228 56.2341 100.0000
9
1/13/2013
length
19
length: vektörün uzunluğu (öge sayısı)
>> v
v=
1
2
3 11 22
>> length(v)
ans =
5
Matrislerin Tanımlanması
20
Örnek 1
>> M=[1 2 3
456
7 8 9]
M=
1 2 3
4 5 6
7 8 9
• Örnek 2
>> M=[1 2 3; 4 5 6 ; 7 8 9]
M=
1
4
7
2
5
8
3
6
9
10
1/13/2013
Matris İndisleri
21
>> M = [1 2 3; 4 5 6; 7 8 9];
>> M(2,2)
ans =
5
% Oge (2,2)’yi gösterme
>> M(2,2)=50
M=
1 2 3
4 50 6
7 8 9
% Oge (2,2)’ye değer atama
Matris İndisleri (2)
22
>> M(3,:)=[-1 -2 -3]
M=
1 2 3
4 50 6
-1 -2 -3
% 3. sıraya değer atama
>> M(:,1)=[8 18 28]
M=
8 2 3
18 50 6
28 -2 -3
% 1. sütüne değer atama
11
1/13/2013
Matris İndisleri (3)
23
>> M(2,2:3)=0
M=
8 2 3
18 0 0
28 -2 -3
% Sadece belirli ögeleri değiştirme
>> M(3,2:end)=100
M=
8 2 3
18 0 0
28 100 100
% end notasyonu
Matris Biriktirilmesi
24
Matrislerden daha büyük matrisler oluşturma
>> A=[1 2 3; 4 5 6]; B=[-4 -5 -6]; C=[-3 ; -6];
>> [A ; B]
ans =
1 2 3
4 5 6
-4 -5 -6
% B’yi A’nın sıralarına ekleme
12
1/13/2013
Matris Biriktirmesi (2)
25
>> [A, C]
ans =
1 2 3 -3
4 5 6 -6
% C’yi A’nın sütünlerine ekleme
>> [A 2*C]
ans =
1 2 3 -6
4 5 6 -12
% virgülsüz notasyon, işlemiyle
Matrisler için length
26
Matrislere length komutu uygulandığında sütün
sayısını vermektedir
>> M = [1 2 3; 4 5 6]
M=
1 2 3
4 5 6
>> length(M)
ans =
3
13
1/13/2013
size
27
size: matrisin sıra ve sütün sayılarını vermektedir
>> size(M)
ans =
2 3
>> [row col]=size(M)
row =
2
col =
3
Özel Matrisler
28
zeros(n): tüm ögeleri sıfır olan bir n x n matris
zeros(n,m): tüm ögeleri sıfır olan bir n x m matris
ones(n): tüm ögeleri bir(1) olan bir n x n matris
ones(n,m): tüm ögeleri bir(1) olan bir n x m matris
eye(n): n x n boyutunda birim matris
eye(n,m): n x m boyutunda birim matris
>> eye(2,3)
ans =
1 0 0
0 1 0
14
1/13/2013
Özel Matrislere Devam
29
diag(v): ana köşesinde v vektör değerlerine
sahip matris
>> v = [1 2 3];
>> diag(v)
ans =
1 0 0
0 2 0
0 0 3
Özel Matrislere Hala Devam
30
diag(v,k): k. köşegende v vektör değerlerine
sahip matris
k = 0 is the main diagonal, k > 0 is above the main
diagonal and k < 0 is below the main diagonal.
>> diag(v,1)
ans =
0 1 0
0 0 2
0 0 0
0 0 0
0
0
3
0
>> diag(v,-1)
ans =
0 0 0
1 0 0
0 2 0
0 0 3
0
0
0
0
15
1/13/2013
transpose
31
transpose(M): non-conjugate transpose
kısa notasyonu, nokta-tırnak:
>> M=j*[1 2; 3 4; 5 6]
M=
0 + 1.0000i
0 + 2.0000i
0 + 3.0000i
0 + 4.0000i
0 + 5.0000i
0 + 6.0000i
.’
>> transpose(M)
ans =
0 + 1.0000i
0 + 2.0000i
0 + 3.0000i
0 + 4.0000i
0 + 5.0000i
0 + 6.0000i
>> M.'
ans =
0 + 1.0000i
0 + 2.0000i
0 + 3.0000i
0 + 4.0000i
0 + 5.0000i
0 + 6.0000i
conjugate transpose
32
Sadece tırnak:
>> M'
ans =
0 - 1.0000i
0 - 2.0000i
‘
0 - 3.0000i
0 - 4.0000i
0 - 5.0000i
0 - 6.0000i
16
1/13/2013
elmat
33
MATLAB’da bulunan özel matrisleri oluşturma
komutları ve matris hesaplarında kullanılabilecek
önceden tanımlı fonksiyonların listesi:
help elmat
Elementary matrices and matrix manipulation.
Trigonometrik Fonksiyonları
34
Sinüs
Kosinüs
Tanjant
Kotanjant
Sekant
Kosekant
Fonksiyon
sin()
cos()
tan()
cot()
sec()
csc()
Hiperbolik
Fonksiyon
sinh()
cosh()
tanh()
coth()
sech()
csch()
Ters
Fonksiyon
asin()
acos()
atan()
acot()
asec()
acsc()
Ters
Hiperbolik
Fonksiyon
asinh()
acosh()
atanh()
acoth()
asech()
acsch()
17
1/13/2013
Trigonometrik Fonksiyonlara Devam
35
MATLAB açıları radyan cinsi olarak kabul etmektedir.
pi standart sayı olarak önceden tanımlanmaktadır.
>> sin(pi/2)
ans =
1
>> sin(90*pi/180)
ans =
1
% Dereceden radyana çevirme
Üstel Fonksiyonları, vb.
36
exp: e tabanında üstel fonksiyonu (e=2.7183...)
log: e tabanında doğal logaritma
log10: 10 tabanında logaritma
log2: 2 tabanında logaritma
Başka fonksiyonlar:
sqrt: karekök hesaplama
pow2: 2’nin kuvvetini alma
MATLAB fonksiyon listesi:
help elfun: elementary math functions list
18
1/13/2013
Karmaşık Sayıları ve Fonksiyonları
37
i ve j standart olarak sqrt(-1) olarak tanımlıdır,
eğer siz farklı bir şey olarak değer vermezseniz:
>> i
ans =
0 + 1.0000i
>> j
ans =
0 + 1.0000i
>> i=[1:5];
>> i
i=
1 2 3 4
5
Karmaşık Sayı Tanımlama
38
Örnek 1:
>> x=[1+j 5-6*j complex(2,-3)]
x=
1.0000 + 1.0000i 5.0000 - 6.0000i 2.0000 - 3.0000i
Örnek 2:
>> k=sqrt(-1)
k=
0 + 1.0000i
>> 1+k
ans =
1.0000 + 1.0000i
19
1/13/2013
Karmaşık Sayı İşlemleri
39
>> a=1+j; b=1-j;
>> a + b % toplama
ans =
2
>> a – b % çıkartma
ans =
0 + 2.0000i
>> a*b % çarpma
ans =
2
>> a/b % bölme
ans =
0 + 1.0000i
Genlik ve Açı Hesaplamaları
40
Genlik
Opsiyon 1
>> r = abs(a)
r=
1.4142
Opsiyon 2
>> r = sqrt(real(a)^2 + imag(a)^2)
r=
1.4142
Açı
Opsiyon 1
>> theta = angle(a)
theta =
0.7854
Opsiyon 2
>> theta = atan(imag(a)/real(a))
theta =
0.7854
20
1/13/2013
Karmaşık Sayı Fonksiyonları
41
real(z): karmaşık sayının gerçek kısmı
imag(z): karmaşık sayının sanal kısmı
abs(z): karmaşık sayının genliği
angle(z): karmaşık sayının açısı
conj(z): karmaşık sayının eşleniği
compass(z): karmaşık sayının
polar formatta çizimi
>> compass(a)
Sayısal Format
42
Sayısal formatlar
(single=32 bit, double=64 bit)
Format
Açıklama
pi sayısına etkisi
short
Scaled fixed point format with 5 digits.
long
Scaled fixed point format with 15 digits 3.14159265358979
for double and 7 digits for single.
3.1416
short e
Floating point format with 5 digits.
3.1416e+000
long e
Floating point format with 15 digits for
double and 7 digits for single.
3.141592653589793e+000
short g
Best of fixed or floating point format
with 5 digits.
3.1416
long g
Best of fixed or floating point format
with 15 digits for double and 7 digits
for single.
3.14159265358979
Normal kullanım şekli ‘short’ (kısa) formattır.
21
1/13/2013
format
43
>> format long
>> format compact
>> pi
ans =
3.1416
>> format loose
>> pi
% short sayisal formati belirleme
% dar satır aralığı
% geniş satır aralığı
ans =
3.1416
Hazır Tanımlanmış Sabitler
44
Sabitler
ans
Açıklama
Bir değişkene atanmayan sonuç ‘ans’ sabitine atanır.
pi
‘format long’ olarak 3.14159265358979
i, j
Karmaşık sayıların sanal kısmını tanımlar (sqrt(-1))
eps
İki sayı arasında olabilecek en küçük fark 2^(-52)
realmax
MATLAB’ın kurulu olduğu bilgisayarda yazılabilecek
en büyük pozitif gerçek sayı
realmin
MATLAB’ın kurulu olduğu bilgisayarda yazılabilecek
en küçük pozitif gerçek sayı
bitmax
MATLAB’ın kurulu olduğu bilgisayarda yazılabilecek
en bütük tam sayı
Inf
NaN
Sayı/sıfır belirsizliği sonucu üretilir
0/0, ∞ - ∞ belirsizliği sonucu üretilir (Not a Number)
22
1/13/2013
Örnekler
45
>> eps
ans =
2.2204e-016
>> realmax
ans =
1.7977e+308
>> bitmax
ans =
9.0072e+015
>> realmin
ans =
2.2251e-308
Grafik Çizdirmek
46
İki Boyutlu Lineer Eksenli Çizim: plot()
Bu fonksiyonun bir sürü opsiyonu mevcut, hepsini
görmek için help plot yazınız
İşaret türleri ve simgeleri
Nokta(.), Artı(+), Yıldız(*) Çember(o), x-işareti(x), Kare(s)
Çizgi türleri ve simgeleri
Düz(-), Noktalı(:), Kesikli(--), Nokta-kesik(-.)
Çizgi renkleri ve simgeleri
Kırmızı(r), Yeşil(g), Sarı(y), Mavi(b), Siyah(k), Mor(m),
Beyaz(w)
23
1/13/2013
Fonksiyonu Çizdirme Örneği
47
>> x = [1:10]; y=sin(x);
>> plot(x,y)
Fonksiyonu Çizdirme Örneği (2)
48
>> plot(x,y,'*k')
24
1/13/2013
Fonksiyonu Çizdirme Örneği (3)
49
>> x = [1:10]; y=sin(x);
>> plot(x,y)
>> hold on
>> plot(x,y,'*k')
>> xlabel('x[n]')
>> ylabel('y[n]')
>> title('y=sin(x)')
>> hold off
plot()’un Başka Şeçenekleri
50
LineWidth: Çizgi kalınlığını değiştir
MarkerEdgeColor: İşaret kenarlık rengini değiştir
MarkerFaceColor: İşaret dolgu rengini değiştir
MarkerSize: İşaret boyutunu değiştir
Örnek:
>> x = -pi:pi/10:pi;
y = tan(sin(x)) - sin(tan(x));
plot(x,y,'--rs','LineWidth',2,...
'MarkerEdgeColor','k',...
'MarkerFaceColor','g',...
'MarkerSize',10)
25
1/13/2013
Grafik Alanı Komutları
51
Şekillere sayı vermek önemlidir yoksa her figure aynı
şekil penceresinde çizdirilir:
figure: Yeni şekil pencere açtır
figure(n): n sayılı şekil penceresi açtır
subplot(m,n,p): Çizim alanını bölgelere ayır
close(n): n sayılı şekli kapatma
close all: tüm şekilleri kapatma
axis(): eksenin sınırlarını görüntüler
axis([xmin xmax ymin ymax]): eksen sınırlarını belirler
İki Boyutlu Temel Grafikler
52
plot(): lineer eksenli grafikler [sürekli-zaman
sinyaller için kullan, örnek sayısını fazla tutarak]
loglog(): X ve Y eksenleri logaritmik grafikler
semilogx(): X ekseni logaritmik, Y ekseni lineer
semilogy(): Y ekseni logaritmik, X ekseni lineer
polar: kutupsal koordinat eksenli grafikler
area(): alan dolgulu grafikler
bar(): çubuk (bar) grafikler
stem(): parçalı grafikler [ayrık sinyallerde kullan]
stairs(): basamak grafikler
hist(): histogram grafikler
26
1/13/2013
stem()
53
>> x = -pi:pi/10:pi;
>> y = sin(x);
>> stem(x,y)
Şekilleri kaydetme
54
Şekil penceresinden ‘save as’
Çalıştırma sayfasından print() komutuyla
MATLAB şekili olarak kaydetme .fig dosyasıdır
Örnek: jpeg olarak kaydetme
İsteğin klasöre girdikten sonra:
>> print -djpeg deneme.jpg
Daha bilgi için: help print
27
1/13/2013
MATLAB .m Dosyaları
55
Bütün komutları çalıştırma sayfasında tek tek
girmek zorunda değiliz.
MATLAB .m script dosyasında komutları yazıp,
dosya ismiyle çalıştırma sayfasından çağırabiliriz.
Örnek:
File →New→Blank M File
Açılan dosyada tüm MATLAB komutları yazınız
deneme.m olarak kaydedin
Çalıştırma sayfasından çalıştırın
>> deneme
Şimdilik bu kadar!
56
Kitabımıza bakın, çok deneyebileceğiniz örnekler
mevcut ve bir çok konuyu daha ayrıntılı olarak ele
almaktadır.
MATLAB’ı öğrenmenin en iyi yolu açıp denemek!
En çok kullanacağınız komutu unutmayın: help
28