• Sonuç bulunamadı

MATLAB Ek Ders 1: Temel işlemler, vektörler, matrisler, basit grafikler ve dosyalar

N/A
N/A
Protected

Academic year: 2022

Share "MATLAB Ek Ders 1: Temel işlemler, vektörler, matrisler, basit grafikler ve dosyalar"

Copied!
28
0
0

Yükleniyor.... (view fulltext now)

Tam metin

(1)

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 Ek Ders 1:

Temel işlemler, vektörler, matrisler, basit grafikler ve dosyalar

MATLAB Çalıştırma Sayfası

Ç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

2

(2)

MATLAB = Matrix Laboratory

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

3

Aritmetik İşlem Örneği

Örnek 1

>> 1 + 2 – 3 * 4 / 5 ^ 6 ans =

2.9992

Örnek 2: Parantez ile önceliği belirtebiliriz >> 1 +( ((2 – 3) * 4) / 5 )^ 6

ans = 1.2621

4

5^6 = 15625

4 / 5^6 = 2.5600e-004 3 * 4 / 5^6 = 7.6800e-004

(3)

“...” notasyonu

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

5

ans

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

6

(4)

Sabit ve değişkenlerin isimlendirilmesi

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

7

İsimlendirme örneği

>> x = 5 x = 5

>> y = 3 y = 3

>> f = x + y f =

8

8

(5)

“;” Notasyonu

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;

>>

9

“%” Notasyonu

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 % Hadi hesapla: y = 1 x =

3

10

(6)

Çalışma Sayfası Genel Komutları

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

11

Genel Komutlara Devam

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

12

(7)

Vektörlerin Tanımlanması

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

13

Vektör Tanımlamaya Devam

İ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

14

(8)

Özel Vektör Tanımlama Fonksiyonları

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

15

Dizinlerle Vektör Değerlerine Ulaşabilme

>> v = [1 2 3 4 5 6 7 8 9] % ornek tanimlayalim v =

1 2 3 4 5 6 7 8 9

>> v(4:6)=0 % Ogelerin 4-6 arasini sifir yapalim v =

1 2 3 0 0 0 7 8 9

>> v(4:6)=[11 22 33] % Ogeleri farkli tanimlayalim v =

1 2 3 11 22 33 7 8 9

16

(9)

Örneğe Devam

>> v(6:end)=1 % end notasyonu v =

1 2 3 11 22 1 1 1 1

>> v(6:end)=[] % kare parantez ile silme v =

1 2 3 11 22

17

Özel Fonksiyonlara Devam

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

18

(10)

length

length: vektörün uzunluğu (öge sayısı)

>> v v =

1 2 3 11 22

>> length(v) ans =

5

19

Matrislerin Tanımlanması

Örnek 1

>> M=[1 2 3 4 5 6 7 8 9]

M =

1 2 3 4 5 6 7 8 9

20

• Örnek 2

>> M=[1 2 3; 4 5 6 ; 7 8 9]

M =

1 2 3 4 5 6 7 8 9

(11)

Matris İndisleri

>> M = [1 2 3; 4 5 6; 7 8 9];

>> M(2,2) % Oge (2,2)’yi gösterme ans =

5

>> M(2,2)=50 % Oge (2,2)’ye değer atama M =

1 2 3 4 50 6 7 8 9

21

Matris İndisleri (2)

>> M(3,:)=[-1 -2 -3] % 3. sıraya değer atama M =

1 2 3 4 50 6 -1 -2 -3

>> M(:,1)=[8 18 28] % 1. sütüne değer atama M =

8 2 3 18 50 6 28 -2 -3

22

(12)

Matris İndisleri (3)

>> M(2,2:3)=0 % Sadece belirli ögeleri değiştirme M =

8 2 3 18 0 0 28 -2 -3

>> M(3,2:end)=100 % end notasyonu M =

8 2 3 18 0 0 28 100 100

23

Matris Biriktirilmesi

Matrislerden daha büyük matrisler oluşturma

>> A=[1 2 3; 4 5 6]; B=[-4 -5 -6]; C=[-3 ; -6];

>> [A ; B] % B’yi A’nın sıralarına ekleme ans =

1 2 3 4 5 6 -4 -5 -6

24

(13)

Matris Biriktirmesi (2)

>> [A, C] % C’yi A’nın sütünlerine ekleme ans =

1 2 3 -3 4 5 6 -6

>> [A 2*C] % virgülsüz notasyon, işlemiyle ans =

1 2 3 -6 4 5 6 -12

25

Matrisler için length

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

26

(14)

size

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

27

Özel Matrisler

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

28

(15)

Özel Matrislere Devam

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

29

Özel Matrislere Hala Devam

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 0 2 0 0 0 0 3 0 0 0 0

30

>> diag(v,-1) ans =

0 0 0 0 1 0 0 0 0 2 0 0 0 0 3 0

(16)

transpose

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

31

>> transpose(M) ans =

0 + 1.0000i 0 + 3.0000i 0 + 5.0000i 0 + 2.0000i 0 + 4.0000i 0 + 6.0000i

>> M.' ans =

0 + 1.0000i 0 + 3.0000i 0 + 5.0000i 0 + 2.0000i 0 + 4.0000i 0 + 6.0000i

conjugate transpose

Sadece tırnak: ‘

>> M' ans =

0 - 1.0000i 0 - 3.0000i 0 - 5.0000i 0 - 2.0000i 0 - 4.0000i 0 - 6.0000i

32

(17)

elmat

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.

33

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()

(18)

Trigonometrik Fonksiyonlara Devam

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) % Dereceden radyana çevirme ans =

1

35

Üstel Fonksiyonları, vb.

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

36

(19)

Karmaşık Sayıları ve Fonksiyonları

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

37

Karmaşık Sayı Tanımlama

Ö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

38

(20)

Karmaşık Sayı İşlemleri

>> a=1+j; b=1-j;

>> a + b % toplama ans =

2

>> a – b % çıkartma ans =

0 + 2.0000i

>> a*b % çarpma >> a/b % bölme ans = ans =

2 0 + 1.0000i

39

Genlik ve Açı Hesaplamaları

Genlik

Opsiyon 1 Opsiyon 2

>> r = abs(a) >> r = sqrt(real(a)^2 + imag(a)^2) r = r =

1.4142 1.4142

Açı

Opsiyon 1 Opsiyon 2

>> theta = angle(a) >> theta = atan(imag(a)/real(a)) theta = theta =

0.7854 0.7854

40

(21)

Karmaşık Sayı Fonksiyonları

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)

41

Sayısal Format

Sayısal formatlar (single=32 bit, double=64 bit)

Normal kullanım şekli ‘short’ (kısa) formattır.

42

Format Açıklama pi sayısına etkisi

short Scaled fixed point format with 5 digits. 3.1416 long Scaled fixed point format with 15 digits

for double and 7 digits for single.

3.14159265358979

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

(22)

format

>> format long % short sayisal formati belirleme

>> format compact % dar satır aralığı

>> pi ans = 3.1416

>> format loose % geniş satır aralığı

>> pi ans = 3.1416

43

Hazır Tanımlanmış Sabitler

Sabitler Açıklama

ans 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 Sayı/sıfır belirsizliği sonucu üretilir

NaN 0/0, ∞ - ∞ belirsizliği sonucu üretilir (Not a Number)

44

(23)

Örnekler

>> eps >> realmax ans = ans =

2.2204e-016 1.7977e+308

>> bitmax >> realmin ans = ans =

9.0072e+015 2.2251e-308

45

Grafik Çizdirmek

İ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)

46

(24)

Fonksiyonu Çizdirme Örneği

>> x = [1:10]; y=sin(x);

>> plot(x,y)

47

Fonksiyonu Çizdirme Örneği (2)

>> plot(x,y,'*k')

48

(25)

Fonksiyonu Çizdirme Örneği (3)

>> 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

49

plot()’un Başka Şeçenekleri

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)

50

(26)

Grafik Alanı Komutları

Ş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

51

İki Boyutlu Temel Grafikler

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

52

(27)

stem()

>> x = -pi:pi/10:pi;

>> y = sin(x);

>> stem(x,y)

53

Şekilleri kaydetme

Ş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

54

(28)

MATLAB .m Dosyaları

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

55

Şimdilik bu kadar!

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

56

Referanslar

Benzer Belgeler

After her degree in English language Teaching between the years of 2001-2004 from Near East University. She continued

Meslek yaşamına 2006-2007 akademik yılında Yakın Doğu Üniversitesi’nde öğretim görevlisi olarak çalışarak başladı ve halen Yakın Doğu Üniversitesi Atatürk

She has given different courses on educational psychology, development and learning psychology, child psychology, develoment psychology, pathological psychology, parent

2009 yılında Yakın Doğu Üniversitesi Uygulamalı Klinik Psikoloji Yüksek Lisans eğitimi aldı, 2012 yılında öğrenimini tamamladı. 2011 yılında sekiz ay süreyle Lefkoşa

2010 Temmuz – Ağustos tarihlerinde, UNDP’nin düzenlediği bir proje kapsamında, Kıbrıs adasının çeşitli noktalarında belirlenen Osmanlı yapıları tespit

06-08 Şubat 2002 Bildiri, Günümüzdeki Sosyo-Ekonomik Sistem İçerisinde Yerel Yönetimlerde Değişen Çevre-Yitirilen İnsan, Çağdaş Kentler ve Yerel Yönetimler

‘Benim adım Zeki, zıpkın gibiyim.’ İmgeyi ilk önce bir kişi yapar daha sonra grup bu imgeyi tekrarlar.. Benim adım Berna,

ÖZŞENER Serdar Ovarian burkitt’s lymphoma: report of a case and review of the literatüre 2:233-235 ÖZŞENER Serdar The effect of postmenopausal hormone replacement therapy on