MATLAB Notlari

48
2 BÖLÜM 1 : MATLAB KULLANIMI ve MATR S LEMLER “Matlab” program ( MAT rix LAB oratory 'nin ilk üç harfleri alnarak isimlendirilmi tir.) mühendislik uygulamalarnn, hesaplamalarnn ve simülasyonlarnn ço unun gerçekle tirildi i matris ve matematik tabanl kompleks bir programdr. Her türlü grafiksel sonuçlar istenilen tarzda alnabildi i için kullanm alan çok geni tir. Ayrca MATLAB versiyonlarndan en az 6.0 ve üzeri olanlarnn kullanlmas güncellik açsndan daha yararl olacaktr. Bu bölümde program kullanmaya ba lamak için giri komutlar, matematiksel fonksiyonlar ve matris operatörleri anlatlacaktr. Ayrca klavuzun en son ksmnda da en çok kullanlan matris komutlar ve fonksiyonlar tablo halinde verilmi tir. help ‘fonksiyon ismi’ komutu yazldnda yardm istenilen fonksiyon hakknda detayl bilgiye ula labilmektedir. help help yazldnda ise on-line olarak yardm klavuzunun nasl kullanlaca hakknda bilgilere ula labilmektedir. -- Matris Operatörleri : Aa da verilen simgeler matris i lemlerinde kullanlmaktadr: + Toplama - Çkarma * Çarpma ^ Kuvvet alma Konjüge transpozunu alma -- Mantk ve li ki Operatörleri : < Küçük & Ve <= Küçük e it | Veya > Büyük ~ De il ~= E it de il

description

MATLAB Notlari

Transcript of MATLAB Notlari

  • 2

    BLM 1 : MATLAB KULLANIMI ve MATR S LEMLER

    Matlab program ( MATrix LABoratory 'nin ilk harfleri alnarak isimlendirilmi tir.) mhendislik uygulamalarnn, hesaplamalarnn ve simlasyonlarnn o unun gerekle tirildi i matris ve matematik tabanl kompleks bir programdr. Her trl grafiksel sonular istenilen tarzda alnabildi i iin kullanm alan ok geni tir. Ayrca MATLAB versiyonlarndan en az 6.0 ve zeri olanlarnn kullanlmas gncellik asndan daha yararl olacaktr.

    Bu blmde program kullanmaya ba lamak iin giri komutlar, matematiksel

    fonksiyonlar ve matris operatrleri anlatlacaktr. Ayrca klavuzun en son ksmnda da en ok kullanlan matris komutlar ve fonksiyonlar tablo halinde verilmi tir.

    help fonksiyon ismi

    komutu yazld nda yardm istenilen fonksiyon hakknda detayl bilgiye ula labilmektedir. help help yazld nda ise on-line olarak yardm klavuzunun nasl kullanlaca hakknda bilgilere ula labilmektedir. -- Matris Operatrleri : A a da verilen simgeler matris i lemlerinde kullanlmaktadr: + Toplama - karma * arpma ^ Kuvvet alma Konjge transpozunu alma -- Mantk ve li ki Operatrleri : < Kk & Ve Byk ~ De il ~= E it de il

  • 3

    -- Ba lang olarak komut satrna : date yazlrsa program tarafndan geerli olan tarih alnacaktr.Yani : ans=

    30-Oct-2002 -- MATLAB bir i lemin sonucunu ans= .... eklinde gsterir. ( ans = answer = cevap) -- MATLAB programndan kmak iin ise exit veya quit yazmak yeterli olacaktr. -- En son yazlan komutlarn hepsine st ve alt yn tu larna dokunarak kolay bir ekilde ula labilir.

    -- En son tanmlanan herhangi bir x de eri iin yaplan i lemlerden sonra bu x de eri komut satrna yazlp enter tu una baslrsa daha nce neye kar lk olarak tanmland ekrana yazlacaktr. -- nx1 veya 1xn boyutunda vektr tanmlamak iin : x=[1 2 3 -4 -5] veya

    X=[1,2,3,-4,-5] yazlmaldr. Yukardaki iki yazm biiminden okuma kolayl olmas iin ilk yazlan tip kullanlacaktr. -- Tanmlanan bu satr vektrn stun vektrne dn trmek iin : y=x yazlrsa ekranda grlen de er a a daki gibi olacaktr: y= 1

    2

    3

    -4

    -5

  • 4

    -- Matris tanmlamak iin a a daki A matrisi verilmi olsun : 1.2 10 15 A = 3 5.5 2 4 6.8 7 Bu matrisi MATLABe tantmak iin u ekilde yazlmaldr : A = [1.2 10 15 ; 3 5.5 2 ; 4 6.8 7] Yani her satrn sonunun neresi oldu unu konulan noktal virgl i areti temsil etmektedir. -- rnek olarak a a daki B matrisini tantmak iin : 1 e-0.02

    B = 2 3

    B = [1 exp(-0.02); sqrt(2) 3] eklinde yazlmaldr. Ekranda ise u ekilde gzkecektir:

    B = 1.0000 0.9802

    1.4142 3.0000

    -- Apostrofi i areti () matrisin konjge transpozesinin alnmasna yarar. E er matris reel bir matris ise basit olarak transpoze alm i lemi olarak da tanmlanabilir.. Yeni bir A matrisi tanmlayalm : A = [1 2 3 ; 4 5 6 ; 7 8 9] Ekranda grlecek matris u ekilde olacaktr :

    A =

    1 2 3

    4 5 6

    7 8 9

  • 5

    Bu matrisin transpozesini almak iin : C = A yazlrsa ekranda grlecek transpoze de eri :

    C =

    1 4 7

    2 5 8

    3 6 9

    -- Kompleks saylarn girilmesi iin ise i2=-1 denkleminin kk i veya j olarak tanmlanr. rnek olarak 1+j 3 de erini tantmak iin : X = 1+sqrt(3)*i veya X = 1+sqrt(3)*j olarak yazlmaldr. Bu kompleks say stel formatta da yazlabilmektedir :

    1+j 3 = 2 exp[( /3)*j]

    Bu durumda komut satrna a a daki ifade yazlacaltr :

    x = 2 exp[pi/3)*j]

    i ve j daha nceden de i ken olarak kullanlm sa tanmlama iin ii ve jj kullanlacaktr.Yani :

    ii = sqrt(-1)

    jj = sqrt(-1) Dolaysyla a a daki yazm da mmkn olmaktadr :

    X = 1+sqrt(3)*ii

    X = 1+sqrt(3)*jj

  • 6

    -- Kompleks matris tanmlamak iin a a daki X matrisi verilmi olsun: 1 j

    X = -j5 2

    Komut satrna ise u ekilde girilecektir : X = [1 j ; -j5 2] Bu durumda ekranda grlecek de er : X = 1.0000+0 0+1.0000i

    0-5.0000i 2.0000+0 Y = X komutu yazlrsa :

    Y =

    1.0000+0 0+5.0000i

    0-1.0000i 2.0000+0 iletisi ekranda okunacaktr. Daha nce de belirtildi i gibi yukardaki i lem konjge transpoze olarak alglanmaktadr. E er sadece transpoze alnacaksa (konjgesiz) komut u ekilde yazlmaldr : Y. veya conj(Y) Bu durumda ekranda gzkecek de erler :

    ans =

    1.0000+0 0-1.0000i

    0+5.0000i 2.0000+0 -- Toplama ve karma i lemlerinin yaplmas iin a a daki M ve N matrisleri verilmi olsun :

    2 3 1 0 M = 4 5 N = 2 3 6 7 0 4

  • 7

    Bu de erleri ekrana girmek iin: M = [2 3 ; 4 5 ; 6 7]

    M =

    2 3

    4 5

    6 7

    N = [1 0 ; 2 3 ; 0 4]

    M =

    1 0

    2 3

    0 4 Toplama i lemi iin:

    C = M+N C = 3 3

    6 8

    6 11

    E er x vektr u a a daki gibi verilirse : 5

    X = 4 6 Bu vektr u ekilde tantmak gerekir : X = [5 ; 4 ; 6] rne in T = X-1 gibi i lemi gerekle tirmek iin : T = X-1 T =

    4

    3

    5

  • 8

    -- Matris arpm daha nce de belirtildi i gibi * arpma operatryle yaplmaktadr. A a daki rnek incelenirse arpmann da tanm gere i arplan matrislerin boyutlarnn uyu mas gerekmektedir. Aksi takdirde arpma i lemi yaplmayacak ve hata mesaj verilecektir. x = [1 ; 2 ; 3]; y = [4 ; 5 ; 6]; A = [1 1 2 ; 3 4 0 ; 1 2 5]

    x*y

    ans =

    32

    x*y

    ans =

    4 5 6

    8 10 12

    12 15 18

    b = A*x

    b =

    9

    11

    20 Bunlarn d nda matris bir skaler de erle de arplabilir :

    5*A ans = 5 5 10

    15 20 0

    5 10 25

    -- Matris ss ( expm(A) ) nxn matrise uygulanr.Matematiksel tanm ise u ekildedir:

    expm(A) = I + A + A2/2! + A3/3! + ...

    E er A kompleks bir matris ise abs(A) de eri de kompleks modl de erler zerinden hesaplanacaktr.Yine matematiksel ifadesine bakacak olursak : abs(A) = sqrt(real(A).^2 + imag(A).^2)

  • 9

    angle(A) ise faz alarn radyan cinsinden A kompleks matrisi iin hesaplamaktadr. Burada tanm de erleri ve + arasnda kabul edilmektedir. Sonu olarak verilen bir K matrisi iin a a daki uygulama incelenebilir : A = [2+2*i 1+3*i ; 4+5*i 6-i]; abs(A)

    ans =

    2.8284 3.1623

    6.4031 6.0828

    angle(A)

    ans =

    0.7854 1.2490

    0.8961 -0.1651

    -- Kompleks bir saynn modl ve faz asn bulmak iin : z = x + iy = rei r = abs(z) theta = angle(z)

    z = r*exp(i*theta) -- Bir vektrn elemanlarnn teker teker karesinin alnmas i lemi u ekilde yaplmaktadr : x = [1 2 3]; x.^2

    ans=

    1 4 9

    E er kompleks saylar mevcut ise : y = [2+5*i 3+4*i 1-i] y.^2

    ans =

    -21.0000+20.0000i -7.0000+24.0000i 0-2.0000i

  • 10

    2x2 bir kare matris olursa yine ayn ekilde : A = [1 2 ; 3 4]; A.^2

    ans =

    1 4

    9 16

    -- Eleman elemana arpma i lemi iin arpma operatrnn nne bir nokta i areti (.) konmaktadr : x = [1 2 3], y = [4 5 6] z = [x.y]

    z = [4 10 18]

    Bir rnek daha verilirse : 1 2 3 4 5 6 A = B = 1 9 8 7 6 5 C = A.*B

    C = 4 10 18

    7 54 40 -- Bir matrisin tm elemanlarnn tek tek karesini almak iin :

    A=[ 1 2 3 4 ]

    A.^2

    ans = 1 4 9 16 -- Eleman elemana blme iin ise :

    u = x./y

  • 11

    u =

    0.2500 0.4000 0.4000

    0.1429 1.5000 1.6000 -- Bir matrisin tersini bulmak iin inv(A) komutu kullanlr : A = [0 1 0;0 0 1;-6 -11 -6]; inv(A)

    ans =

    -1.8333 -1.0000 -0.1667

    1.0000 0 0

    0 1.0000 0 -- e itli komutlar ve durumlar tek bir srada virgl (,) veya noktal virgl ile (;) ayrlarak yazlabilir. -- k formatn istedi imiz uzunlukta elde edebiliriz. E er matris elemanlar tamsay ise bu durum sonuta bir de i iklik yapmayacaktr. Bunun iin a a daki komutlar kullanmak gerekmektedir : format short format long x = [1/3 0.00002]; x

    x =

    0.3333 0.0000

    format short; x

    x =

    0.3333 0.0000

    format long; x

    x =

    0.3333333333333333 0.00002000000000000

  • 12

    -- 1den 5e kadar saylar 0.5lik aralklarla yazdrmak istersek iki noktay (:) kullanmak yeterli olacaktr :

    t = 1 2 3 4 5 t = 1:0.5:3 t = 1.0000 1.50000 2.0000 2.50000 3.0000 Dzgn azalan biimde yazdrrsak : t = 5:-1:2 t = 5 4 3 2 -- Bir matrisin i. satrn veya j. stununu grntlemek iin a a da tanmlanan A matrisini komutlaryla inceleyelim : A a daki A matrisinin 2. satr grntlemek iin : A(i , :)

    A = [0 1 0;0 0 1;-6 -11 -6]

    A(2 , :)

    ans =

    0 0 1 A matrisinin 3. stununu grntlemek iin : A(: , 3)

    ans =

    0

    1

    -6 -- Bir matrisin (i,j) ninci elemann bulmak iin :

    k = A(3,3)

    k = -6

  • 13

    -- Bir matrisin boyutlarn renmek iin size(A) komutu, rankn bulmak iin rank(A) kullanlr. A= 2 3 2

    5 4 1

    2 6 8

    size(A)

    ans =

    3 3 rank(A)

    ans =

    3 -- Bir matrisin determinantn bulmak iin det(A) komutu kullanlr.

    A=

    2 3 2

    5 4 1

    2 6 8

    det(A)

    ans = -18 -- Bir matrisin normunu bulmak iin ise norm(x) yazmak gerekmektedir. Matematiksel norm ifadesini verecek olursak :

    norm(x) = sum(abs(x).^2)^0.5 x = [2 3 6] norm(x)

    ans =

    7

  • 14

    -- Bir matrisin zde erlerini bulmak iin eig(A) komutu kullanlr : A = [0 1 ; -1 0] eig(A)

    ans =

    0+1.0000i

    0 -1.0000i -- z vektrleri bulmak da tek satrlk bir i lem gerektirmektedir. Aslnda zvektrleri bulmak iin verilen [X,D] = eig(A) komutu ayn zamanda z de erleri de buldu u iin her iki bilgiye ayn anda ula ma imkan olmaktadr : A = [0 1 0 ; 0 0 1 ; -6 -11 -6] [X,D] = eig(A)

    X =

    -0.5774 0.2182 -0.1048

    0.5774 -0.4364 0.3145

    -0.5774 0.8729 -0.9435

    D =

    -1.0000 0 0

    0 -2.0000 0

    0 0 -3.0000 Burada X sonu matrisinin her bir stunu verilen A matrisinin bir z de erini gstermektedir. D sonu matrisinin diyagonalindeki (k egenindeki) elemanlarn her biri de verilen A matrisinin zde erlerini gstermektedir. Verilen e boyutlu farkl iki A ve B gibi matrisin genelle tirilmi z de erlerini ve z vektrlerini bulmak iin ise [X,D] = eig(A,B) komutu yazlmaldr. -- Karakteristik denklemi bulmak iin poly(A) komutu kullanlr. A = [0 1 0 ; 0 0 1 ; -6 -11 -6]

    p = poly(A)

    p =

    1.0000 6.0000 11.0000 6.0000

  • 15

    Burada grlen sonu katsaylar karakteristik denklemin katsaylardr. Yani :

    s3 + 6s2 + 11s + 6 = 0 -- Bir polinomun kklerini bulmak iin roots(a) komutu yazlmaldr. Yukardaki karakteristik denklemin kklerini bulmak istersek : r = roots(p)

    r =

    -3.0000

    -2.0000

    -1.0000 -- Polinomlarn arpm iin conv(a,b) komutu kullanlr. a(s) = s2 20.6 b(s) = s2 + 19.6s + 151.2 a(s) ve b(s) polinomlarn arpmak iin : a = [1 0 -0.26]; b = [1 1.96 151.2] c = conv(a,b)

    c =

    1.0e+003

    0.0010 0.0196 0.1306 -0.4038 -3.1147 Dolaysyla arpm sonucu u ekilde yazlabilir :

    c(s) = s4 + 19.6s3 + 130.6s2 403.8s 3114.7 -- Bir polinomda herhangi bir tamsay de erini hesaplatmak iin polyval(c) komutu kullanlr : p(s) = 3s2 + 2s + 1

    p = [3 2 1];

    polyval(p,5)

    ans =

    86 -- 1 ve 0 saylarnn istenilen matrisel boyutta abuk olarak retilebilmesi iin ones(m,n) ve zeros(m,n) komutlar kullanlabilir :

  • 16

    ones(2,2) ans =

    1 1

    1 1

    zeros(3,3)

    ans =

    0 0 0

    0 0 0

    0 0 0 -- Birim matris de eye(n) komutuyla istenilen boyutta olu turulabilir : eye(5) ans =

    1 0 0 0 0

    0 1 0 0 0

    0 0 1 0 0

    0 0 0 1 0

    0 0 0 0 1 -- Bir matrisin k egenindeki elemanlar listelemek iin diag(A) komutu kullanlr : A = [1 2 3 ; 4 5 6 ; 7 8 9] ; diag(A)

    ans =

    1

    5

    9 K egenin elemanlar haricindeki matris bile enleri 0 olarak gstermek istersek : diag(diag(A)) ans = 1 0 0 0 5 0 0 0 9

  • 17

    K egen matrisi olu turmayla alakal a a daki di er rnekler de incelenebilir :

    diag(1:5) ans = 1 0 0 0 0 0 2 0 0 0 0 0 3 0 0 0 0 0 4 0 0 0 0 0 5

    diag(0:4) ans = 0 0 0 0 0 0 1 0 0 0 0 0 2 0 0 0 0 0 3 0 0 0 0 0 4

    [diag(1:5) diag(0:4)] ans = 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 -- Bir matrisi rastgele olarak olu turmak iin rand(n) komutu kullanlr.0 ile 1 arasndaki saylar alr. rand(4)

    ans =

    0.3654 0.6739 0.3603 0.0493

    0.1400 0.9994 0.5485 0.5711

    0.5668 0.9616 0.2618 0.7009

    0.8230 0.0589 0.5973 0.9623

  • 18

    ALI TIRMALAR 1- Sin(x) i ilk 10 terim kullanarak bulan bir Matlab program yaznz. X a de erinin derece olarak kullancdan alp sin(x)i bulunuz ? Sin(x) = x x3/3! + x5/5! x7/7! + x9/9! ... 2- Yerden V0 hzyla ve asyla frlatlan bir bir topun t = 0,1,2,...10 saniye boyunca hareket bilgilerini veren. ema T, Vx, Vy bilgilerini her saniyede grntleyebilmelidir. Not1: Gerekli formller a a da sralanm tr.(g =10 m/s2, Yer ekimi ivmesi) Vx = V0cos( ) ; Vy = V0sin( ) gt ; V = (Vx

    2 + Vy2)1/2

    Not2: Topun tm harketi boyunca yerden yeterince yksekte oldu unu varsaynz.

  • 19

    BLM 2 : GRAF K ve E R Z MLER -- x ve y vektrleri ayn boyutta ise bu vektrleri ekrana izdirmek iin plot(x,y) komutu kullanlr.

    A =[ 7 2 5];

    B =[ 5 4 8 ];

    plot(A,B);

    grid

    Bu durumda grafik ekrana a a da gsterildi i gibi otomatik olarak izilecektir : Ayrca plot(X,Y,x) komutu izilen e riyi x karakterini kullanarak izmektedir.

    -- A a da grafik izimiyle ilgili baz zellikler sralanm tr : x=3:0.5:10 Seilen bir parametreye gre (burada x parametresi seilmi ) izdirilmesi planlanan e rinin snrlar yukardaki gibi yazlr. 3 ve 10 de erleri izdirilmek istenen aral , ortadaki 0.5 de eri art miktarn gstermektedir. grid

    Grafik arka yznn lekli olarak gsterilmesini sa lar.

    title(...) izilen grafi e ba lk yazmak iin kullanlr.

    xlabel(...) izilen grafi in x-eksenine istenilen aklamay yazmak iin kullanlr.

  • 20

    ylabel(...) izilen grafi in y-eksenine istenilen aklamay yazmak iin kullanlr.

    text(X,Y,text) Grafik ekran zerine istenilen koordinatlar dahilinde herhangi bir aklama yazmak iin kullanlr.

    . + * o x

    stenildi i takdirde izilen e rinin dz izgi olarak de il de farkl karakterlerle izdirilebilir. Bunlar iin ise yukarda gsterilen nokta, art, yldz, yuvarlak ve x karakterleri kullanlr. Bu karakterleri plot() komutu ierisinde + eklinde yazmak yeterli olacaktr.

    r g b w i

    izilen e rinin rengi de yukarda gsterilen ksaltmalarla de i tirilebilir. Burada r krmz renk (red), g ye il renk (green), b mavi renk (blue), w beyaz renk (white) ve i ise (invisible) olarak ksaltm tr.

    Not : Bu zellikler ve daha farkl grnt zellikleri grafik ekran zerindeki Insert ve Tools menleri aracl yla komut satrn kullanmadan da yaplabilmektedir. -- A a daki rnekte ise y = x2 e risini 0 ve 3 aral nda izdirelim :

    x = 0:0.1:3; y = x.^2;

    plot(x,y,r);

    title(y=x2 egrisi);

    xlabel(x);

    grid;

    ylabel(y)

  • 21

    -- Birden fazla e riyi tek bir grafik ekran zerinde grmek iin izdirilmesi istenen e riler ayn plot(...) komutu iinde yazlmaldr.

    -- Birden fazla e riyi st ste izme uygulamas olarak a a daki rnekte sin(x) ve cos(x) e rileri tek bir grafik ekran zerinde izdirilmi tir : t = 0:0.05:10; x = sin(t);

    y = cos(t);

    plot(t,x,x,t,y,o);

    grid;

    title(Sin ve Cos E rileri);

    xlabel(Saniye);

    ylabel(x=sint ; y=cost);

    text(3,0.45,sint);

    text(0.8,-0.3,cost)

  • 22

    -- A a daki rnekte ise 3 farkl e ri izdirilmi tir :

    t=0:0.5:10;

    x=t^2+5*t-3;

    y=t.^2+3;

    z=t;

    plot(x,t,'r',y,t,'g',z,t,'b');

    grid;

    title(3 Farkl Grafigin Cizimi);

    xlabel(Giris Degerleri);

    ylabel(Cikis Degerleri);

    text(x,t,x);

    text(y,t,'y');

    text(z,t,'z')

  • 23

    -- Kompleks vektrlerin iziminde plot(z) ifadesi kullanlr. izim i leminde ise reel ve imajiner ksmlar ayr ayr ikili noktalar olarak kabul edilir : C=[2+6i 5-3i 4i 6-i ] plot(C)

    grid

    Not : loglog(X) komutu hem x eksenini hem de y eksenini logaritmik leklendirmeyi kullanarak Xin grafi ini izdirir

  • 24

    -- Bir A vektrn bar grafiklerini kullanarak izdirmek iin bar(A) komutu kullanlr. Basamak fonksiyonu eklinde izilecek ise stairs(A) komutu kullanlr. Her iki izime ait rnek grafikler a a da ayr ayr verilmi tir : A = [ 2 5 -5 6 1 ] bar(A);

    grid;

    xlabel(bar);

    stairs(A);

    xlabel(stairs)

  • 25

    -- Ayrca grafik ekranndaki menlerden yararlanarak e itli grnt de i iklikleri yaplabilir. rnek olarak Tools mensnde Rotate-3D seene i kullanlarak mouse yardmyla iki stteki bar grafi inin grnts a a daki gibi elde edilebilir.

    -- Grafik iziminde grafik izgi tipleri, i aretler ve renkler a a daki tabloda sralanm tr :

    Sembol Renk(RGB) izgi stili Sembol Nokta stili

    Y sar(110) . nokta - izgi

    M magenta(101) O yuvarlak : Noktal

    C cyan(011) X arp i areti -. izgili ve noktal

    R krmz(100) + art i areti - - kesik izgili

    G ye il(010) * yldz

    B mavi(001) S karekk

    W beyaz(111) D baklava

  • 26

    -- 3-D Line (3 Boyutlu dz izgi) izimi iin plot3(...) komutu kullanlr .A a da heliks izimi program verilmi tir :

    t=0.01:0.01:20*pi;

    x=cos(t);

    y=sin(t);

    z=t.^3;

    plot3(x,y,z);

    xlabel('Helix');

    grid

  • 27

    -- 3 boyutlu a ve yzey izimlerinde kullanlan komutlardan biri mesh(...) komutudur. Bu komut verilen giri i z bile eni olarak alglar ve dikdrtgen x-y dzlemi zerinde z ekseni boyunca izim yapar. surf(...) komutu ise ayn i i yzey olarak yapar.A a daki komut satrlarnn izim grntleri yine alt tarafnda verilmi tir.

    mesh(eye(10));

    grid

    surf(eye(10));

    grid

  • 28

    -- z=exp(-x2-y2) fonksiyon yzeyini [-2,2]x[-2,2] tanm aral nda 3 boyutlu olarak izdirelim :

    x=-2:0.2:2;

    y=x;

    [x,y]=meshgrid(x,y);

    z=exp(-x.^2-y.^2);

    mesh(z)

    -- Ayrca view komutu yardmyla da kresel ve kartezyen koordinatlar ekranda grntlenebilir. view

    ans =

    0.7934 -0.6088 0 -0.0923

    0.3044 0.3967 0.8660 -0.7835

    0.5272 0.6871 -0.5000 8.3031

    0 0 0 1.0000

  • 29

    -- rnek olarak z=x2+y2+xy yzeyini -2

  • 30

    -- Herhangi bir yzey grafi inde tepe ve alt tepe (minimum ve maximum) de erlerini gstererek yaplan izimlerde peaks(...) komutu kullanlr :

    [X,Y]=meshgrid(-3:0.125:3);

    peaks(X,Y)

  • 31

    ALI TIRMALAR 1- x = t3-2t+9 , y = 6t5-t , z = t2+7 e rilerini tek bir grafik ekrannda izdiriniz.

    2- A = [ 5 8 -2 6 4 0 7 ] giri verilerini bar grafik ekrannda izdiriniz. 3- z=2x2+y yzeyini, 0.2 artm de eriyle x = (-2,2) ve y = (-2,2) aral n kullanarak izdiriniz. 4- z = e-2x +4x3 grafi ini (2,50) aral nda izdiriniz.

    5- x=9sin(t) , y = 2tan(3t) + cos(t) grafiklerini (0,10) aral nda 0.05 artmla izdiriniz.

  • 32

    BLM 3 : MATLAB ile PROGRAMLAMA

    Bu blmde MATLAB yazlmn ba langta kolaylkla kullanabilmek iin gerekli olan komut ve fonksiyonlar verilecektir.

    u ana kadar MATLAB ile yapt mz uygulamalarda, belirli bir i lemi gerekle tirmek zere gerekli olan komut ya da fonksiyonlar komut satrndan, >> sembollerinden sonra tek tek girerek icra ediyorduk. Oysa, MATLAB komut ya da fonksiyonlarndan gerekle tirmek istedi imiz bir i le ilgili zel bir grubu, bir dosyaya kaydederek, bu dosya isminin a rlmasyla icra ettirebiliriz. Bir deyimler ya da komutlar grubunu ieren bu tip bir dosyaya MATLABde M-dosyas (M-File) ad verilir. Bir komut grubu ierdi i iin tanm itibariyle bir program dosyasdr. Dolaysyla programlama M-dosyalar olu turularak yaplr. -- Komut satrna helpwin komutu girilirse veya MATLABin Help mensnden Help Window seene i seilirse kar mza gelecek yardm seeneklerinden istenilen konu hakknda bilgi alnabilmektedir. -- M-File Olu turma : Programlama i lemi M-File (Program Dosyas) dosyalarnda yaplr. Bu nedenle program yazarken en ok kullanlacak olan i lem M-File olu turma i lemidir. Bunun iin File mensnden New seilir ve daha sonra M-File seene i seilir. Bylece yeni bir programlama ekran elde edilir. Programlama i lemi bittikten sonra M-File dosyasnn File mensnden Save As seene i seilir. Yazlan program buradaki work al ma dosyasnn iine istenilen isimle kaydedilir. Kaydedilen dosyalarn uzants .m olarak kaydedilir. (rnek: sonuc.m) stenen dosyay al trmak iin ise komut satrnda dosya ismini yazp Enter tu una basmak yeterlidir. Ayrca work mensne girilip oradan da al trlabilir. lk etapta rnek olarak olu turulmu olan bo bir M-File dosyas a a da gsterilmi tir:

  • 33

    A) GENEL AMALI KOMUTLAR -- workspace komutu : al ma esnasnda al ma alannda (belle in kullancya ayrlan ksm) mevcut de i kenler hakkndaki ayrntl bilgi a a da gsterildi i gibi bir pencere iinde verilir. Pencere iindeki de i kenlerin zerine ift tklayarak o de i kenle ilgili bilgilere ula lp de i iklikler yaplabilir.

    -- clear komutu : Bellekte o anda mevcut bulunan de i kenleri bellekten siler. -- save komutu : M-file dosyasnn kaydedilmesi yukarda da anlatld gibi File mensnden yaplr. MATLAB komut satrnda ise save komutu kullanlrsa o esnada bellekte bulunan de i kenleri, istenilen dosya ismiyle ve uzants .mat olacak ekilde kaydedilir.(rnek: sayilar.mat)

    >> a=1

    a =

    1

    >> b=2

    b =

    2

    >> save sayilar

    Yukarda a ve b saylar saylar.mat dosyas olarak kaydedilmi tir. -- load komutu : Diskte sakl bir dosya iindeki de i kenleri tekrar belle e ykler. >> load sayilar

    >> who

    Your variables are:

    a b

    Yukarda sayilar dosyas load komutuyla belle e tekrar yklenmi ve who komutuyla bu dosyann de i kenleri grntlenmi tir.

  • 34

    -- dir komutu : Bellekte kaytl olan dosyalar listeler. (Not: Bir program do ru olarak al trmak iin, icra ettirmeden nce clear komutuyla mevcut de i kenler silinebilir.)

    >> dir

    . Oy.m sayilar.mat simple-report.sgml

    .. diary simple-report.html -- type komutu : Bir .m uzantl dosyann ieri ini komut satrnda grntler. -- edit komutu : Bir M-dosyasnn ieri inde de i iklik yapma imkan sa lar. -- open komutu : Uzants ile belirtilen dosyay aar. -- Her yazlm trnde oldu u gibi MATLABde de, i letim sistemi kontrolne gemeden i letim sisteminin grevi olan baz i lemleri gerekle tirebilmek mmkndr. Bu tr i lemler a a daki tabloda zetlenmi tir.

    Komutun Ad Komutun levi cd Aktif dizini de i tirir. dir Aktif dizinin iindekileri listeler. ls Aktif dizinin iindekileri listeler. delete Belirtilen dosyay siler. type Belirtilen dosyann ieri ini listeler.

    -- clc komutu : Komut satrn tamamen siler.

  • 35

    B) DE KEN ATAMA

    C ve PASCAL gibi programlama dillerinde, programn ana gvdesinin olu turulmasna ba lamadan hemen nce, programdaki tm de i kenlerin hangi tip de i ken olduklarn belirtmek ve programn bilgisayar belle inden uygun miktarda alan bu de i kenler iin tahsis etmesini sa lamak gerekir. MATLABde de i kenler, kendilerine ait bir isim ve onlara atanacak de erler yardmyla olu turulurlar. nceden de i ken tipini belirtmeksizin, de i kene verilen de ere ba l olarak MATLAB, uygun de i ken tipini belirler ve bilgisayar belle inden yeteri kadar yeri bu de i kene tahsis eder.

    Birinci blmde temel atamalarla ilgili baz bilgiler (sabit, de i ken, matris, dizi, vektr tanmlama...) verilmi ti.

    -- Mantk ve li ki Operatrleri : == E ittir & and Ve ~= E it de il & and Ve < Kk ~ not De il Byk >= Byk e it -- global( ) komutu : Farkl M-dosyalar iin ayn de i ken tanmlanacaksa o de i ken global(x) olarak tanmlanabilir. -- disp() komutu : stenen aklamay grntler.

    >> disp('Programlamaya Giris')

    Programlamaya Giris -- input() komutu : Kullancdan klavye aracl yla programc tarafndan girilmesi istenen de i ken istenir ve ilgili de i kene atanr.

    >> Yas=input('Yasinizi giriniz :')

    Yasinizi giriniz :23

    Yas =

    23 -- fprintf komutu : Bir aklama ifadesiyle birlikte bir veya birden fazla de erin grntlenebilmesini sa lar.

    >> a=231565465;

    >> fprintf('Hesap = %d ',a)

    Hesap = 231565465.000000

  • 36

    Not : fprintf fonksiyonu, kompleks saylarn sadece reel ksmn gsterir. Bu nedenle kompleks say uygulamalarnda disp fonksiyonunu kullanlmaldr. fprintf fonksiyonunda kullanlan e itli biim tipleri a a da gsterilmi tir : %d : Virgll saylar 10un kuvvetleri eklinde gsterir. %f : Kayan noktal ekilde gsterir, aksi belirtilmedike virglden sonra 6 basamak gsterir. %e : Sayy stel ekilde gsterir. -- linspace ve logspace komutlar : lk de eri ve son de eri belirtilen bir diziyi lineer veya logaritmik olarak belirtilen saydaki eleman kullanarak yaplandrr. Belirtilen aral otomatik olarak verilen eleman saysna gre bler ve her bld sayy grntler. fonksiyon(ilk_de er , son_de er , eleman_says)

    >> B=linspace(0,10,6)

    B =

    0 2 4 6 8 10 -- Ba lang, son de er ve art miktar belli dizilerin atanmas :

    >> dizi=10:5:30

    dizi =

    10 15 20 25 30 --Hazr fonksiyon zelliklerini kullanarak olu turulan diziler iin kullanlan komutlar : zeros(n,m) : nxm boyutunda 0lardan olu an matris retir. ones(n,m) : nxm boyutunda 1lerden olu an matris retir. eye(n,m) : nxm boyutunda birim matris retir. length(x) : x dizisinin satr saysn verir. size(x) : x matrisinin boyutlarn (satr ve stun) verir. format short : lem sonularn virglden sonra 4 basamakl olarak gsterir. format long : lem sonularn virglden sonra 14 basamakl olarak gsterir. Not: MATLABin yapsnda nceden tanmlanm baz zel sabit veya aklama de erler : pi (Pi says) ; i,j (Kompleks i says) ; eps (Epsilon: ki say arasndaki en kk fark) ; Inf (Say/Sfr belirsizli i ve di er belirsizlikler kar snda retilen tanmszlk cevab : Infinite)

  • 37

    -- Vektr ve matrislerin tanmlanmas :

    >> A=[ 2 3 5 9 -2 ]

    A =

    2 3 5 9 -2 3x3 boyutunda bir matrisi tanmlamak iin :

    >> C=[3 6 9 ; 8 2 4 ; 0 8 3 ]

    C =

    3 6 9

    8 2 4

    0 8 3 -- who komutu : al ma alanndaki o esnada mevcut olan de i kenlerin isimlerini listeler. Ayrca whos komutu de i kenler hakknda daha ayrntl bilgi verir.

    >> who

    Your variables are:

    A B C V -- length( ) komutu : Girilen bir vektrn uzunlu unu (eleman saysn) grntler.

    >> A=[ 5 8 7 2 5 9 6 ]

    A =

    5 8 7 2 5 9 6

    >> length(A)

    ans =

    7 C) FONKS YON OLU TURMA VE D ER KOMUTLAR: -- sum( ), min( ), max( ), mean( ) komutlar : Yandaki komutlar srasyla bir vektrn elemanlarnn toplamn, en kk elemann, en byk elemann ve ortalamasn bulur. -- function komutu : Fonksiyon tanmlamak iin kullanlr. Bu zellik a a da rnek zerinde aklanm tr :

    rnek olarak kullanc tarafndan girilen n adet rakamn (Bu rakamlarn MATLABde vektr formunda girilmesi gerekmektedir) ortalamasn, en kk elemann, en byk elemann ve standart sapmasn bulacak bir fonksiyonu ist(a) adyla olu turalm :

  • 38

    Not: Herhangi bir .m dosyas penceresinde f butonuna mouse ile bir defa dokunuldu unda (yukardaki ekilde de grlmektedir) work dizini altnda kaytl olan btn fonksiyonlar listelenir.

    imdi de program komut satrndan icra ettirelim :

    >> A=[5 3 6 9 73 6 5];

    >> ist(A)

    enk =

    3

    enb =

    73

    n =

    7

    ort =

    15.2857

    stsapma =

    23.6203

    ans =

    15.2857

  • 39

    -- type komutu : Bir .m uzantl dosyann ieri ini komut satrnda grntler. rnek olarak 2 saynn toplamn yapan toplam isimli basit bir program yazalm. A a da M-File grntsnde gsterilmi tir :

    MATLAB komut satrna type toplam yazlrsa :

    >> type toplam

    clear

    disp('---------Iki sayinin toplamini bulan program--------------')

    a=input('Birinci sayiyi giriniz: ');

    b=input('Ikinci sayiyi giriniz: ');

    toplam=a+b;

    disp('Toplam = ');

    disp(toplam);

    end

    >> rnek Program: ki noktas bilinen do runun izimi program a a da gsterildi i gibi dogru.m dosyas ad altnda yazlm tr. izilmesi istenen do runun iki noktas kullancdan istenmekte ve grafik otomatik olarak izdirilmektedir.

  • 40

    Bu program komut satrnda al trlrsa a a da gsterildi i gibi icra edilir ve grafik de otomatik olarak yine a a da gsterildi i gibi izdirilir.

    >> dogru

    *********Iki Noktasi Bilinen Dogrunun Cizimi*********

    1. Noktanin apsisini giriniz :3

    1. Noktanin ordinatini giriniz :9

    2. Noktanin apsisini giriniz :-5

    2. Noktanin ordinatini giriniz :7

    >>

    rnek Program: 3 farkl partinin yaplan genel seimler sonucu aldklar oy oranlarn pasta grafik dilimi zerinde gsteren grafi in izimi program a a da gsterildi i gibi Oy.m dosyas ad altnda yazlm tr. izilmesi istenen pasta dilimi grafi i iin kullancdan bu partiye ait yzdelik oy oran rakam olarak istenmekte ve grafik otomatik olarak izdirilmektedir.

  • 41

    Bu program komut satrnda al trlrsa a a da gsterildi i gibi icra edilir ve grafik de otomatik olarak yine a a da gsterildi i gibi izdirilir.

    >> Oy

    Partilerin Oy Oranlari Grafigi

    A Partisinin aldigi oyun yuzdelik dilimdeki rakamini giriniz: 50

    B Partisinin aldigi oyun yuzdelik dilimdeki rakamini giriniz: 20

    C Partisinin aldigi oyun yuzdelik dilimdeki rakamini giriniz: 30

    -- keyboard komutu : letilen programlarn kodlarna ve ieriklerine d ardan mdahale edebilmek iin kullanlr. Bylece programn i letilmesi durdurulur, fonksiyonun kontrol edilebilmesini sa lar, de i kenler zerinde inceleme ve de i iklik yaplabilir. Bu komutun aktif oldu u K>> eklindeki zel bir komut istem sembol ile belirtilir. Bu zellikten kp programn ak na devam edebilmek iin, return komutu girilir ve enter tu una baslr. Bu zellik sayesinde al ma alannda retilen sonulara annda ula abilmek mmkn olmaktadr. A a daki rnekte M-File ve komut icra satrlar verilmi tir

  • 42

    Bu program komut satrnda al trlrsa a a da gsterildi i gibi icra edilir

    Birinci sayiyi giriniz: 4

    Ikinci sayiyi giriniz: 2

    K>> c=10

    c =

    10

    K>> return

    d =

    80

    K>> return

    >> rnek Program: ki nokta arasndaki uzakl bulan basit bir program, nce fonksiyon yapsn kullanarak sonra da ayn program bu fonksiyon yapsn bellekten a rma i lemini uygulayarak icra ettirelim : a) Fonksiyon yapsn kullanarak :

    Komut satrndan icra edilirse :

    >> f_uzaklik(2,6,3,0)

    x =

    6.0828

    ans =

    6.0828

  • 43

    b) Fonksiyon yapsn bellekten a rarak :

    Komut satrndan icra edilirse :

    >> uzaklik

    ------- Iki nokta arasindaki uzaklik -------

    1.noktanin x degerini giriniz : 2

    1.noktanin y degerini giriniz : 5

    2.noktanin x degerini giriniz : 4

    2.noktanin y degerini giriniz : 3

    x =

    2.8284

    Iki nokta arasindaki uzaklik:2.828427 D) DNG ve ARTLI FADE UYGULAMALARI : 1. ARTLI FADELER : -- if yaps : if komutunun MATLABde 3 farkl ekli mevcuttur : a) if ko ul deyim1 deyim 2 deyim_n end Ko ul do ru ise deyim1, deyim1, ... , deyim_n, ile belirtilen deyimler grubu icra edilir ve programn kontrol endi izleyen deyime geer; ko ul yanl ise bu durumda deyim1, deyim2, ..., deyim_n ile belirtilen deyimler grubu icra edilmeden kontrol endi izleyen deyime geecektir.

  • 44

    b) if ko ul deyim1 deyim 2 deyim_n else deyim_n+1 deyim_n+2 deyim_m end

    Ko ul do ru ise deyim1, deyim1, ... , deyim_n, ile belirtilen deyimler grubu icra edilir ve programn kontrol endi izleyen deyime geer; ko ul yanl ise bu durumda da sadece else i izleyen, deyim1_n+1, deyim_n+2, ... , deyim_m ile belirtilen deyimler grubu icra edilecek ve kontrol end i izleyen deyime geecektir.

    c) if ko ul1 deyim1 elseif ko ul2 deyim2 elseif ko ul3 deyim3 ... elseif ko ul_n deyim_n else deyim_n+1 end Bu yap ierisinde kontrol edilen ko ullardan herhangi biri do ru ise onunla ili kili deyim icra edilir ve kontrol end i izleyen deyime geer. Ko ullarn hepsi de yanl sa, kontrol else i izleyen deyim_n+1e geer ve bu deyim de icra edildikten sonra kontrol endi izleyen deyime geecektir. rnek Program: Kullanc tarafndan bir say istenip bu saynn pozitif, negatif veya 0 m oldu unu sorgulayan ve ekrana yazdran program a a da incelenebilir :

  • 45

    Komut satrndan icra edilirse :

    Bir sayi giriniz: 55

    Sayiniz pozitiftir...

    >> if_1

    Bir sayi giriniz: -9

    Sayiniz negatiftir...

    >> if_1

    Bir sayi giriniz: 0

    Sayiniz sifirdir... -- switch - case yaps : kiden fazla durumu kontrol etmek iin, if elseif else end yapsna alternatif olarak kullanlan bir kontrol yapsdr. fadenin de eri kontrol edilir ve buna gre farkl bir deyim veya deyimler grubu icra

    edilir. rne in, ifadenin de eri de er1 ise, deyim1 icra edilir ve kontrol endi izleyen deyime geer. fadenin de eri , de er2, de er3 ya da de er4 e e itse bu durumd deyim2 icra edilir ve

    kontol endi izleyen deyime geer. fadenin de eri, caselerle kontrol edilen de erlerden hi birine e it de ilse bu

    durumda da otherwise szc n izleyen deyim_n+1 icr edilecektir. switch(ifade) case de er1 deyim1 case de er2,de er3,de er4 deyim2 ... case de er_n deyim_n otherwise deyim_n+1 end

  • 46

    rnek Program: Haftann kanc gnnn ne oldu unu bulan basit bir program a a da incelenebilir :

    >> gun

    Haftanin kacinci gunu ? : 5

    gun =

    Cuma

    2.DNG FADELER : -- for dngs : Parametre de eri ba lang de erinden ba layarak ve her seferinde artm de eri kadar arttrlarak son de ere eri ene kadar de i tirilir. Parametrenin her de eri iin, deyim1, deyim2, deyim_n eklinde belirtilen ve for-end szckleri arasnda yer alan deyimler grubu icra edilir. Parametrenin de eri son de eri a nca, programn kontrol endi izleyen deyime yani evrimin d na kacaktr. for parametre=ba lang:artm:son_de er deyim1 deyim2 ... deyim_n end

  • 47

    rnek Program: Arka arkaya blme i lemlerinin yapld a a daki for dngs programn incelenebilir :

    Komut satrndan icra edilirse :

    0/2 = 0

    0/4 = 0

    ic cevrim sonu

    20/2 = 10

    20/4 = 5

    ic cevrim sonu

    40/2 = 20

    40/4 = 10

    ic cevrim sonu

    60/2 = 30

    60/4 = 15

    ic cevrim sonu

    80/2 = 40

    80/4 = 20

    ic cevrim sonu

    dis cevrim sonu -- while dngs : Belirli bir st snra kadar istenilen i lemleri tekrarlayarak yapar. Ko ul do ru oldu u srece, deyim1, deyim2, ... , deyim_n eklinde belirtilen deyimler grubunu icra eder. Ko ul yanl oldu u anda, endi izleyen deyime yani evrim d na kar. while ko ul deyim1 deyim2 ... deyim_n end

  • 48

    rnek Program: A=5 ilk de erinden ba layarak A

  • 49

    ALI TIRMALAR 1- Kenarlar kullanc tarafndan istenen bir genin e itkenar, ikizkenar veya e kenar gen mi oldu unu bulan MATLAB programn yaznz. 2- ax2+bx+c ikinci dereceden denkleminin kklerini bulduran MATLAB proramn yaznz.

    3- Bir otomobil, durgun halden harekete ba layarak 10 dakika boyunca hzlanyor, hz 60 km/saat oluyor. Sonra 15 dakika boyunca sabit hzla hareketine devam ediyor ve 10 dakika boyunca yava layarak hz 0 oluyor. D ardan girilen herhangi bir t annda otomobilin hzn veren bir MATLAB program yaznz. 4- Kullancdan do um gnn soran ve bu kullancn ka yl, ka ay ve ka yl ya ad n bulan bir MATLAB program yaznz.