MATLAB DA 2 BOYUTLU GRAFİK İŞLEMLERİ Ders Kitabı Bölüm 7 1 plot() Komutu MATLAB ta plot() komutu iki boyutlu bir grafik çizdirmek için kullanılır. Bu komutun en basit kullanım biçimleri, plot(x,y) plot(z) gibi olup, burada x ve y aynı boyutlu vektörlerdir. plot() komutu işletildiğinde, MATLAB figür penceresi açılır ve grafik bu pencerenin içerisinde yatay eksene x verisi, düşey eksene ise y verisi gelecek biçimde görüntülenir. Çizilen grafikte x ve y noktalarına karşılık gelen noktalar birleştirilir ve sonuçta ilgili koordinatlar birleştirilmiş olarak görüntülenir. Figür penceresinde oluşturulan grafikte eksenler doğrusal olarak skalalandırılırlar. 2 1
Grafik Özellikleri 1 plot() komutu içerisinde renk, stil, çizgi, işaretleme gibi özellikleri belirtmek üzere opsiyonel argümanlar kullanılabilir. plot(x,y, cizgi_ozellikleri, ozellik_adi,ozellik_degeri) Çizgi Özellikleri: Çizgi Stili Kesintisiz (varsayılan) Belirtici Kesintili Noktasal : Kesintili ve Noktasal. Çizgi Rengi Belirtici Çizgi Rengi Belirtici Kırmızı r Mor m Yeşil g Sarı y Mavi b Siyah k (varsayılan) Cam göbeği c Beyaz w 3 Çizgi Özellikleri (devamı): Grafik Özellikleri 2 İşaretleyici Türü Belirtici İşaretleyici Türü Belirtici İşaretleyici Türü Belirtici Toplama işareti + Çarpma işareti x 5 köşeli yıldız p Çember o Üçgen (üst) ^ 6 köşeli yıldız h Asteriks * Üçgen (alt) v Elmas d Nokta. Üçgen (sol) < Kare s Üçgen (Sağ) > Belirticiler plot() komutu içerisinde karakter dizisi olarak yazılırlar ve bu karakter dizisi içerisinde sıralama istenildiği gibi olabilir. 4 2
Grafik Özellikleri 3 Örnekler Örnek Açıklama plot(x,y) Mavi, kesintisiz çizgi ve noktalar birbirine bağlı. ğ plot(x,y, r ) Kırmızı, kesintisiz çizgi ve noktalar birbirine bağlı. plot(x,y, --y ) Sarı, kesikli çizgili ve noktalar birbirine bağlı. plot(x,y, * ) Mavi, noktalar * ile işaretli, noktalar arası bağlantı yok. plot(x,y, g:d ) Yeşil, noktalı, noktalar bağlı, elmas işaretli. 5 Grafik Özellikleri 4 Özellik adı ve özellik değeri: Özellikler isteğe bağlı olarak değiştirilebilir ve çizgi kalınlığı, işaret boyutu vb. özellikleri değiştirmek için kullanılırlar. plot() komutu içerisinde özellik adı karakter dizisi olarak yazılır ve virgülsonrası özellik değeri girilir. Örnekler: Özellik adı Açıklama Birim linewidth Çizgi genişliği point(1/72 inç) markersize İşaretçi boyutu point markeredgecolor İşaretçi rengi, eğer işaretçi dolgulu ise kenar rengi markerfacecolor Dolgulu işaretçi için dolgu rengi Ayrıca, çizgi stili, çizgi rengi ve işaretleyici türü de sırası ile linestyle, color ve marker özellik adlar ile atanabilirler. 6 3
Örnek: Grafik Özellikleri 5 Örnek plot(rand(1,20),'-mo','linewidth',2,'markersize',12,... 'markeredgecolor','g','markerfacecolor','y') 7 Örnek Bir Verinin Grafiği Yıl 1988 1989 1990 1991 1992 1993 1994 Veri 8 12 20 22 18 24 27 yil = 1988:1:1994; veri = [8,12,20,22,18,24,27]; plot(yil,veri,'--r*','linewidth',2,'markersize',12) r*' 'linewidth' 'markersize' 8 4
Örnek Bir Fonksiyonun Grafiği x = -4:0.01:4; y = 3.5.^(-0.5*x).*cos(6*x); plot(x,y) 9 fplot() Komutu MATLAB ta fplot() komutu y=f(x) şeklinde verilen bir fonksiyonun grafiğini belirlenen limitler için çizdirir. fplot( fonksiyon,limitler, cizgi_ozellikleri ) fonksiyon: Fonksiyon karakter dizisi biçiminde doğrudan yazılabilir. Örneğin, f(x)=8x+5cos(x) için 8*x+5*cos(x) yazılır. Fonksiyonun değişkeni herhangi bir karakter dizisi olabilir fakat önceden tanımlanmamış olmalıdır. limitler: Giriş değişkeni ve çıkış için (opsiyonel) fonksiyonun çizdirileceğibölgeyi belirler. Örneğin, [xmin,xmax,ymin,ymax]. Örnek: fplot( x^2+4*sin(2*x)-1,[-3,3]) 10 5
Aynı Pencerede Birden Fazla Veri Çizdirilmesi 1 Birçok durum için aynı grafik penceresinde birden fazla veri çizdirmeye ihtiyaç duyulabilir. MATLAB da, bununiçin birkaç farklı yöntem vardır. a) plot() komutu: plot(x,y,u,v,t,h) t komutu aynı grafik penceresinde x y, u v ve t h grafiklerini çizdirir. Her bir gruptaki vektörlerin boyutları aynı olmalıdır. MATLAB her bir grubu farklı renkte çizdirir ve ayrıca komut içerisinde çizgi özellikleri de belirtilebilir. Örneğin: x = -4:0.01:4; y = 3*x.^3-26*x+6; y1 = 9*x.^2-26; y2 = 18*x; plot(x,y,'-b',x,y1, '--r',x,y2,':k') 11 Aynı Pencerede Birden Fazla Veri Çizdirilmesi 2 b) hold on ve hold off komutları: hold on komutu çizdirilen ya da çizdirilmiş olan grafiğin eksen özellikleri ve formatı ile tutulmasını sağlar. Böylece birkaç farklı grafik fk üst üste çizdirilebilir. bl hold off komutu bunu durdurur ve varsayılan durumda olduğu gibiyenibirplot komutu ile eski grafik silinir. Örneğin: x = -4:0.01:4; y = 3*x.^3-26*x+6; y1 = 9*x.^2-26; y2 = 18*x; plot(x,y,'-b') hold on plot(x,y1,'--r') plot(x,y2,':k') 12 6
Grafiklerin Düzenlenmesi 1 MATLAB ta oluşturulan grafiklere eksen isimleri, grafik ismi, grafik notu, karelere ayırma, eksen aralıklarınıntanımlanması, metin etiketleri gibi özellikler deeklemek k mümkündür. Grafikler, plot() veya fplot() komutlarını takiben kullanılan komutlar vasıtası ile ya da MATLAB figür penceresinde ilgili seçimler yapılarak düzenlenebilir. İlk yöntem, plot() (veya fplot()) komutubirm dosya parçası iken oldukça kullanışlıdır ve komutherişletildiğinde ilgili düzenlemeler gerçeklenir. Diğer taraftan, figür penceresi üzerinde yapılan düzenleme görsel olarak kolaylık sağlar fakat her bir figür penceresinde yeni grafik oluşturulması ile yapılan düzenlemeler tekrar edilmelidir. 13 Grafiklerin Düzenlenmesi 2 Komutlar ile Düzenleme: plot() veya fplot() komutlarını takiben girilen komutlarla grafikler düzenlenebilir. xlabel( x-ekseni ismi ) ve ylabel( y-ekseni ismi ) komutları eksen isimlerinin yazdırılmasını sağlar. title( grafik ismi ) komutu grafik ismini konumlandırır. text(x,y, girilen metin ) komutu girilen (x,y) koordinatlarında metin kutusu oluşturur. legend( birinci veri, ikinci veri,,poz) komutu çoklu grafiklerde çizgi stili örneği ile birlikte her bir grafik için istenilen notları grafik üzerine yazdırır. Bu notlar, poz= 1,0,1,2,3,4 için sırası ile sağda grafik dışında, grafik çizgilerini kesmeyecek biçimde grafik içerisinde, grafiğin; sağ üst, sol üst, sol alt ve sağ alt köşesinde konumlandırılır. 14 7
Grafiklerin Düzenlenmesi 3 Komutlar ile Düzenleme (devamı): Düzenleme ile ayrıcafont,boyut,konum(üstkarakter,altkarakter),stil(italik,koyuvb.), karakter rengi, arka plan rengi ve diğer bazı özellikler de düzenlenebilir. Bunlardan bazıları için bilgiler aşağıda verilmiştir. Komut Özellik Komut Özellik \bf koyu metin \fontname{fontadı} kullanılacak font \it italik metin \fontsize{fontboyu font boyutu \rm normal metin tu} Bir karakter, _ veya ^ kullanılarak alt veya üst karakter olarak görüntülenebilir. Bir karakter dizisinin bu şekilde görüntülenebilmesi için {} kullanılabilir. Bazı Yunan alfabesi karakterleri ise \alpha(α), \beta(β), \gamma(γ), \theta(θ), \pi(π), \sigma(σ), \Phi(Φ), \Delta(Δ), \Gamma(Γ), \Lambda(Λ), \Omega(Ω), \Sigma(Σ) biçiminde komutlar ile oluşturulabilirler (tüm liste için bkz. MATLAB yardım). ploy(x,y) komutu işletildiğinde, grafik penceresinde oluşturulan eksen aralıkları xve y nin en küçük ve en büyük değerlerine göre değer alırlar. axis([xmin,xmax,ymin,ymax]) komutu kullanılarak eksen aralıkları istenildiği gibi düzenlenebilir. 15 Grafiklerin Düzenlenmesi 4 Komutlar ile Düzenleme (devamı): Bununla beraber axis komutu sonrasında bir boşluk ile equal, square, tight yazılarak sırası ile eksenlerin eşit aralıklı, kare grafik, eksen limitlerinin veri aralığına göre olması sağlanabilir. grid on ve grid off komutları ile grafiğin karelere bölünmesi sağlanabilir ya da bu iptal edilebilir. Örnek: x=[10:0.1:22]; y=95000./x.^2; xd=[10:2:22]; yd=[950 640 460 340 250 180 140]; plot(x,y,'-','linewidth',1.0) xlabel('distance (cm)'); ylabel('intensity (lux)'); title('\fontname{arial}light Intensity as a Function of Distance','FontSize',14); 'F tsi ' axis([8 24 0 1200]) text(14,700,'comparison between theory and experiment.','edgecolor','r','linewidth',2) hold on plot(xd,yd,'ro--','linewidth',1.0,'markersize',10) legend('theory','experiment',0) hold off 16 8
Grafiklerin Düzenlenmesi 5 Figür Penceresi Üzerinde Düzenleme: Grafikler, figür penceresi menüleri kullanılarak da düzenlenebilir. 17 Logaritmik Eksenli Grafikler MATLAB da logaritmik eksenli grafikler aşağıdaki komutlar ile oluşturulabilir ve plot() komutundaolduğu gibi tüm özellikler bu komutlarla da kullanılabilir. 1. semilogy(x,y) : y ekseni 10 tabanlı logaritmik skala ile, x ekseni doğrusal skala ile çizilir. 2. semilogx(x,y) : x ekseni 10 tabanlı logaritmik skala ile, y ekseni doğrusal skala ile çizilir. 3. loglog(x,y) : Herikieksende10tabanlı logaritmik skala ile çizilir. Örnek: 0:1 6 x 6 60 için y =2 0:2x+10 fonksiyonunun grafiğini plot, semilogx, semilogy ve loglog komutları ile ayrı ayrı çizdirelim. 18 9
Logaritmik Eksenli Grafikler Örnek 19 Diğer Grafik Türleri 1 MATLAB da çizgisel grafik harici grafikler oluşturmak da mümkündür. Bunlardan bazıları aşağıda verilmiştir. Tüm grafik türleri ve ayrıntılı özelliklerine MATLAB yardımı ile ulaşılabilinir. Düşey ş Bar Grafik bar(x,y) d1=[1988:1994]; d2=[8 12 20 22 18 24 27]; bar(d1,d2,'r') xlabel('d1') ylabel('d2') Yatay Bar Grafik barh(x,y) d1=[1988:1994]; d2=[8 12 20 22 18 24 27]; barh(d1,d2) xlabel('d1') ylabel('d2') 20 10
Diğer Grafik Türleri 2 Merdiven Grafik stairs(x,y) d1=[1988:1994]; d2=[8 12 20 22 18 24 27]; stairs(d1,d2) xlabel('d1') ylabel('d2') Dal Grafik stem(x,y) d1=[1988:1994]; d2=[8 12 20 22 18 24 27]; stem(d1,d2) d2) xlabel('d1') ylabel('d2') 21 Diğer Grafik Türleri 3 Pasta Grafik pie(x) d2=[8 12 20 22 18 24 27]; pie(d2); Histogram hist(x) d2=[8 7 9 12 20 20 21 20 18 27]; hist(d2); 22 11
Diğer Grafik Türleri 4 Kutupsal teta = Koordinat 0:0.01:6*pi; Grafikleri r = 1+5*teta/(6*pi); polar(θ,r) polar(teta,r) 23 Figür Penceresinde Birden Fazla Grafik Oluşturma Aynı figür penceresinde birden fazla sayıda grafik oluşturmak mümkündür ve bununiçin subplot() komutu kullanılır. Bu komut, subplot(m,n,p) biçiminde kullanıldığında figür penceresi mxn boyutunda alt pencerelere bölünür. p ise grafiğin ğ çizdirileceği ğ alt pencereyi belirtir. Örnek: x = -5:0.01:5; y = x.^2; subplot(3,2,1); plot(x,y); subplot(3,2,2); plot(y,x); subplot(3,2,3); plot(x,y+10); subplot(3,2,4); plot(y,x+10); subplot(3,2,5); plot(x,y-10); subplot(3,2,6); plot(y-10,x); 24 12