MATLAB İLE PROGRAMLAMAYA GİRİŞ Nedim TUTKUN Elektrik Elektronik Mühendisliği Bölümü nedimtutkun@gmail.com 1
5. Hafta Ders İçeriği Çizgi ve Yüzey Grafik Çizimleri
plot Komutu plot (x,y) iki boyutlu grafik çiziminde kullanılır. Bu komut ile x değişkenini y değişkenine karşı gösteren bir grafik oluşturur. Eğer x ve y matris şeklinde veriler ise, bu durumda plot komutunun yapacağı iş önce ilk sütunları karşılaştırmalı çizmek ve sonra bu durumu her bir sütun için tekrar etmektir. Grafiğini çizeceğimiz x ve y matrislerinin boyutları eşit olmalıdır. Aksi taktirde matlab boyut uyuşmazlığı hatası vereceği unutulmamalıdır. 3
Örnek: u(t) = 2Sin(ωt) sinyalini 0.01 adımlarla, 0 ile 10 sn zaman dilimi için çiziniz? Not: ω = 1 0.01 artışlar ile 0 10 sn zaman diliminin tanımlanması Grafiğin y eksenini oluşturacak u(t) sinyalinin tanımlanması Grafiğin çizdirilmesi 4
Grafiklere ve Eksenlere İsim Verilmesi Çizdirilen grafiklerin daha anlamlı olması için, grafiklere başlık ve x ile y eksenine de isim verilmesi gerekir. title ( ' Grafiğin başlığı ' ) xlabel ( ' x ekseninin etiketi ' ) ylabel ( ' y ekseninin etiketi ) 5
Önceki örnek çizdirilen grafik üzerinde isim verilmesi: 6
Grafiklere ve Eksenlere İsim Verilmesi Grafik içinde herhangi bir yere metin eklemek için, text(x,y, yazılacak metin ) komutunu kullabiliriz. x ve y metinin yazılacağı koordinatları göstermektedir. Koordinat girmeden yazılmak isteniyorsa, gtext( yazılacak metin ) komutu ile grafik çizildikten sonra fare ile metnin yeri belirlenebilir. 7
Grafik Başlık ve Eksen İsimlerinin Boyutlandırılması Bazı durumlarda eksen ve başlık isimlerinin daha koyu yazdırılması istenebilir. Bu durumda yazının büyüklük ayarı değiştirilmelidir. fontsize ( ' istenen punto ) 8
Çizgi Kalınlığının Değiştirilmesi Grafiğimizin daha belirgin olması için 'linewidth komutu ile grafik çizgimizin kalınlığını ayarlayabiliriz. plot(t,u,'linewidth',3) %Çizgi kalınlığını 3 yapacaktır. 9
Çizgi Kalınlığının Değiştirilmesi plot komutu grafikleri düz çizgi ile çizer. Farklı türde, renkte, veya işaretlerle grafik çizilmek isteniyorsa, istenilenler plot komutu içirisinde yazılmalıdır. plot(x,y, 'ab', 'linewidth,3) x: x eksenine ait vektör y: y eksenine ait vektör a: çizimde kullanılacak çizgi/işaret/renk tanımlaması b: çizimde kullanılacak çizgi/işaret/renk tanımlaması 10
Grafik Çizgi-İşaret Stillerinin Değiştirilmesi plot komutu ile grafikler düz çizgi tarzındadır. Farklı türde çizgi ve işarete sahip grafik çizdirmek için plot(x,y, c ) komutu kullanılmalıdır. Çizimde kullanılacak çizgi/renk tanımlaması y eksenine ait vektörel ifade x eksenine ait vektörel ifade Çizgi Çeşidi MATLAB de karşılığı Düz çizgi - İki noktalı : Kesikli çizgi -- Kesikli noktalı -. 11
Kullanılan İşaretler Birden fazla çizim aynı eksen üzerinde çizdirilmek istenirse birbirine karışmaması için çeşitli yöntemler kullanılabilir. Bunlardan bir tanesi çizgi şeklinin değiştirilmesidir. Diğer yöntem ise çizgilerin renklerinin değiştirilmesidir. Renk Koyu mavi Mor-kırmızı Sarı Kırmızı Yeşil Mavi Beyaz Siyah «MATLAB de karşılığı c m y r g b w k 12
Δ Grafik çiziminde nokta gösterimleri Sembol MATLAB de karşılığı. o x + + * * s d v ^ < > p Δ Δ Δ 13
Örnek: plot komutu ile kesik çizgili ve daire işaretlerine sahip grafik çizimi. 14
15 Figure penceresindeki Edit sekmesinden de grafik özellikleri ile ilgili ayarlamalar yapılabilir.
Örnek t = -5:0.1:5; y = sin(2*t); plot(t,y,'-.r','linewidth',3) title ( ' y(t) = sin2t fonksiyonunun [-5 5] aralığındaki değişimi ','fontsize', [14] ) xlabel ( ' zaman (s) ','fontsize', [14] ) ylabel ( ' y(t) ','fontsize', [14] ) legend('sin2t') text(-1.8,0.75,'sin2t grafiği','fontsize', [14]) axis([-4.5 4.5-1.2 1.2]) grid 16
17
«Tek pencerede birden fazla grafik çizimi: Tek bir figure içerisinde farklı özelliklere sahip birden fazla grafik çizdirilmesi istenirse, plot(x1,y1, c1,x2,y2, c2,, xn,yn, cn ) 1. grafiğe ait çizgi ve renk çeşidi 1. grafiğe ait vektörel ifadeler 2. grafiğe ait çizgi ve renk çeşidi 2. grafiğe ait vektörel ifadeler n inci grafiğe ait çizgi ve renk çeşidi n inci grafiğe ait vektörel ifadeler 18
Örnek: Aşağıda belirtilen işlemleri bir m.file içerisinde yapınız. u1(t)= 10sin(ωt) ve u2(t)= 7cos(ωt) iki ayrı sinyali tanımlayınız. ω= 2 rad/sn Sinyallerin iki (2) periyotluk değişimlerini tek bir grafik üzerinde karşılaştırınız. % Grafik çiziminde kullanılacak u1(t) ve u2(t) sinyallerinin 2*T ye göre tanımlanması w = 2; T = 2*pi/w; t = linspace(0,2*t); u1 = 10*sin(w*t); u2 = 7*cos(w*t); % Grafik çiziminin tek plot komutu ile gerçekleştirilmesi plot(t,u1,'-b',t,u2, '-.r', 'linewidth',3) % Grafik üzerinde eksen açıklamalarının yapılması xlabel ('Zaman (s)','fontsize',14) ylabel('u_1(t) ve u_2(t)','fontsize',14) title('u_1(t) ve u_2(t) sinyallerinin 2T zaman dilimindeki değişimi','fontsize',14) 19
20
Figures Penceresinde Mevcut Eğriye Yeni Eğriler Eklenmesi MATLAB de hold komutu kullanılarak mevcut eğriye (aynı pencere içinde) yeni eğriler eklenebilir. Komut hold on hold off grid on grid off grid Açıklama Mevcut olan eğrileri tutarak yeni çizim komutları ile çizilecek yeni eğrileri aynı eksen takımına ilave eder. Eğer ilave edilecek yeni eğrilerin eksen boyutları etkisi ile uyumsuz ise eksen takımı otomatik olarak yeniden boyutlandırılır. Eski eğrileri korumadan en son çizdirilen eğriyi muhafaza eder. hold on komutunun uygulanışını iptal eder. Mevcut çizim ekranını ızgara şeklindeki ekrana dönüştürür. Izgara ekranını iptal ederek ilk (default) şekline geri döndürür. Eğer ortamda grid on geçerli ise bunu grid off a, grid off geçerli ise grid on a dönüştürür. 21
hold on komutu ile tek bir figürde birden fazla grafik çizimi Önceki örnekte elde edilen çizimi sıra ile elde ederek tek bir grafikte gösterelim. İlk önce u1(t) sinyali çizdirilir. hold on komutu çizdirilmiş grafiğin figür penceresinde tutulmasını sağlar. hold on komutu kullanıldıktan sonra çizdirilen grafik aynı figüre eklenir. hold on komutunu iptal etmek için hold off kullanılır. 22
Örnek 23
Aynı pencerede birden fazla grafik çizimi: Aynı pencerede birden fazla grafiği ayrı ayrı görmek istiyorsak, pencereyi parçalara bölmek ve çizeceğimiz grafiği, hangi parçaya çizdirmek istediğimizi belirtmemiz gerekir. Bunun için kullanılan komut subplot komutudur. subplot ( a, b, c) a: satır sayısı b: sütun sayısı c: çizimin yapılacağı parça numarası 24
Örnek t = -5:0.1:5; y = sin(2*t); subplot (2,2,2) plot(t,y,'-.r','linewidth',3) title ( ' y(t) = sin2t fonksiyonu ') xlabel ( ' zaman (s) ') ylabel ( ' y(t) ') legend('sin2t') text(-1.8,0.75,'sin2t grafiği') axis([-4.5 4.5-1.2 1.2]) grid 25
fplot komutu Bir fonksiyona ait grafiğin tanımlanan sınır değerlerine göre (x1 ve x2 aralığında) çizimini yapar. fplot ( F, [x1, x2]) F: sembolik olarak fonksiyonun tanımlanması x1: x ekseninde istenen ilk sınır değeri x2: x ekseninde istenen son sınır değeri 26
Plot komutunda olduğu gibi fplot komutunda çizgi çeşidi ve rengi değiştirilebilir. Ayrıca tanımlanan x1 ve x2 aralığındaki örnekleme adedinin tanımlanacak bir tolerans değeri ile değiştirilmesine imkan tanır. fplot( F,[x1x2],tol, çri ) çri: Çizgi çeşidi, rengi ve işaretleme çeşidi tol: Tanımlanan tolerans değeri 27
Örnek F x = x 3 + 2x + 1 fonksiyonuna ait 0-5 sn aralığındaki değişimini düz çizgili, kırmızı renkli ve kare işaretli olarak çizdiren programı yazınız? 28
ezplot komutu fplot komutu gibi bir fonksiyona ait grafiğin tanımlanan sınır değerlerine göre (x1 ve x2 aralığında) çizimini yapar. ezplot ( F, x1,x2) F: sembolik olarak fonksiyonun tanımlanması x1: x ekseninde istenen ilk sınır değeri x2: x ekseninde istenen son sınır değeri 29
fplot un kullanımından farklı olarak fonksiyonda kullanılan sembol syms komutu ile önceden tanımlanabilir. syms fonksiyondaki değişkene ait sembolik ifade ezplot( F,x1,x2) veya ezplot( F,[x1x2]) 30
Örnek F x = x 3 + 2x + 1 fonksiyonuna ait 0-5 sn aralığındaki değişimini çizdiren programı yazınız? 31
axis komutu ile eksen ölçeklendirme Grafiğe ait eksen ölçeklendirmesini istenilen değerlere göre yeniden düzenler. axis ( [xmin xmak ymin ymak] ) ymak: y ekseninin maksimum sınır değeri ymin: y ekseninin minimum sınır değeri xmak: x ekseninin maksimum sınır değeri xmin: x ekseninin minimum sınır değeri 32
Örnek: u(t) = 2Sin(ωt) sinyalini 0.01 adımlarla, 0 ile 10 sn zaman dilimi için çiziniz? Not: ω = 1 33
Ardından grafiğin x eksenini 0-12, y eksenini ise -3 ile +3 olarak yeniden ölçeklendiriniz. 34
legend Komutu Tanımlanan konuma göre figür penceresi üzerinde bir kutu açarak çizim sırasına göre ilgili grafiklerde kullanılan çizim şekli ve rengi göstererek açıklama yazılmasını sağlar. legend ( açıklama 1, açıklama 2, konum) açıklama 1: 1. grafiğe ait açıklama açıklama 2: 2. grafiğe ait açıklama konum: figüre penceresindeki konum 35
Konum tanımlaması Açıklama kutusunun konumu 0 Grafik penceresine otomatik olarak yerleştirilir Konumu belirten sayısal değerler 1 Grafik penceresinin sağ üst köşesine yerleştirilir 2 Grafik penceresinin sol üst köşesine yerleştirilir 3 3 Grafik penceresinin sol alt köşesine yerleştirilir 4 Grafik penceresinin sağ alt köşesine yerleştirilir -1 1 Grafik penceresinin dışında sağ üst köşeye yerleştirilir 36
Örnek: 37
ginput komutu Grafik üzerinde fare vasıtasıyla belirtilen nokta veya noktaların koordinatlarını komut penceresinde sayısal olarak elde etmeyi sağlar. Bu komutun kullanılabilmesi için figür penceresinin açık olması gerekir. Komutun kullanımı ile figür penceresi üzerinde farenin hareketine görekonum değiştiren eksenlere paralel iki adet doğru parçası görünür. Doğru parçalarının kesişim noktaları istenilen pozisyona getirildiğinde fare vasıtasıyla tıklandığı zaman o noktaya ait koordinatların komut penceresinde sayısal olarak ortaya çıkar. ginput(n) 38 n: grafik üzerinde işaretlenecek nokta sayısı
Örnek: 39
Karmaşık Bir Sayının Kartezyen Koordinatlarda Çizimi 40
pie komutu pie(x) x: pasta grafikteki her bir dilime ait yüzdeyi içeren matris 41
Grafiklere Sembol Ekleme 42
43
Yararlanılan Kaynaklar C. Bayılmış, Sayısal Analiz, Ders Notları, Sakarya. M. A. Üstüner, Matlab da 2-boyutlu Grafik Çizimi, Ders Notları, Manisa, 2017. İ. Kaymaz, Bilgisayar Programlama MATLAB, Ders Notları, Erzurum, 2010. B. R. Hunt, R. L. Lipsman, J. M. Rosenberg, A Guide to MATLAB for Beginners and Experienced Users. U. Arifoğlu, MATLAB 9.1 Simulink ve Mühendislik Uygulamaları, 1. baskı, 2016. M. Coşar, MATLAB, Ders Notları, Çorum. A. Dumlu, Bilgisayar Programlama, Ders Notları, Erzurum. 44