Grafik Çizme 2 (PLOT)

DERS 6 : GRAFİK ÇİZME 2 (PLOT)

Bir Figürde Birden Çok Ayrı Grafik Çizimleri :

subplot  komutu bir grafik ekranında bölünmüş halde mxn boyutunda matris boyutunda grafik çizilmesine izin verir.
subplot(m,n,p)                burada mxn boyutunda grafik ekranı çıkar ve,p ise kaçıncı grafiği çizdirdiğimizdir. p ise aşağıdaki tablodaki gibi numaralandırılır.



x = 0:pi/20:2*pi;
subplot(2,1,1)
plot(x,sin(x))
subplot(2,1,2)
plot(x,sin(2*x))

Yukarıdaki örnekte,ilk olarak 2x1 boyutunda grafik ekranı açar ve subplot(2,1,1)  komutu ile p=1,yani (1,1) elemanına açar. P=2 olduğunda ise,(2,1) elemanına çizer.

 
x ve y eksenlerinin labelleri ve başlıkları her grafik için ayrı olarak eklenir.

ÖRNEK 1 : y(t) = cos(2t) ve 2y(t),3y(t),10y(t) grafiklerini aynı figürde çiziniz.
Grafiklerin eksen ayarlamalarını da yapabilirsiniz.(help axis)
  
ÖRNEK 2 : (MATLAB for Engineers by Holly Moore, Third Edition, and published by Prentice Hall)

i.                     Figür açıp,2 satır ve 1 sütuna bölün.
ii.                   Üstteki ekrana, y = tan(x) grafiğini -1.5 £ t £ 1.5 aralığı için çiziniz.
iii.                  Başlık ve eksenleri isimlendiriniz.
iv.                 Alttaki ekrana, y = sinh(x) grafiğini aynı aralık için çiziniz.
v.                   Başlık ve eksenleri isimlendiriniz.
vi.                 Aynı problemi,figürü yatay bölmek yerine,dikey bölerek tekrarlayınız.

LOGARİTMİK ve POLAR GRAFİKLER :

Logaritmik ve yarı-logaritmik(semi-logarithmic) grafikler loglog,semilogx ve semilogy kullanılarak elde edilebilir.

loglog(x,y) = = > log10(x) ve log10(y) eksenleri ile grafik oluşturur.
semilogx(x,y) = = > log10(x) ve y eksenleri ile grafik çizer.
semilogx(x,y) = = > x  ve log10(y) eksenlerini kullanarak grafik çizer.

*** logaritmada 0(sıfır) ve negatif sayılar yoktur. semi-log ve log-log eksenleri 0 ve egatif sayıları içermez.

ÖRNEK 3 : Aşağıda bir amplifier’ın frekans(frequency) ,kazanç(gain) verileri verilmiştir.frekans-kazanç grafiğini frekansını logaritmik ölçekte ve kazanç değerlerini ise lineer ölçekte çiziniz. (JOHN O. ATTIA, ELECTRONICS and CIRCUIT ANALYSIS using MATLAB)

  

1.çözüm : MATLAB script dosyasına verileri vektör olarak girip çizdirebiliriz.

f = [20 40 80 100 120 2000 5000 8000 10000 ...
12000 15000 20000];
g = [ 5 10 30 32 34 34 34 34 32 30 10 5];
semilogx(f, g)
title('Amplifier frekans-kazanç')
xlabel('frekans (Hz)')
ylabel('kazanç (dB)')
text(100,16,'frequency-gain')
grid on



2.çözüm : Grafik çizdirmekte değişiklik değil,verileri MATLAB’a aktarma yönteminde değişiklik 
yapacağız.Daha açık belirtirsek verileri Excel’e girip,MATLAB’den ihraç(import) edeceğiz.


Verileri girdikten sonra Excel dosyasını kaydetip,kapatabiliriz.


MATLAB’den Import Data seçeneğini seçiyoruz.Ardından kaydettiğiniz,Excel dosyasını seçip 
onaylıyoruz.

    

İstediğimiz verileri alıp ,Import seçeneğini seçiyoruz.Workspace ekranına bakarsanız,10x2 lik bir matris kaydedilmiş olması gerekiyor.Bu matris “untitled” olsun.

untitled(: , 1) = => bütün satırlar ve 1.sütun,frekans(frequency)
untitled(: , 2) = => bütün satırlar ve 2.sütun yani kazanç(gain)

İsterseniz “untitled” matrisinizin adını değiştirebilirsiniz.Eğer dikkat ederseniz 1.çözümde,data olarak tablo dışında iki veri daha girmiştik,şimdi onları halletmemiz gerekiyor.

frequency = untitled(: , 1);
gain = untitled(: , 2);

Yukarıdaki atamayı yaptıktan sonra iki veri daha girmemiz gerekiyor.Bu verileri 1.çözümle aynı yapıyoruz.1.çözümdeki kodda tablo dışında f ve g için 2 tane daha veri girilmişti,aslında tabloda vermediği için girmeyebilirdik.

f = [frequency ;15000; 20000];
g = [gain ;10; 5];

f ve g bilgilerini sütun vektörü olduğundan dolayı, (;) kullanarak girdik.

frequency = untitled(: , 1);
gain = untitled(: , 2);
f = [frequency ;15000; 20000];
g = [gain ;10; 5];
semilogx(f, g)
title('Amplifier frekans-kazanç')
xlabel('frekans (Hz)')
ylabel('kazanç (dB)')
text(100,16,'frequency-gain')
grid on


 
  
Polar grafiklerde,açı ,büyüklük grafiği çizeriz.Daha doğrusu polar formda grafik çizmek için açı ve büyüklük gereklidir.

polar(theta,rho) komutunu kullanmamız gereklidir.

Burada theta ve rho MATLAB’de vektör olarak girilmelidir.theta radyan türünden açı ve rho ise büyüklük değeridir.

ÖRNEK 4 : y = sin(x) grafiğini polar formda çizelim.

x = 0:pi/100:pi;
y = sin(x);
polar(x,y)

burada x açı değeri ve y ise büyüklüktür.
 ÖRNEK 5 : z bir karmaşık(komplex) sayıdır ve z = rejq . Bu karmaşık sayının n.(n’inci) kuvveti
zn = rnejnq olarak veriliyor.Eğer r = 1.2, ve q = 10 derece,bu sayıyı polar formda ve n=1 den n= 36 ‘ya kadar çiziniz. (JOHN O. ATTIA, ELECTRONICS and CIRCUIT ANALYSIS using MATLAB)

%z nin polar formdaki hali
r = 1.2;
%theta radyan türünden yazılmuştır.
theta = 10*pi/180;
%açı ve büyüklüğü tanımlamak için
% büyüklük = r^n
%açı = 0'dan 36theta'ya kadar(vektör olması için)
angle = 0:theta:36*theta;

%büyüklükte r^n ifadesinde,n değeri için (angle/theta)
%değerini kullanırsak 0'dan 3'ya kadar sayıları elde ederiz.
mag = r.^(angle/theta);
%grafik çizimi(polar form)
polar(angle,mag)
grid
title('Polar Plot')




 

ÖRNEK 6 : q = 0’dan 2p’ye artış değeri 0.01p olan açı için dizi tanımlayın ve r = 5cos(4q).
q,r polar grafiği çiziniz.


ÖRNEK 7 : Yeni figür oluştur.q ,0’dan 2p’ye artış değeri 0.01p olan açı ve                                                                       r = sqrt(5^2cos(2theta)) grafiğini polar formda çiziniz.


ÖRNEK 8 : Yeni figür aç.Açı aralığını theta _ pi>2:4>5*pi:4.5pi;  olarak ayarla. r(büyüklük) değerini ise,altı elemanlı 1’lerden oluşan dizi olarak oluştur.Ardından theta,r polar grafiğini çiziniz.


(Örnek 6,7,8 in kaynağı : MATLAB for Engineers by Holly Moore, Third Edition, and published by Prentice Hall)

İKİ Y EKSENİ ile X-Y GRAFİĞİ ÇİZİMİ :

Bazen aynı pencerede iki farklı grafik çizdirmek kullanışlı olabiliyor ve bunu hold on ile hold off arasında yapabiliyoruz.Ancak çizdiğimiz iki grafik arasında çok fazla fark varsa,verilerin aynı pencerede iki grafiktan birinin davranışını anlamamız zorlaşıyor.Bunun için aynı pencerede iki farklı    y-ekseni oluşturursak grafikleri anlamamız kolaylaşacaktır.

plotyy(x1,y1,x2,y2) komtu ile aynı pencerede iki farklı eksen oluşturup,iki farklı grafik çizdirebiliriz.

>>help plotyy

Örneğin sin(x) ve ex fonksiyonlarının grafiklerini düşünürsek,sin(x) fonksiyonun değerleri -1 ile 1 arasındadır.Ancak ex fonksiyonu x değeri sonsuza doğru arttıkça,ex değeri de sonsuza doğru gidiyor.
Buradan da anlaşılacağı üzere,bu iki grafik çizildiğinde,sin(x) grafiği,diğerine göre çok küçük olduğundan,düz bir çizgi gibi çizilecektir.

*** sin(x) ve ex fonksiyonlarını aynı figürde(subplot) tek y ekseninde ve iki y ekseni ile çizdirelim.

x = 0:pi/20:2*pi;
y1 = sin(x);
y2 = exp(x);
%aynı figürde çizdirmek için subplot
%tek y-ekseni kullandığımız için plot
subplot(2,1,1)
plot(x,y1,x,y2)
title('tek y ekseni')
xlabel('x')
ylabel('y-ekseni')
grid on
%iki y-ekseni ile
subplot(2,1,2)
%plot'u a değerine eşitlememizin sebebi
%ylabel'de sırasıyla a plotunun hangi
%ekseni olduğunu belirttiğimizden dolayıdır.
a = plotyy(x,y1,x,y2)
xlabel('x')
ylabel(a(1),'sin(x)')
ylabel(a(2),'e^{x}')
grid on



















Ayrıca logaritmik bir grafik çizdirmek isterseniz,string ifadesi olarak grafik türünü girebilirsiniz.

subplot(2,1,1)
plotyy(x,y1,x,y2, 'semilogy')
subplot(2,1,2)
plotyy(x,y1,x,y2,'loglog')

fplot FONKSİYONU :

fplot fonksiyonu,grafiği çizmek için ayrı ayrı iki eksen için de dizi tanımlamak yerine,fonksiyonu string olarak tanımlayıp,bağlı olduğu değişkenin de aralığını girerek oluşturulur.

>>help fplot

fplot('sin(x)',[-2*pi,2*pi])

yukarıda ki komutta sin(x) fonksiyonu çiziliyor. ,x’e bağlı olan fonksiyon ve x’in aralığı tanımanmıştır.

 

ÖRNEK 9 : Aşağıdaki fonksiyonları fplot fonksiyonunu kullanarak çiziniz.Her grafik için uygun olan aralığı seçiniz.Başlık eklemeyi ve eksenleri isimlendirmeyi unutmayınız.

 
(MATLAB for Engineers by Holly Moore, Third Edition, and published by Prentice Hall)

NOT : sin2(t) değerini çizdirmek için,sin(t).^2 ifadesi kullanılır.Çünkü burada her eleman için ayrı bir hesaplama yapıyoruz.(element-by-element)


ÖRNEK 10 : Aylık olarak,elektrik,su,internet,ve doğalgaz faturaları verilmiştir.

Elektrik =  [34 48 51 42 39 52 47 46 50 60 37 55 ]
Su  = [68 64 51 47 71 62 54 58 51 61 66 58]
İnternet  = [35 35 35 35 35 35 35 35 35 35 35 35]
Dogalgaz = [224 312 180 96 58 45 38 39 62 74 99 201]

Aylık kullanılan elektrik,su,internet,ve doğalgaz fiyatlarını çiziniz.(subplot komutunu kullanınız)
Aylık ortalama elektrik,su,internet,ve doğalgaz fatura fiyatını bulup,pasta dilimi grafiği olarak yıllık ortalama faturaları çiziniz.(ortalama için mean,2 boyutlu ve 3 boyutlu pasta dilimi için pie,pie3)

 




Ek kaynak :

MATLAB for Engineers by Holly Moore, Third Edition, and published by Prentice Hall

Hiç yorum yok:

Yorum Gönder