Net Akademi Kulübü Ücretsiz MATLAB Kursu- Ders Notları 10-16 Kasım 2002 A. Ü. Müh. Fak. 2. HAFTA DERS KONULARI AġAĞIDAKI KONULAR VERILECEKTIR 1- MAtlab programının çağrılması 2- Matlab hakkında tarihi bilgi ve genel özellikleri 3- Matlab ortamının tanıtımı a. Help ortamının tanıtımı b. Workspace c. History Genel grafik özellikleri (çok kısa) M dosyaları Değişkenler, vector, matrisler Aritmetik işlemler atama deyimleri örnekler ve dersde ödevler d. e. 45678- 1 Net Akademi Kulübü Ücretsiz MATLAB Kursu- Ders Notları a. 10-16 Kasım 2002 A. Ü. Müh. Fak. Matlab Yrd. Doç. Dr. Ömer Gündoğdu Yrd. Doç. Dr. İrfan Kaymaz MATLAB, bilim adamları ve mühendislere, Fortran ve C gibi gelenekselleĢmiĢ dillerde program yazmaksızın, matrislere dayalı problemleri çözmede kullanılmak üzere bir sayısal hesaplama kütüphanesi sunmak amacıyla, MATris LABoratuvarı (MATrix LABoratory) programı olarak tasarlanmıĢtır. Fakat daha sonra, Optimization Toolbox ve Control System Toolbox gibi bazı toolbox‟lar eklenerek geliĢtirilmiĢtir. MATLAB bir yorumlayıcıdır (interpreter); yani sonuç, daha ziyade el tipi hesap makinelerine benzer tarzda ekranda yazılı bir metin olarak alınabilir. Neticede diğer dillerde olduğu gibi “derleme”ye (compilation) ihtiyaç yoktur; fakat programlamaya izin vermesi cihetiyle de güçlü bir paket programdır. 1. Temel Bilgiler MATLAB hem yeni baĢlayanlara hem de uzmanlaĢmıĢ olanlara çok pratik bir yardım da sağlamaktadır. Özel bir komut hakkında bilgi edinmek için ekrandan “help komut adı” komutu girilir; burada “komut adı” ilgilendiğiniz MATLAB komutunu temsil eden kelimedir. Kullanıcı, belirli bir konuda hangi komutları kullanabileceğini bilmek isterse “lookfor kavram adı“ komutunu girmesi yeter. Mesela, “lookfor exponential“ yazılıp enter tuĢuna basıldığında; MATLAB her biri için kısa açıklamalarıyla birlikte üs almaya iliĢkin tüm komutları sıralar. ġayet ilave bilgi gerekliyse “help exp” komutunun girilmesi ilgili komuta ait ayrıntılı bir yardımla neticelenir. 2. Hesap Makinesi Olarak MATLAB Ekrana bir ifade yazılıp giriĢ (enter) tuĢuna basıldığında MATLAB bu komutu hemen icra eder ve sonucu komut penceresinde basar. Eğer kullanıcı özel bir komutun sonucu olan çıktıyı görmek istemiyorsa komut bittikten sonra basitçe bir “;” iĢareti, yani noktalı virgül (semicolon) koymak yeterlidir. Açıklamalar yazılmak istendiğinde bunların her satırının önüne % (yüzde) iĢareti konmalıdır. MATLAB‟taki temel aritmetik işlemler aĢağıda Tablo 1‟de artan öncelik sırasına göre özetlenmiĢtir. Tablo 1. MATLAB‟ta aritmetik iĢlemler. İşlem Sembol Misal Toplama, a+b + 2+3 Çıkarma, a-b - 5-2 Çarpma, a*b * 3*4 Bölme, a/b Üs alma, ab / ^ 14/7 2^3 © Ömer Gündoğdu, 2002, Yayın hakkı saklıdır, yazarın yazılı izni olmadan hiçbir Ģekilde basılıp çoğaltılamaz ve iktibas yapılamaz. 2 Net Akademi Kulübü Ücretsiz MATLAB Kursu- Ders Notları 10-16 Kasım 2002 A. Ü. Müh. Fak. MATLAB aynı zamanda pek çok hazır (built-in) matematik ve nümerik fonksiyonlara sahiptir. Bu fonksiyonların bazıları Tablo 1.4‟te listelenmiĢtir. Tablo 2. MATLAB‟taki hazır matematik fonksiyonlar. Fonksiyon Sembol Misal sin sin(pi) Sinüs, sin() cos cos(pi) Cosinüs, cos() tan tan(pi) Tanjant, tan() asin asin(0) Arksinüs, arcsin() acos acos(0) Arkkosinüs, arccos() atan atan(1) Arktanjant, arctan() x Eksponensiyal, e exp exp(2) Tabii logaritme log log(10) 10 tabanlı logaritma log10 log10(10) sqrt sqrt(25) Kare kök, x Mutlak değer, |x| abs abs(3) 3. Değişkenler MATLAB, kullanıcıların değiĢkenlere değer atamasına müsaade etmektedir. Böyle bir atama yapabilmek için eĢit iĢaretinin sol tarafına bir değiĢken ismi girilmelidir. AĢağıdaki misaller değiĢkenlere değer ve ifadelerin nasıl atanacağını, keza MATLAB‟ın verdiği cevapları göstermektedirler. » a = 3 , b = 2 % Virgülle ayırmak kaydıyla bir satırda birden fazla atama yapılabilir. a= 3 b= 2 »c=a+b c= 5 »d=a^b d= 9 Bir değiĢkenin değerini görmek için değiĢkenin adını girmek yeterlidir. »d d= 9 MATLAB‟ın sayısı ve çok küçük sayıları için “pi” and “eps” gibi hazır değiĢkenleri vardır. » pi ans = 3.1416 » eps ans = 2.2204e-016 3 Net Akademi Kulübü Ücretsiz MATLAB Kursu- Ders Notları 10-16 Kasım 2002 A. Ü. Müh. Fak. 4. Vektörler MATLAB‟ta vektörleri üretmek için kullanılabilen bir dizi yöntem vardır. Bunların bir kaçı burada sunulacaktır. Bir vektör oluĢturmanın yollarından biri bunun elemanlarını (bileĢenlerini) bir köĢeli parantez içinde sıralamak ve bunu bir değiĢkene eĢitlemektir. Elemanların bir virgülle ayrılması veya aralarında boĢluk bırakılması gerektiğini kaydedelim. Mesela, A=[1 2 3] Ģeklindeki bir satır vektör aĢağıda verilen yollardan biriyle gösterilebilir. » A = [1 2 3] A= 1 2 3 » A = [1,2,3] A= 1 2 3 Bir satır vektörün transpozunu almak onun elemanlarını sütun tarzında yazmaktır. Keza sütun vektörün transpozu da onun elemanları satır tarzında yazılarak elde edilir. MATLAB‟ta bir vektörün transpozunu almak için kesme (apostrof) iĢareti kullanılır. Mesela A vektörünün transpozunu almak için aĢağıdaki gibi yapılır: » A' ans = 1 2 3 Keza bir sütun vektör elemanların arası noktalı virgülle ayrılarak yahut her elemandan sonra giriĢ (enter veya return) tuĢuna basılarak da elde edilebilir. Mesela: » B = [1;2;3] % Noktalı virgül kullanılmıĢ B= 1 2 3 » Return tuĢu kullanılmaktadır » B = [1 2 3] B= 1 2 3 Elemanları sabit bir artım kadar fark eden bir vektör oluĢturmak için iki nokta üstüste yazım tarzı (Colon notation) da kullanılabilir. Bu notasyonun kullanımıyla elemanları belli bir aralıkta yer alan bir vektörün temsili onun tüm elemanlarını açık açık yazmaktan daha kolaydır. 4 Net Akademi Kulübü Ücretsiz MATLAB Kursu- Ders Notları 10-16 Kasım 2002 A. Ü. Müh. Fak. Mesela, bir A=[1 2 3 4 5 6] vektörü “elemanları 1‟den 6‟ya 1‟er artımla sıralanan bir küme” olarak aĢağıdaki tarzda ifade edilebilir: » A = 1:1:6 A= 1 2 3 % 1‟den 6‟ya 1‟er artımla baĢla! 4 5 6 Bu komutun genel biçimi X=Xmin:X:Xmax ile verilmektedir. Bu komut , X ile gösterilen elemanları Xmin den baĢlayan ve X artımlarıyla Xmax ile biten bir vektörle aynı Ģeydir. Negatif artımlar, yani azalımlara da müsaade olunmuĢtur: » B = 8:-2:0 B= 8 6 4 2 0 Artım olarak “1” kullanılacaksa, artım değerinin verilmesi gerekmez ve bu durumda birer birer artan sayılar üretilir. » A = 1:6 % Bu halde 1 artımı atlanmıĢtır. A= 1 2 3 4 5 6 MATLAB‟ta diğer faydalı bir komut “length” komutudur. Bu komutun cevabı ilgilenilen bir vektörün uzunluğu (elemanlarının sayısı) olarak döner. » a = 2:3:45; length(a) ans = 15 Toplama ve çarpma gibi cebir kuralları MATLAB‟taki vektör iĢlemlerine tatbik olunmaktadırlar; mamafih vektörler aynı boyutta olmalıdırlar. Vektörler üzerinde iĢlem yapan diğer iki mühim fonksiyon nokta (skaler) ve vektörel çarpımlardır. a ve b iki vektör olmak üzere bu iki iĢlem için genel form sırasıyla “dot(a,b)” ve “cross(a,b)”dir. Bir vektörün Ģiddeti “norm” fonksiyonuyla hesaplanabilir. » a = [1 2 3]; b = [0,1,-1]; » dot(a,b) ans = -1 » norm(a,2) ans = 3.7417 5 Net Akademi Kulübü Ücretsiz MATLAB Kursu- Ders Notları 10-16 Kasım 2002 A. Ü. Müh. Fak. 5. Matrisler Matrislere elemanları iki indisle tanımlanan iki boyutlu diziler olarak bakılabilir. MATLAB‟ta bir matrisin elemanları, bir köĢeli parantez içinde her satırı noktalı virgüllerle ayrılarak veya satır satır yazılarak girilebilir veya saklanabilir. Bir A matrisinin i ninci satır ve j ninci sütunundaki eleman A(i,j) Ģeklinde gösterilir. Mesela 2x3 lük ( yani, 2 satır and 3 sütunlu) 1 2 3 A 4 5 6 7 8 9 Ģeklindeki bir A matrisi MATLAB‟a aĢağıdaki gibi girilebilir: » A = [1 2 3;4 5 6;7 8 9] A= 1 2 3 4 5 6 7 8 9 » % Her satırdan sonra giriĢ tuĢuna basarak girmek de aynı ölçüde kolaydır. » A = [1 2 3 456 7 8 9] A= 1 2 3 4 5 6 7 8 9 » A(2,3) % Ġkinci satır ve üçüncü sütundaki eleman. ans = 6 » A(:,1) % A(:,1)deki ":" birinci sütundaki tüm elemanlar anlamına gelmektedir. ans = 1 4 7 » A(2,:) % Ġkinci satır ans = 4 5 6 MATLAB‟ta matris üretmeye yarayan ve bir kısmı aĢağıda Tablo 1.5‟te listelenen bir dizi hazır fonksiyon vardır. Tablo 3. Matris oluĢturan bazı MATLAB hazır fonksiyonları. Fonksiyon Sembol Misal Birim matris eye eye(m,n) Birler matrisi ones ones(m,n) Sıfırlar matrisi zeros zeros(m,n) Tesadüfi sayılar matrisi rand rand(m,n) 6 Net Akademi Kulübü Ücretsiz MATLAB Kursu- Ders Notları 10-16 Kasım 2002 A. Ü. Müh. Fak. MATLAB‟ta matris aritmetiği kolay ve sade bir iĢtir. Temel matris iĢlemlerinden bazıları aĢağıda Tablo 1.6‟da sıralanmıĢtır. Tablo 4. MATLAB‟ta temel matris iĢlemleri. İşlem Sembol Misal Toplama + A+B Çıkarma A-B Çarpma * A*B Eleman eleman çarpma .* A.*B Sağdan bölme / A/B (=A*B-1) Eleman eleman bölme ./ A./B (=A*B-1) Soldan bölme \ A\B (=A-1*B) Transpozunu alma ‘ A’ Burada açıkça ifade edilmemekle beraber yapılan iĢlemin anlamlı olması için, iĢleme tabi tutulan bütün niceliklerin uygun (tutarlı) boyutlarda olması gerekmektedir. Aksi halde hata meydana gelecektir. AĢağıda matris iĢlemlerine dair bazı misaller sunulmaktadır. A ve B 1 2 0 2 A ve B 3 2 1 3 Ģeklinde 2x2 lik matrisler olsun. » A = [1 2;3 -2]; B = [0 2;1 3]; » A+B % Matrislerin toplanması ans = 1 4 4 1 » A*B % Matrislerin çarpımı ans = 2 8 -2 0 » A.*B % eleman eleman çarpımın nasıl olduğuna dikkat edilsin! ans = 0 4 3 -6 » A*B' ans = 4 7 -4 -3 » A^2 % Bu bir matrisin karesini almaktır; yani A^2=A*A. ans = 7 -2 -3 10 » A.^2 % Bu eleman eleman kare almaktır. ans = 1 4 9 4 7 Net Akademi Kulübü Ücretsiz MATLAB Kursu- Ders Notları 10-16 Kasım 2002 A. Ü. Müh. Fak. » A/B % A/B=A*inv(B);inv(B) B‟nin ters matrisi demektir. ans = -0.5000 1.0000 -5.5000 3.0000 » B/A % B/A=B*inv(A) ans = 0.7500 -0.2500 1.3750 -0.1250 » A./B % Bu eleman eleman bölmedir. Warning: Divide by zero. ans = Inf 1.0000 3.0000 -0.6667 » A\B %A\B=inv(A)*B ans = 0.2500 1.2500 -0.1250 0.3750 MATLAB‟taki “eleman eleman ” iĢlemler bir çok öğrencinin zihninde karıĢıklığa yol açmaktadır. Matrislerde eleman eleman iĢleme niçin ihtiyaç duyulduğunu göstermek üzere bir parçacığın konumunun zamana göre değiĢimini belirleyen aĢağıdaki fonksiyonun oluĢturulmasını göz önüne alalım: x( t ) t 3 2t 2 3 . Burada t saniye ve x metre cinsindendir. Bu süreç MATLAB‟ta aĢağıdaki gibi gerçekleĢtirilebilir: » t=linspace(0,10,50); % “zaman” vektörünü üret » x=t^3+2*t^2+3; % Noktalar atlanmıĢ! ??? Error using ==> ^ Matrix must be square. » x=t.^3+2*t.^2+3; % Eleman eleman iĢlem için noktalar kullanılmıĢ. Ġlkin 0 -10 saniye aralığında eĢit aralıklarla yer alan 50 adet zaman noktasını eleman kabul eden bir zaman vektörü üretilir. Bilahare bu zaman değerleri vektörü yukarıdaki formül vasıtasıyla konum vektörünü oluĢturmakta kullanılır. ġayet “t^3” ve “t^2” ibareleri girilirse, MATLAB‟ın komut penceresinde “matrix must be square” (matris kare matris olmalıdır) Ģeklinde hata mesajı görülür; çünkü, mesela “t^2 = t*t” anlamına gelmekte olup gerçekte 1x50 bir matris 1x50 matrisle çarpılmak istenmektedir ki, bu tanımsızdır. Bunun yerine “t.^2” veya “t.*t” yazmak eleman eleman iĢleme sevkedecek ve problem doğru tanımlanmıĢ olacaktır. MATLAB‟ta bir matrisin determinantını hesaplama, tersini bulma gibi özel matris iĢlemlerine mahsus ve Tablo 5‟de kısmen verilen hazır fonksiyonlar da vardır Tablo 5. MATLAB‟taki Matris Fonksiyonları Fonksiyon Sembol Misal Bir matrisin determinantı det det(A) Bir matrisin tersi inv inv(A) Bir matrisin özdeğerleri ve özvektörleri eig eig(A) [v,d]=eig(A) 8 Net Akademi Kulübü Ücretsiz MATLAB Kursu- Ders Notları 10-16 Kasım 2002 A. Ü. Müh. Fak. 6. MATLAB’ta Grafik Çizme MATLAB iki ve üç boyutlu verileri istenen formatta göstermeye yarayan bir dizi fonksiyon ihtiva etmektedir. MATLAB‟ın fonksiyon çizimlerine mahsus zengin koleksiyonu, kullanıcılara bilimsel ve mühendislik uygulamalara ait çizimleri kolayca ve etkin biçimde çime imkanı sağlamaktadır. MATLAB‟ta bu amaçla yer alan komutların kısa açıklamaları için Tablo 6‟e bakılabilir. Tablo 6. MATLAB‟taki çizim fonksiyonları Fonksiyon Açıklaması Misal plot Ġki boyutlu doğru ve sembollerle çizim için plot(xdata,ydata) temel komut polar Kutupsal (polar) koordinatlardaki çizimler polar(theta,rho) plot3 Üç boyutlu (3-D) çizimler plot3(x,y,z) title Grafiğin üstüne adını yazmak için title(„my plot‟) xlabel x eksenine ait etiket xlabel(„xdata‟) ylabel y eksenine ait etiket ylabel(„ydata‟) grid Grafiği doğru ağlarıyla örer. grid subplot Grafik penceresini bölmelere ayırır. subplot(mnk) mxn Ģekil, k aktif olandır text Grafikte istenen yere bir metin yerleĢtirir. text(x,y,‟a plot‟) x and y associated to plot scale gtext ginput Grafikte istenen noktaya bir metin yerleĢtirir. Ekran üzerinde istenilen koordinatlardaki noktaları belirtmede kullanılır gtext(„my plot‟) ginput X ve y eksenlerini dıĢarıdan müdahaleyle axis([xmin,xmax,ymin,ymax]) ölçeklendirir legend Birkaç grafik birden çizildiğinde farklı legend(„name1‟,name2‟) grafikleri etiketler hold Mevcut çizimi alıkor. hold / hold on / hold off Bu komutlar ancak misaller vasıtasıyla en iyi tarzda anlaĢılacağından temel çizim özelliklerini göstermek için çeĢitli haller aĢağıda sunulmaktadır. Okuyucunun çizim ve etiketleme fonksiyonlarına aĢinalık kazanması için hem komutlar hem de bunlara karĢılık yapılan iĢler verilmiĢtir. » t=0:0.01:2*pi; » x=sin(t);y=cos(t); » plot(t,x) % t ye göre x i çizer » grid % Taksimat çizgilerini yerleĢtirir » xlabel('t') % Yatay eksene “t” etiketini koyar » hold % Çizimi alıkor; yani yeni çizim mevcutun üzerine yapılır Current plot held » plot(t,y) % t ye göre y yi çizer » ylabel('x and y') % DüĢet eksene “x ve y” yazar » title('Sine and Cosine Curves') % Grafiğe bir ad basar axis 9 Net Akademi Kulübü Ücretsiz MATLAB Kursu- Ders Notları 10-16 Kasım 2002 A. Ü. Müh. Fak. Sine and Cosine Curves 1 0.8 0.6 0.4 x and y 0.2 0 -0.2 -0.4 -0.6 -0.8 -1 0 1 2 3 4 5 6 7 t ġekil 1. Sinüs ve kosinüs eğrilerinin grafikleri Birbiri üzerine farklı eğriler çizmenin karıĢıklığa yol açması mümkündür. Aynı Ģekilde yer alan farklı çizimleri ayırt edebilmenin basit bir yolu her eğri için farklı renkler veya farklı veri noktası sembolleri kullanmaktır. Diğer bir çare kesikli çizgi gibi farklı çizgi tipleri kullanmaktır. Keza bu imkanlar da aĢağıdaki tabloda özetlenmiĢtir (Tablo 7). Tablo 7. Çizimde farklı renk ve çizgi alternatifleri. Renk ve çizgi tiplerinin kullanılması çizimlerin farklı görünmesine ve birbirlerinden ayırt edilmesine yardımcı olacaktır. ġimdi aynı çizimleri tamamen yeni bir tarzda elde edelim: » plot(t,x,'b',t,y,'k:') % Bir komutla aynı Ģekil üzerinde mavi sürekli çizgiyle x in t ye % göre ve yine siyah kesikli çizgiyle y nin t ye göre değiĢiminin çizdirilmesi 10 Net Akademi Kulübü Ücretsiz MATLAB Kursu- Ders Notları 10-16 Kasım 2002 A. Ü. Müh. Fak. » grid » xlabel('t') » ylabel('x and y') » title('Sine and Cosine Curves') » legend('Sine','Cosine') Sine and Cosine Curves 1 0.8 0.6 Sine Cosine 0.4 x and y 0.2 0 -0.2 -0.4 -0.6 -0.8 -1 0 1 2 3 4 5 6 7 t ġekil 2. Farklı çizgi tipleriyle sinüs ve kosinüs eğrilerinin bir arada çizimi 7. Düz Yazı dosyaları (Script files) Bir senaryo dosyası (script file) özel bir görevi ifa için gerekli MATLAB komutlarının saklandığı bir metin programıdır. BaĢka bir ifadeyle bir komutlar dizisi bir dosyada saklanır ve daha sonra bunları komut penceresinden tek tek girmek yerine bu dosya çalıĢtırılarak bu komutlar icra edilir. Bu dosyaların MATLAB‟ın çalıĢtığı birimde (directory) .m uzantısıyla saklanmaları gerekir. MATLAB senaryo dosyalarının oluĢturulması ve yazılması için bir metin hazırlayıcısı (text editor) sunmaktadır. Bu senaryo dosyaları Windows‟da Notepad veya Unix‟de vi-editor gibi herhangi bir metin hazırlayıcısında da yazılabilirler. MATLAB metin hazırlayıcısı ya komut penceresinin üst kısmında yer alan “New M-file” düğmesi tıklanarak veya kısaca “File” menüsünden “New/M-file” ibaresini seçerek etkin hale getirilebilir. Misal olarak ArĢimet spiralinin çizmek üzere küçük bir dosya oluĢturulmuĢ ve “Archimedes.m” adıyla saklanmıĢtır. Bu dosya aĢağıda verilmektedir. % Bu, Arşimet spirlini çizen bir M-dosyasıdır (m-file’dır) % (Rho=c*theta burada c>0) [0,2*pi] aralığında % c=1 kabul edelim theta=linspace(0,2*pi,100); % [0,2*pi]aralığında 100 nokta üretir c=1; Rho=c*theta; polar(theta,Rho,'k') 11 Net Akademi Kulübü Ücretsiz MATLAB Kursu- Ders Notları 10-16 Kasım 2002 A. Ü. Müh. Fak. Bu M-dosyasının adı komut penceresinde uzantısız biçimde yazılır (yani: >> Archimedes) ve enter tuĢuna basılırsa aĢağıdaki grafik elde olunur: 90 8 120 60 6 4 150 30 2 180 0 210 330 240 300 270 ġekil 3. Polar koordinatlarda ArĢimet spirali. 8. Fonksiyonlar (Functions) Kullanıcılar kendi fonksiyonlarını yazmak için M-dosyalarından yararlanmak da isteyebilirler. Aslında, MATLAB fonksiyonları Mathworks tarafından yazılmıĢ bir takım senaryo dosyalarıdır. Senaryo dosyalarıyla (script files) fonksiyonları (functions) tanımlayan M-dosyaları arasındaki farklardan biri fonksiyon dosyalarının baĢlangıçlarında “function” ibaresini ihtiva etmeleridir. Bu ibare, mesela giriĢ ve çıkıĢ parametrelerinin ne olacağı gibi, fonksiyonun formatını tanımlamaktadır. Dolayısıyla biri giriĢ (input), diğeri çıkıĢ (output) olmak üzere iki parametre listesine sahiptirler.Bir fonksiyon dosyası daha ilk satırında aĢağıdaki biçimde bir ifade ihtiva etmelidir: “function [çıkış parametreleri listesi]= fonksiyon-adı(giriş parametreleri listesi)” Buradaki fonksion-adı M-dosyasına verilen isimle aynı olmalıdır. Mesela “rad2deg” adında bir fonksiyon oluĢturulmuĢsa M-dosyasının adı “rad2deg.m” olmalıdır. GiriĢ ve çıkıĢ parametreleri skalerler, vektörler ve/veya çok indisli diziler olabilir. Fonksiyon dosyalarında kullanılan değiĢkenler senaryo dosyalarda kullanılan global değiĢkenlerin aksine lokal niteliktedirler. Mamafih bu dahili fonksiyon değiĢkenleri global olarak tanımlanabilirler. Fonksiyonlardaki ilave bir kısıtlama da açıklama satırlarının “function” sözcüğüyle baĢlayan birinci satırdan sonra önlerine birer % iĢareti konarak yazılmak zorunda olmasıdır. Misal olarak aĢağıda verilen program radyan cinsinden verilen bir açıyı dereceye çeviren bir fonksiyonu teĢkil etmektedir. Bu M-dosyası is “rad2deg.m” olarak saklanmaktadır. function [deg]=rad2deg(rad) % rad2deg(rad) radyan cinsinden verilen bir açıyı dereceye çevirir. rad*180/pi 12 Net Akademi Kulübü Ücretsiz MATLAB Kursu- Ders Notları 10-16 Kasım 2002 A. Ü. Müh. Fak. Mesela /2 radyanlık bir açı dereceye çevrilmek istenirse komut rad2deg(pi/2) yazılarak girilir. Neticede sonuç aĢağıdaki gibi olacaktır: » rad2deg(pi/2) ans = 90 penceresinde 9. MATLAB ile Programlama MATLAB, FORTRAN and C gibi diğer programlama dillerindekine benzer bazı temel programlama yapıları sunmaktadır. Bu yapılar kullanıcıların, iliĢki ve mantık iĢlemcileriyle birlikte döngüler ve Ģart ifadeleri oluĢturmasına izin verir ki, bunların mühendislik hesaplamalarında geniĢ uygulama alanı vardır. MATLAB‟ın sağladığı tekrarlı ve Ģartlı kontrol yapılarına kısa bir bakıĢ aĢağıda verilmiĢtir: For Döngüleri (For-loops) Bir ifadeyi mükerreren icra etme yollarından biri MATLAB‟ın sağladığı for-döngüsü yapısını kullanmaktır. Bunun sentaksı for döngü_değişkeni=döngü_ifadesi deyimler end olarak verilmektedir. Burada “döngü_değişkeni” bir değiĢkene verilen uygun bir addır ve “döngü_ifadesi” genel olarak kullanılacak indis değiĢkenine iĢaret eder. (mesela sayaç baĢlangıç değeri, artım ve ulĢıldıktan sonra “for döngüsü”nden çıkılacak olan sayaç(indis=index) değeri, i=başlangıç değeri:artım:bitiş değeri gibi). Bu yapıya , 1 den n ye kadar tam sayıların toplamını hesaplayan (sum1.m) adlı aĢağıdaki program misal verilebilir: function [sum]=sum1(n) % 1 den verilen bir n ye kadar tamsayıların toplamını %hesaplayan (sum1.m) programı sum=0; for i=1:n % 1 en n ye 1 er artımla değişen i indisi % üzerinde for döngüsü sum=sum+i; end 1 den 15 e kadar tamsayıların toplamı bu takdirde komut penceresinde sum1(15) ifadesi girilerek aĢağıdaki gibi elde edilebilir: » sum1(15) ans = 120 Tekrarlı deyimleri elde etmenin bir baĢka yolu “while” deyimini kullanmaktır. Bu durumda önceden verilen bir Ģart sağlanmadığı sürece bir iterasyon süreci devam eder. while cümlesi while şart deyimler 13 Net Akademi Kulübü Ücretsiz MATLAB Kursu- Ders Notları 10-16 Kasım 2002 A. Ü. Müh. Fak. end Ģeklinde bir yapıya sahiptir. Mesela, yukarıdaki (sum1.m) fonksiyonunu while deyimiyle yeniden yazmak mümkündür: function [sum]=sum2(n) % 1 den verilen bir n ye kadar tamsayıların toplamını % hesaplamaya mahsus(sum2.m) programı sum=0; i=0; while i <= n sum=sum+i; i=i+1; end Bu program komut penceresinde aynı tarzda icra edildiğinde aynı sonuç elde olunur. » sum1(15)-sum2(15) ans = 0 Şart Deyimleri Bütün programlama dillerinin en hayati özelliklerinden biri deyimlerin muayyen Ģartlara tabi tutularak icra edildikleri dallanmalardır. MATLAB aĢağıdaki genel Ģekilleri haiz “if deyimleri”ni kullanmaktadır: If şart deyimler end veya alternatif olarak if şart deyimler else deyimler end veya ikinci bir alternatif de if şart deyimler elseif şart deyimler end AĢağıdaki misal, a, b, ve c sabitleri verilmiĢ olmak kaydıyla ax 2 bx c 0 Ģeklinde bir ikinci derece denklemini köklerini bulmak için Ģart deyimleriyle kurulmuĢ bir programdır: 14 Net Akademi Kulübü Ücretsiz MATLAB Kursu- Ders Notları 10-16 Kasım 2002 A. Ü. Müh. Fak. function [kokler]=quadrt(a,b,c); % a, b, ve c sabitleri verildiğinde a^2+bx+c=0 denkleminin köklerini % bulan program d=b^2-4*a*c; if d==0 kokler=-b/(2*a); disp('katlı kok:') disp(kokler) elseif d>0 kokler=[-b-sqrt(d),-b+sqrt(d)]./(2*a); disp('iki farklı kok:') disp(kokler) else kokler=[-b-i*sqrt(abs(d)),-b+i*sqrt(abs(d))]./(2*a); disp('iki kompleks kok:') disp(kokler) end Bu program kökleri bulur ve komut penceresinde basar. Genel olarak programlarda iç içe döngüler ve Ģart deyimleri kullanmak mümkündür. 15