BÖLÜM 1 : MATLAB KULLANIMI ve MATR S LEMLER Matlab program ( MATrix LABoratory 'nin ilk üç harfleri al narak isimlendirilmi tir.) mühendislik uygulamalar n n, hesaplamalar n n ve simülasyonlar n n ço unun gerçekle tirildi i matris ve matematik tabanl kompleks bir programd r. Her türlü grafiksel sonuçlar istenilen tarzda al nabildi i için kullan m alan çok geni tir. Ayr ca MATLAB versiyonlar ndan en az 6.0 ve üzeri olanlar n n kullan lmas güncellik aç s ndan daha yararl olacakt r. Bu bölümde program kullanmaya ba lamak için giri komutlar, matematiksel fonksiyonlar ve matris operatörleri anlat lacakt r. Ayr ca k lavuzun en son k sm nda da en çok kullan lan matris komutlar ve fonksiyonlar tablo halinde verilmi tir. help fonksiyon ismi komutu yaz ld nda yard m istenilen fonksiyon hakk nda detayl bilgiye ula labilmektedir. help help yaz ld nda ise on-line olarak yard m k lavuzunun nas l kullan laca hakk nda bilgilere ula labilmektedir. -- Matris Operatörleri : A a da verilen simgeler matris i lemlerinde kullan lmaktad r: + Toplama - Ç karma * Çarpma ^ Kuvvet alma Konjüge transpozunu alma -- Mant k ve li ki Operatörleri : < Küçük & Ve <= Küçük e it Veya > Büyük ~ De il ~= E it de il 2
-- Ba lang ç olarak komut sat r na : date yaz l rsa program taraf ndan geçerli olan tarih al nacakt r.yani : ans= 30-Oct-2002 -- MATLAB bir i lemin sonucunu ans=... eklinde gösterir. ( answer = cevap) -- MATLAB program ndan ç kmak için ise exit veya quit yazmak yeterli olacakt r. -- En son yaz lan komutlar n hepsine üst ve alt yön tu lar na dokunarak kolay bir ekilde ula labilir. -- En son tan mlanan herhangi bir x de eri için yap lan i lemlerden sonra bu x de eri komut sat r na yaz l p enter tu una bas l rsa daha önce neye kar l k olarak tan mland ekrana yaz lacakt r. -- nx1 veya 1xn boyutunda vektör tan mlamak için : x=[1 2 3-4 -5] veya X=[1,2,3,-4,-5] yaz lmal d r. Yukar daki iki yaz m biçiminden okuma kolayl olmas için kullan lacakt r. ilk yaz lan tip -- Tan mlanan bu sat r vektörünü sütun vektörüne dönü türmek için : y=x yaz l rsa ekranda görülen de er a a daki gibi olacakt r: y= 1 2 3-4 -5 3
-- Matris tan mlamak için a a daki A matrisi verilmi olsun : 1.2 10 15 A = 3 5.5 2 4 6.8 7 Bu matrisi MATLAB e tan tmak için u ekilde yaz lmal d r : A = [1.2 10 15 ; 3 5.5 2 ; 4 6.8 7] Yani her sat r n sonunun neresi oldu unu konulan noktal virgül i areti temsil etmektedir. -- Örnek olarak a a daki B matrisini tan tmak için : B = 1 e -0.02 2 3 B = [1 exp(-0.02); sqrt(2) 3] eklinde yaz lmal d r. Ekranda ise u ekilde gözükecektir: B = 1.0000 0.9802 1.4142 3.0000 -- Apostrofi i areti ( ) matrisin konjüge transpozesinin al nmas na yarar. E er matris reel bir matris ise basit olarak transpoze al m i lemi olarak da tan mlanabilir.. Yeni bir A matrisi tan mlayal m : A = [1 2 3 ; 4 5 6 ; 7 8 9] Ekranda görülecek matris u ekilde olacakt r : A = 1 2 3 4 5 6 7 8 9 4
Bu matrisin transpozesini almak için : C = A yaz l rsa ekranda görülecek transpoze de eri : C = 1 4 7 2 5 8 3 6 9 -- Kompleks say lar n girilmesi için ise i 2 =-1 denkleminin kökü i veya j olarak tan mlan r. Örnek olarak 1+j 3 de erini tan tmak için : X = 1+sqrt(3)*i X = 1+sqrt(3)*j veya olarak yaz lmal d r. Bu kompleks say üstel formatta da yaz labilmektedir : 1+j 3 = 2 exp[( /3)*j] Bu durumda komut sat r na a a daki ifade yaz lacalt r : x = 2 exp[pi/3)*j] i ve j daha önceden de i ken olarak kullan lm sa tan mlama için ii ve jj kullan lacakt r.yani : ii = sqrt(-1) jj = sqrt(-1) Dolay s yla a a daki yaz m da mümkün olmaktad r : X = 1+sqrt(3)*ii X = 1+sqrt(3)*jj 5
-- Kompleks matris tan mlamak için a a daki X matrisi verilmi olsun: X = 1 j -j5 2 Komut sat r na ise u ekilde girilecektir : X = [1 j ; -j5 2] Bu durumda ekranda görülecek de er : X = 1.0000+0 0+1.0000i 0-5.0000i 2.0000+0 Y = X komutu yaz l rsa : Y = 1.0000+0 0+5.0000i 0-1.0000i 2.0000+0 iletisi ekranda okunacakt r. Daha önce de belirtildi i gibi yukar daki i lem konjüge transpoze olarak alg lanmaktad r. E er sadece transpoze al nacaksa (konjügesiz) komut u ekilde yaz lmal d r : Y. veya conj(y ) Bu durumda ekranda gözükecek de erler : 1.0000+0 0-1.0000i 0+5.0000i 2.0000+0 -- Toplama ve ç karma i lemlerinin yap lmas için a a daki M ve N matrisleri verilmi olsun : 2 3 1 0 M = 4 5 N = 2 3 6 7 0 4 6
Bu de erleri ekrana girmek için: 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 için: C = M+N C = 3 3 6 8 6 11 E er x vektörü u a a daki gibi verilirse : 5 X = 4 6 Bu vektörü u ekilde tan tmak gerekir : X = [5 ; 4 ; 6] Örne in T = X-1 gibi i lemi gerçekle tirmek için : T = X-1 T = 4 3 5 7
-- Matris çarp m daha önce de belirtildi i gibi * çarpma operatörüyle yap lmaktad r. A a daki örnek incelenirse çarpman n da tan m gere i çarp lan matrislerin boyutlar n n uyu mas gerekmektedir. Aksi takdirde çarpma i lemi yap lmayacak ve hata mesaj verilecektir. x = [1 ; 2 ; 3]; y = [4 ; 5 ; 6]; A = [1 1 2 ; 3 4 0 ; 1 2 5] x *y 32 x*y 4 5 6 8 10 12 12 15 18 b = A*x b = 9 11 20 Bunlar n d nda matris bir skaler de erle de çarp labilir : 5*A 5 5 10 15 20 0 5 10 25 -- Matris üssü ( expm(a) ) nxn matrise uygulan r.matematiksel tan m ise u ekildedir: expm(a) = I + A + A 2 /2! + A 3 /3! +... E er A kompleks bir matris ise abs(a) de eri de kompleks modül de erler üzerinden hesaplanacakt r.yine matematiksel ifadesine bakacak olursak : abs(a) = sqrt(real(a).^2 + imag(a).^2) 8
angle(a) ise faz aç lar n radyan cinsinden A kompleks matrisi için hesaplamaktad r. Burada tan m de erleri ve + aras nda kabul edilmektedir. Sonuç olarak verilen bir K matrisi için a a daki uygulama incelenebilir : A = [2+2*i 1+3*i ; 4+5*i 6-i]; abs(a) 2.8284 3.1623 6.4031 6.0828 angle(a) 0.7854 1.2490 0.8961-0.1651 -- Kompleks bir say n n modülü ve faz aç s n bulmak için : z = x + iy = re i r = abs(z) theta = angle(z) z = r*exp(i*theta) -- Bir vektörün elemanlar n n teker teker karesinin al nmas i lemi u ekilde yap lmaktad r : x = [1 2 3]; x.^2 ans= 1 4 9 E er kompleks say lar mevcut ise : y = [2+5*i 3+4*i 1-i] y.^2-21.0000+20.0000i -7.0000+24.0000i 0-2.0000i 9
2x2 bir kare matris olursa yine ayn ekilde : A = [1 2 ; 3 4]; A.^2 1 4 9 16 -- Eleman elemana çarpma i lemi için çarpma operatörünün önüne bir nokta i areti (.) konmaktad r : Bir örnek daha verilirse : x = [1 2 3], y = [4 5 6] z = [x.y] z = [4 10 18] 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 tüm elemanlar n n tek tek karesini almak için : A=[ 1 2 3 4 ] A.^2 1 4 9 16 -- Eleman elemana bölme için ise : u = x./y 10
u = 0.2500 0.4000 0.4000 0.1429 1.5000 1.6000 -- Bir matrisin tersini bulmak için inv(a) komutu kullan l r : A = [0 1 0;0 0 1;-6-11 -6]; inv(a) -1.8333-1.0000-0.1667 1.0000 0 0 0 1.0000 0 -- Çe itli komutlar ve durumlar tek bir s rada virgül (,) veya noktal virgül ile (;) ayr larak yaz labilir. -- Ç k format n istedi imiz uzunlukta elde edebiliriz. E er matris elemanlar tamsay ise bu durum sonuçta bir de i iklik yapmayacakt r. Bunun için 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 11
-- 1 den 5 e kadar say lar 0.5 lik aral klarla yazd rmak istersek iki nokta y (:) kullanmak yeterli olacakt r : t = 1 2 3 4 5 t = 1:0.5:3 t = 1.0000 1.50000 2.0000 2.50000 3.0000 Düzgün azalan biçimde yazd r rsak : t = 5:-1:2 t = 5 4 3 2 -- Bir matrisin i. sat r n veya j. sütununu görüntülemek için a a da tan mlanan A matrisini komutlar yla inceleyelim : A a daki A matrisinin 2. sat r görüntülemek için : A(i, :) A = [0 1 0;0 0 1;-6-11 -6] A(2, :) 0 0 1 A matrisinin 3. sütununu görüntülemek için : A(:, 3) 0 1-6 -- Bir matrisin (i,j) ninci eleman n bulmak için : k = A(3,3) k = -6 12
-- Bir matrisin boyutlar n ö renmek için size(a) komutu, rank n bulmak için rank(a) kullan l r. A= 2 3 2 5 4 1 2 6 8 size(a) 3 3 rank(a) 3 -- Bir matrisin determinant n bulmak için det(a) komutu kullan l r. A= 2 3 2 5 4 1 2 6 8 det(a) -18 -- Bir matrisin normunu bulmak için ise norm(x) yazmak gerekmektedir. Matematiksel norm ifadesini verecek olursak : norm(x) = sum(abs(x).^2)^0.5 x = [2 3 6] norm(x) 7 13
-- Bir matrisin özde erlerini bulmak için eig(a) komutu kullan l r : A = [0 1 ; -1 0] eig(a) 0+1.0000i 0-1.0000i -- Öz vektörleri bulmak da tek sat rl k bir i lem gerektirmektedir. Asl nda özvektörleri bulmak için verilen [X,D] = eig(a) komutu ayn zamanda öz de erleri de buldu u için her iki bilgiye ayn anda ula ma imkan olmaktad r : A = [0 1 0 ; 0 0 1 ; -6-11 -6] [X,D] = eig(a) X = D = -0.5774 0.2182-0.1048 0.5774-0.4364 0.3145-0.5774 0.8729-0.9435-1.0000 0 0 0-2.0000 0 0 0-3.0000 Burada X sonuç matrisinin her bir sütunu verilen A matrisinin bir öz de erini göstermektedir. D sonuç matrisinin diyagonalindeki (kö egenindeki) elemanlar n her biri de verilen A matrisinin özde erlerini göstermektedir. Verilen e boyutlu farkl iki A ve B gibi matrisin genelle tirilmi öz de erlerini ve öz vektörlerini bulmak için ise [X,D] = eig(a,b) komutu yaz lmal d r. -- Karakteristik denklemi bulmak için poly(a) komutu kullan l r. A = [0 1 0 ; 0 0 1 ; -6-11 -6] p = poly(a) p = 1.0000 6.0000 11.0000 6.0000 14
Burada görülen sonuç katsay lar karakteristik denklemin katsay lar d r. Yani : s 3 + 6s 2 + 11s + 6 = 0 -- Bir polinomun köklerini bulmak için roots(a) komutu yaz lmal d r. Yukar daki karakteristik denklemin köklerini bulmak istersek : r = roots(p) r = -3.0000-2.0000-1.0000 -- Polinomlar n çarp m için conv(a,b) komutu kullan l r. a(s) = s 2 20.6 b(s) = s 2 + 19.6s + 151.2 a(s) ve b(s) polinomlar n çarpmak için : 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 Dolay s yla çarp m sonucu u ekilde yaz labilir : c(s) = s 4 + 19.6s 3 + 130.6s 2 403.8s 3114.7 -- Bir polinomda herhangi bir tamsay de erini hesaplatmak için polyval(c) komutu kullan l r : p(s) = 3s 2 + 2s + 1 p = [3 2 1]; polyval(p,5) 86 -- 1 ve 0 say lar n n istenilen matrisel boyutta çabuk olarak üretilebilmesi için ones(m,n) ve zeros(m,n) komutlar kullan labilir : 15
ones(2,2) 1 1 1 1 zeros(3,3) 0 0 0 0 0 0 0 0 0 -- Birim matris de eye(n) komutuyla istenilen boyutta olu turulabilir : eye(5) 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 için diag(a) komutu kullan l r : A = [1 2 3 ; 4 5 6 ; 7 8 9] ; diag(a) 1 5 9 Kö egenin elemanlar haricindeki matris bile enleri 0 olarak göstermek istersek : diag(diag(a)) 1 0 0 0 5 0 0 0 9 16
Kö egen matrisi olu turmayla alakal a a daki di er örnekler de incelenebilir : diag(1:5) 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) 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)] 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 için rand(n) komutu kullan l r.0 ile 1 aras ndaki say lar al r. rand(4) 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 17
ALI TIRMALAR 1- Sin(x) i ilk 10 terim kullanarak bulan bir Matlab program yaz n z. X aç de erinin derece olarak kullan c dan al p sin(x) i bulunuz? Sin(x) = x x 3 /3! + x 5 /5! x 7 /7! + x 9 /9!... 2- Yerden V 0 h z yla ve aç s yla f rlat lan bir bir topun t = 0,1,2,...10 saniye boyunca hareket bilgilerini veren. ema T, Vx, Vy bilgilerini her saniyede görüntüleyebilmelidir. Not1: Gerekli formüller a a da s ralanm t r.(g =10 m/s 2, Yer çekimi ivmesi) V x = V 0 cos( ) ; V y = V 0 sin( ) gt ; V = (V x 2 + V y 2 ) 1/2 Not2: Topun tüm harketi boyunca yerden yeterince yüksekte oldu unu varsay n z. 18
BÖLÜM 2 : GRAF K ve E R Ç Z MLER -- x ve y vektörleri ayn boyutta ise bu vektörleri ekrana çizdirmek için plot(x,y) komutu kullan l r. A =[ 7 2 5]; B =[ 5 4 8 ]; plot(a,b); grid Bu durumda grafik ekrana a a da gösterildi i gibi otomatik olarak çizilecektir : Ayr ca plot(x,y, x ) komutu çizilen e riyi x karakterini kullanarak çizmektedir. -- A a da grafik çizimiyle ilgili baz özellikler s ralanm t r : x=3:0.5:10 Seçilen bir parametreye göre (burada x parametresi seçilmi ) çizdirilmesi planlanan e rinin s n rlar yukar daki gibi yaz l r. 3 ve 10 de erleri çizdirilmek istenen aral, ortadaki 0.5 de eri art miktar n göstermektedir. grid Grafik arka yüzünün ölçekli olarak gösterilmesini sa lar. title(... ) Çizilen grafi e ba l k yazmak için kullan l r. xlabel(... ) Çizilen grafi in x-eksenine istenilen aç klamay yazmak için kullan l r. 19
ylabel(... ) Çizilen grafi in y-eksenine istenilen aç klamay yazmak için kullan l r. text( X,Y, text ) Grafik ekran üzerine istenilen koordinatlar dahilinde herhangi aç klama yazmak için kullan l r.. + * o x r g b w i stenildi i takdirde çizilen e rinin düz çizgi olarak de il de farkl karakterlerle çizdirilebilir. Bunlar için ise yukar da gösterilen nokta, art, y ld z, yuvarlak ve x karakterleri kullan l r. Bu karakterleri plot() komutu içerisinde + eklinde yazmak yeterli olacakt r. Çizilen e rinin rengi de yukar da gösterilen k saltmalarla de i tirilebilir. Burada r k rm z renk (red), g ye il renk (green), b mavi renk (blue), w beyaz renk (white) ve i ise (invisible) olarak k salt m t r. Not : Bu özellikler ve daha farkl görüntü özellikleri grafik ekran üzerindeki Insert ve Tools menüleri arac l yla komut sat r n kullanmadan da yap labilmektedir. -- A a daki örnekte ise y = x 2 e risini 0 ve 3 aral nda çizdirelim : x = 0:0.1:3; y = x.^2; plot(x,y, r ); title( y=x 2 egrisi ); xlabel( x ); grid; ylabel( y ) bir 20
-- Birden fazla e riyi tek bir grafik ekran üzerinde görmek için çizdirilmesi istenen e riler ayn plot(...) komutu içinde yaz lmal d r. -- 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 ) 21
-- 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') 22
-- Kompleks vektörlerin çiziminde plot(z) ifadesi kullan l r. Çizim i leminde ise reel ve imajiner k s mlar 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 ölçeklendirmeyi kullanarak X in grafi ini çizdirir 23
-- Bir A vektörünü bar grafiklerini kullanarak çizdirmek için bar(a) komutu kullan l r. Basamak fonksiyonu eklinde çizilecek ise stairs(a) komutu kullan l r. 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 ) 24
-- Ayr ca grafik ekran ndaki menülerden yararlanarak çe itli görüntü de i iklikleri yap labilir. Örnek olarak Tools menüsünde Rotate-3D seçene i kullan larak mouse yard m yla iki üstteki bar grafi inin görüntüsü a a daki gibi elde edilebilir. -- Grafik çiziminde grafik çizgi tipleri, i aretler ve renkler a a daki tabloda s ralanm t r : 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 k rm z (100) + art i areti - - kesik çizgili G ye il(010) * y ld z B mavi(001) S karekök W beyaz(111) D baklava 25
-- 3-D Line (3 Boyutlu düz çizgi) çizimi için plot3(...) komutu kullan l r.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 26
-- 3 boyutlu a ve yüzey çizimlerinde kullan lan komutlardan biri mesh(...) komutudur. Bu komut verilen giri i z bile eni olarak alg lar ve dikdörtgen x-y düzlemi üzerinde z ekseni boyunca çizim yapar. surf(...) komutu ise ayn i i yüzey olarak yapar.a a daki komut sat rlar n n çizim görüntüleri yine alt taraf nda verilmi tir. mesh(eye(10)); grid surf(eye(10)); grid 27
-- z=exp(-x2-y2) fonksiyon yüzeyini [-2,2]x[-2,2] tan m 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) -- Ayr ca view komutu yard m yla da küresel ve kartezyen koordinatlar ekranda görüntülenebilir. view 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 28
-- Örnek olarak z=x 2 +y 2 +xy yüzeyini -2<x<2 ve -2<y<2 aral nda çizdirelim : [X,Y]=meshgrid(-2:0.5:2,-2:0.5:2); Z=X.^2+Y.^2+X.*Y; mesh(x,y,z) -- Yukar daki örnekte çizim fonksiyonu olarak mesh(x,y,z) yerine surf(x,y,z) çizim fonksiyonu kullan l rsa grafik yüzeyi ayn fakat her bir karesi farkl renklere boyanm ekilde çizilecektir: surf(x,y,z) 29
-- Herhangi bir yüzey grafi inde tepe ve alt tepe (minimum ve maximum) de erlerini göstererek yap lan çizimlerde peaks(...) komutu kullan l r : [X,Y]=meshgrid(-3:0.125:3); peaks(x,y) 30
ALI TIRMALAR 1- x = t 3-2t+9, y = 6t 5 -t, z = t 2 +7 e rilerini tek bir grafik ekran nda çizdiriniz. 2- A = [ 5 8-2 6 4 0 7 ] giri verilerini bar grafik ekran nda çizdiriniz. 3- z=2x 2 +y yüzeyini, 0.2 art m de eriyle x = (-2,2) ve y = (-2,2) aral n kullanarak çizdiriniz. 4- z = e -2x +4x 3 grafi ini (2,50) aral nda çizdiriniz. 5- x=9sin(t), y = 2tan(3t) + cos(t) grafiklerini (0,10) aral nda 0.05 art mla çizdiriniz. 31
BÖLÜM 3 : MATLAB ile PROGRAMLAMA Bu bölümde MATLAB yaz l m n ba lang çta kolayl kla kullanabilmek için gerekli olan komut ve fonksiyonlar verilecektir. u ana kadar MATLAB ile yapt m z uygulamalarda, belirli bir i lemi gerçekle tirmek üzere gerekli olan komut ya da fonksiyonlar komut sat r ndan, >> sembollerinden sonra tek tek girerek icra ediyorduk. Oysa, MATLAB komut ya da fonksiyonlar ndan gerçekle tirmek istedi imiz bir i le ilgili özel bir grubu, bir dosyaya kaydederek, bu dosya isminin ça r lmas yla icra ettirebiliriz. Bir deyimler ya da komutlar grubunu içeren bu tip bir dosyaya MATLAB de M-dosyas (M-File) ad verilir. Bir komut grubu içerdi i için tan m itibariyle bir program dosyas d r. Dolay s yla programlama M-dosyalar olu turularak yap l r. -- Komut sat r na helpwin komutu girilirse veya MATLAB in Help menüsünden Help Window seçene i seçilirse kar m za gelecek yard m seçeneklerinden istenilen konu hakk nda bilgi al nabilmektedir. -- M-File Olu turma : Programlama i lemi M-File (Program Dosyas ) dosyalar nda yap l r. Bu nedenle program yazarken en çok kullan lacak olan i lem M-File olu turma i lemidir. Bunun için File menüsünden New seçilir ve daha sonra M-File seçene i seçilir. Böylece yeni bir programlama ekran elde edilir. Programlama i lemi bittikten sonra M-File dosyas n n File menüsünden Save As seçene i seçilir. Yaz lan program buradaki work çal ma dosyas n n içine istenilen isimle kaydedilir. Kaydedilen dosyalar n uzant s.m olarak kaydedilir. (Örnek: sonuc.m) stenen dosyay çal t rmak için ise komut sat r nda dosya ismini yaz p Enter tu una basmak yeterlidir. Ayr ca work menüsüne girilip oradan da çal t r labilir. lk etapta örnek olarak olu turulmu olan bo bir M-File dosyas a a da gösterilmi tir: 32
A) GENEL AMAÇLI KOMUTLAR -- workspace komutu : Çal ma esnas nda çal ma alan nda (belle in kullan c ya ayr lan k sm ) mevcut de i kenler hakk ndaki ayr nt l bilgi a a da gösterildi i gibi bir pencere içinde verilir. Pencere içindeki de i kenlerin üzerine çift t klayarak o de i kenle ilgili bilgilere ula l p de i iklikler yap labilir. -- clear komutu : Bellekte o anda mevcut bulunan de i kenleri bellekten siler. -- save komutu : M-file dosyas n n kaydedilmesi yukar da da anlat ld gibi File menüsünden yap l r. MATLAB komut sat r nda ise save komutu kullan l rsa o esnada bellekte bulunan de i kenleri, istenilen dosya ismiyle ve uzant s.mat olacak ekilde kaydedilir.(örnek: sayilar.mat) >> a=1 a = 1 >> b=2 b = 2 >> save sayilar Yukar da a ve b say lar say lar.mat dosyas olarak kaydedilmi tir. -- load komutu : Diskte sakl bir dosya içindeki de i kenleri tekrar belle e yükler. >> load sayilar >> who Your variables are: a b Yukar da sayilar dosyas load komutuyla belle e tekrar yüklenmi ve who komutuyla bu dosyan n de i kenleri görüntülenmi tir. 33
-- dir komutu : Bellekte kay tl olan dosyalar listeler. (Not: Bir program do ru olarak çal t rmak için, 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 uzant l dosyan n içeri ini komut sat r nda görüntüler. -- edit komutu : Bir M-dosyas n n içeri inde de i iklik yapma imkan sa lar. -- open komutu : Uzant s ile belirtilen dosyay açar. -- Her yaz l m türünde oldu u gibi MATLAB de de, i letim sistemi kontrolüne geçmeden i letim sisteminin görevi olan baz i lemleri gerçekle tirebilmek mümkündür. Bu tür i lemler a a daki tabloda özetlenmi tir. Komutun Ad cd dir ls delete type Komutun levi Aktif dizini de i tirir. Aktif dizinin içindekileri listeler. Aktif dizinin içindekileri listeler. Belirtilen dosyay siler. Belirtilen dosyan n içeri ini listeler. -- clc komutu : Komut sat r n tamamen siler. 34
B) DE KEN ATAMA C ve PASCAL gibi programlama dillerinde, program n ana gövdesinin olu turulmas na ba lamadan hemen önce, programdaki tüm de i kenlerin hangi tip de i ken olduklar n belirtmek ve program n bilgisayar belle inden uygun miktarda alan bu de i kenler için tahsis etmesini sa lamak gerekir. MATLAB de de i kenler, kendilerine ait bir isim ve onlara atanacak de erler yard m yla 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 bölümde temel atamalarla ilgili baz bilgiler (sabit, de i ken, matris, dizi, vektör tan mlama...) verilmi ti. -- Mant k ve li ki Operatörleri : == E ittir & and Ve ~= E it de il & and Ve < Küçük ~ not De il <= Küçük e it > Büyük >= Büyük e it -- global( ) komutu : Farkl M-dosyalar için ayn de i ken tan mlanacaksa o de i ken global(x) olarak tan mlanabilir. -- disp( ) komutu : stenen aç klamay görüntüler. >> disp('programlamaya Giris') Programlamaya Giris -- input( ) komutu : Kullan c dan klavye arac l yla programc taraf ndan girilmesi istenen de i ken istenir ve ilgili de i kene atan r. >> Yas=input('Yasinizi giriniz :') Yasinizi giriniz :23 Yas = 23 -- fprintf komutu : Bir aç klama ifadesiyle birlikte bir veya birden fazla de erin görüntülenebilmesini sa lar. >> a=231565465; >> fprintf('hesap = %d ',a) Hesap = 231565465.000000 35
Not : fprintf fonksiyonu, kompleks say lar n sadece reel k sm n gösterir. Bu nedenle kompleks say uygulamalar nda disp fonksiyonunu kullan lmal d r. fprintf fonksiyonunda kullan lan çe itli biçim tipleri a a da gösterilmi tir : %d : Virgüllü say lar 10 un kuvvetleri eklinde gösterir. %f : Kayan noktal ekilde gösterir, aksi belirtilmedikçe virgülden sonra 6 basamak gösterir. %e : Say y üstel ekilde gösterir. -- linspace ve logspace komutlar : lk de eri ve son de eri belirtilen bir diziyi lineer veya logaritmik olarak belirtilen say daki eleman kullanarak yap land r r. Belirtilen aral otomatik olarak verilen eleman say s na göre böler ve her böldü ü say y görüntüler. fonksiyon(ilk_de er, son_de er, eleman_say s ) >> 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 --Haz r fonksiyon özelliklerini kullanarak olu turulan diziler için kullan lan komutlar : zeros(n,m) : nxm boyutunda 0 lardan olu an matris üretir. ones(n,m) : nxm boyutunda 1 lerden olu an matris üretir. eye(n,m) : nxm boyutunda birim matris üretir. length(x) : x dizisinin sat r say s n verir. size(x) : x matrisinin boyutlar n (sat r ve sütun) verir. format short : lem sonuçlar n virgülden sonra 4 basamakl olarak gösterir. format long : lem sonuçlar n virgülden sonra 14 basamakl olarak gösterir. Not: MATLAB in yap s nda önceden tan mlanm baz özel sabit veya aç klama de erler : pi (Pi say s ) ; i,j (Kompleks i say s ) ; eps (Epsilon: ki say aras ndaki en küçük fark) ; Inf (Say /S f r belirsizli i ve di er belirsizlikler kar s nda üretilen tan ms zl k cevab : Infinite) 36
-- Vektör ve matrislerin tan mlanmas : >> A=[ 2 3 5 9-2 ] A = 2 3 5 9-2 3x3 boyutunda bir matrisi tan mlamak için : >> C=[3 6 9 ; 8 2 4 ; 0 8 3 ] C = 3 6 9 8 2 4 0 8 3 -- who komutu : Çal ma alan ndaki o esnada mevcut olan de i kenlerin isimlerini listeler. Ayr ca whos komutu de i kenler hakk nda daha ayr nt l bilgi verir. >> who Your variables are: A B C V -- length( ) komutu : Girilen bir vektörün uzunlu unu (eleman say s n ) görüntüler. >> A=[ 5 8 7 2 5 9 6 ] A = 5 8 7 2 5 9 6 >> length(a) 7 C) FONKS YON OLU TURMA VE D ER KOMUTLAR: -- sum( ), min( ), max( ), mean( ) komutlar : Yandaki komutlar s ras yla bir vektörün elemanlar n n toplam n, en küçük eleman n, en büyük eleman n ve ortalamas n bulur. -- function komutu : Fonksiyon tan mlamak için kullan l r. Bu özellik a a da örnek üzerinde aç klanm t r : Örnek olarak kullan c taraf ndan girilen n adet rakam n (Bu rakamlar n MATLAB de vektör formunda girilmesi gerekmektedir) ortalamas n, en küçük eleman n, en büyük eleman n ve standart sapmas n bulacak bir fonksiyonu ist(a) ad yla olu tural m : 37
Not: Herhangi bir.m dosyas penceresinde f butonuna mouse ile bir defa dokunuldu unda (yukar daki ekilde de görülmektedir) work dizini alt nda kay tl olan bütün fonksiyonlar listelenir. imdi de program komut sat r ndan icra ettirelim : >> A=[5 3 6 9 73 6 5]; >> ist(a) enk = 3 enb = 73 n = 7 ort = 15.2857 stsapma = 23.6203 15.2857 38
-- type komutu : Bir.m uzant l dosyan n içeri ini komut sat r nda görüntüler. Örnek olarak 2 say n n toplam n yapan toplam isimli basit bir program yazal m. A a da M-File görüntüsünde gösterilmi tir : MATLAB komut sat r na type toplam yaz l rsa : >> 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 gösterildi i gibi dogru.m dosyas ad alt nda yaz lm t r. Çizilmesi istenen do runun iki noktas kullan c dan istenmekte ve grafik otomatik olarak çizdirilmektedir. 39
Bu program komut sat r nda çal t r l rsa a a da gösterildi i gibi icra edilir ve grafik de otomatik olarak yine a a da gösterildi 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 yap lan genel seçimler sonucu ald klar oy oranlar n pasta grafik dilimi üzerinde gösteren grafi in çizimi program a a da gösterildi i gibi Oy.m dosyas ad alt nda yaz lm t r. Çizilmesi istenen pasta dilimi grafi i için kullan c dan bu üç partiye ait yüzdelik oy oran rakam olarak istenmekte ve grafik otomatik olarak çizdirilmektedir. 40
Bu program komut sat r nda çal t r l rsa a a da gösterildi i gibi icra edilir ve grafik de otomatik olarak yine a a da gösterildi 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 programlar n kodlar na ve içeriklerine d ar dan müdahale edebilmek için kullan l r. Böylece program n i letilmesi durdurulur, fonksiyonun kontrol edilebilmesini sa lar, de i kenler üzerinde inceleme ve de i iklik yap labilir. Bu komutun aktif oldu u K>> eklindeki özel bir komut istem sembolü ile belirtilir. Bu özellikten ç k p program n ak na devam edebilmek için, return komutu girilir ve enter tu una bas l r. Bu özellik sayesinde çal ma alan nda üretilen sonuçlara an nda ula abilmek mümkün olmaktad r. A a daki örnekte M-File ve komut icra sat rlar verilmi tir 41
Bu program komut sat r nda çal t r l rsa a a da gösterildi 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 aras ndaki uzakl bulan basit bir program, önce fonksiyon yap s n kullanarak sonra da ayn program bu fonksiyon yap s n bellekten ça rma i lemini uygulayarak icra ettirelim : a) Fonksiyon yap s n kullanarak : Komut sat r ndan icra edilirse : >> f_uzaklik(2,6,3,0) x = 6.0828 6.0828 42
b) Fonksiyon yap s n bellekten ça rarak : Komut sat r ndan 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) DÖNGÜ ve ARTLI FADE UYGULAMALARI : 1. ARTLI FADELER : -- if yap s : if komutunun MATLAB de 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 program n kontrolü end i izleyen deyime geçer; ko ul yanl ise bu durumda deyim1, deyim2,..., deyim_n ile belirtilen deyimler grubu icra edilmeden kontrol end i izleyen deyime geçecektir. 43
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 program n kontrolü end i izleyen deyime geçer; 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 geçecektir. 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 içerisinde kontrol edilen ko ullardan herhangi biri do ru ise onunla ili kili deyim icra edilir ve kontrol end i izleyen deyime geçer. Ko ullar n hepsi de yanl sa, kontrol else i izleyen deyim_n+1 e geçer ve bu deyim de icra edildikten sonra kontrol end i izleyen deyime geçecektir. Örnek Program: Kullan c taraf ndan bir say istenip bu say n n pozitif, negatif veya 0 m oldu unu sorgulayan ve ekrana yazd ran program a a da incelenebilir : 44
Komut sat r ndan 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 yap s : kiden fazla durumu kontrol etmek için, if elseif else end yap s na alternatif olarak kullan lan bir kontrol yap s d r. fadenin de eri kontrol edilir ve buna göre farkl bir deyim veya deyimler grubu icra edilir. Örne in, ifadenin de eri de er1 ise, deyim1 icra edilir ve kontrol end i izleyen deyime geçer. fadenin de eri, de er2, de er3 ya da de er4 e e itse bu durumd deyim2 icra edilir ve kontol end i izleyen deyime geçer. fadenin de eri, case lerle kontrol edilen de erlerden hiç birine e it de ilse bu durumda da otherwise sözcü ü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 45
Örnek Program: Haftan n kaç nc gününün ne oldu unu bulan basit bir program a a da incelenebilir : >> gun Haftanin kacinci gunu? : 5 gun = Cuma 2.DÖNGÜ FADELER : -- for döngüsü : Parametre de eri ba lang ç de erinden ba layarak ve her seferinde art m de eri kadar artt r larak son de ere eri ene kadar de i tirilir. Parametrenin her de eri için, deyim1, deyim2, deyim_n eklinde belirtilen ve for-end sözcükleri aras nda yer alan deyimler grubu icra edilir. Parametrenin de eri son de eri a nca, program n kontrolü end i izleyen deyime yani çevrimin d na ç kacakt r. for parametre=ba lang ç:art m:son_de er deyim1 deyim2... deyim_n end 46
Örnek Program: Arka arkaya bölme i lemlerinin yap ld a a daki for döngüsü program n incelenebilir : Komut sat r ndan 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 döngüsü : Belirli bir üst s n ra kadar istenilen i lemleri tekrarlayarak yapar. Ko ul do ru oldu u sürece, deyim1, deyim2,..., deyim_n eklinde belirtilen deyimler grubunu icra eder. Ko ul yanl oldu u anda, end i izleyen deyime yani çevrim d na ç kar. while ko ul deyim1 deyim2... deyim_n end 47
Örnek Program: A=5 ilk de erinden ba layarak A<8 oldu u sürece A ya 1 eklemek için a a daki program incelenebilir : Komut sat r ndan icra ettirilirse : A = 5 A = 6 A = 7 A = 8 48
ALI TIRMALAR 1- Kenarlar kullan c taraf ndan istenen bir üçgenin çe itkenar, ikizkenar veya e kenar üçgen mi oldu unu bulan MATLAB program n yaz n z. 2- ax 2 +bx+c ikinci dereceden denkleminin köklerini bulduran MATLAB proram n yaz n z. 3- Bir otomobil, durgun halden harekete ba layarak 10 dakika boyunca h zlan yor, h z 60 km/saat oluyor. Sonra 15 dakika boyunca sabit h zla hareketine devam ediyor ve 10 dakika boyunca yava layarak h z 0 oluyor. D ar dan girilen herhangi bir t an nda otomobilin h z n veren bir MATLAB program yaz n z. 4- Kullan c dan do um gününü soran ve bu kullan c n kaç y l, kaç ay ve kaç y l ya ad n bulan bir MATLAB program yaz n z. 49