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.
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