Professional Documents
Culture Documents
PROGRAMLAMA
DERS-8
MATLABDA GRAFIKLER
1
GRAFIKLER
MATLAB diğer programlama dillerine nazaran oldukça güçlü bir
grafik araçkutusuna (toolbox)’a sahiptir. MATLAB’de grafik
çizebilmenin en kolay yollarından biri plot komutunu kullanmaktır.
Örnek: y=x2-9x-20 fonksiyonun grafiğini çizen kod aşağıdaki
gibidir.
200
150
x=1:20;
100
y=x.^2-9*x-20;
50
plot(x,y)
0
-50
0 2 4 6 8 10 12 14 16 18 20
2
GRAFIKLER
Bir grafikte aşağıda verilen tanımlamalar mevcut olmalıdır:
• Grafiğin başlığı
• Eksen takımlarının isimleri
Grafiğe bir isim, başlık vermek için title komutu kullanılır X
eksenine bir eksen ismi verilmesi için xlabel
Y eksenine bir eksen ismi verilmesi için ylabel komutu
kullanılır
3
2D VE 3D
Matlab, 2D ve 3D başta olmak üzere çok gelişmiş
grafik araçları sunar:
Çizgi (line) grafikler (plot, plot3, polar)
Yüzey (surface) grafikler (surf, surfc)
Ağ (mesh) grafikler (mesh, meshc, meshgrid)
Contour grafikler (contour, contourc, contourf)
Çubuk (bar), pasta (pie) vb özel grafikler (bar, bar3, hist,
rose, pie, pie3)
Animasyonlar (moviein, movie vb komutlar)
4
2D GRAFİK
5
PLOT(X,Y, ‘ÇIZGI
TIPI’,’ÖZELLIKADI’,’ÖZELLIKDE
ĞERI’)
6
PLOT
>> x=[1 2 3 5 7 7.5 8 10];
8
>> y=[2 6.5 7 7 5.5 4 6 8];
>> plot(x,y) 7
7
PLOT
8
PLOT 200
x.2-9*x-20 fonksiyonun grafigi
150
x=[1:1:20];
100
y=x.^2-9*x-20;
y ekseni
plot(x,y)
50
title('x.^2-9*x-20
fonksiyonun grafigi'); 0
xlabel('x ekseni');
ylabel('y ekseni'); -50
0 2 4 6 8 10 12 14 16 18 20
x ekseni
9
UYGULAMA
t = 0:0.1:10
s = sin(t); % t'nin sinüsünü al
plot(t,s); % s'yi t'ye karşı çizdir
veya
plot(t,s,'k*');
10
ÇOKLU GRAFIK
t = 0:0.1:10
A = 8;
f_1 = 2;
s_1 = A*sin(2*pi*f_1*t); % Genliği 8, frekansı 2 Hz olan sinüs
f_2 = 4;
s_2 = A*cos(2*pi*f_2*t); % Genliği 8, frekansı 4 Hz olan kosinüs
11
8
-2
-4
-6
-8
0 1 2 3 4 5 6 7 8 9 10
12
ÇOKLU GRAFIK
plot(t,s_1); % Birinci şekli çizdir
hold all; % Şekli tut
plot(t,s_2); % İkinci şekli çizdir
hold off; % Şekli bırak
13
ÇOKLU GRAFIK
y(t)=3t2-5t+8 8000
7000
y’(t)=6t-5
6000
5000
t=[0:1:20]; 4000
y_1=t.^3-5*t+8; 3000
2000
y_2=6*t-5;
1000
plot(t,y_1,t,y_2)
0
-1000
0 2 4 6 8 10 12 14 16 18 20
14
UYGULAMA
120
100
x=[-2:0.01:4]; 80
y=3*x.^3-26*x+6; 60
yd=9*x.^2-26; 40
ydd=18*x; 20
-20
-40
-2 -1 0 1 2 3 4
15
UYGULAMA
16
EKSEN IŞARETLERININ
AYARLANMASı
1
0.8
0.6
0.4
x = -pi:.1:pi; 0.2
-0.2
y = sin(x); -0.4
-0.6
plot(x,y) -0.8
-1
-pi -pi/2 0 pi/2 pi
set(gca,'XTick',-pi:pi/2:pi)
set(gca,'XTickLabel',{'-pi','-pi/2','0','pi/2','pi'})
17
GRAFİKLERDE ÇEŞİTLİ
DÜZENLEMELER
18
ÖZELLIKLER
Renk İşaretleme Biçimi Çizgi biçimi
19
P: beşgen
LEGEND
Legend fonksiyonu ile hangi eğrinin hangi fonksiyona ait
olduğu belirtilir.
sinx ve türevinin de?i?imi
x=[0:pi/10:4*pi]; 1
sin(x)
cos(x)
y1=sin(x); 0.8
0.6
y2=cos(x); 0.4
Fonksiyonun degisimi
plot(x,y1,'b.:',x,y2,'b<-') 0.2
0
xlabel('x degisimi');
-0.2
ylabel('Fonksiyonun degisimi'); -0.4
20
FIGURE
Figure fonksiyonu ile çoklu grafikler
Birden fazla grafik penceresini açmak için figure(n) komutu
kullanılır. Burada n grafik penceresini belirtmektedir.
x=0:pi/30:2*pi;
y1=sin(x);
y2=cos(x);
figure(1),plot(x,y1,'bo:')
figure(2),plot(x,y2,'r*-')
21
SUBPLOT FONKSIYONU
ILE ALT GRAFIKLER
Aynı grafik penceresinde birden fazla grafik çizmek için
subplot (a,b,c) fonksiyonu icra edilir. Burada
a: grafik penceresinin satır sayısı
b: grafik penceresinin sütün sayısı
c: alt pencere numarası
22
SUBPLOT
subplot(2,2,1)
subplot(2,2,3)
x=0:pi/30:2*pi;
y3=tan(x);
y1=sin(x);
plot(x,y3)
plot(x,y1)
title('f(x)=tan(x)')
title('f(x)=sin(x)')
subplot(2,2,2) subplot(2,2,4)
y2=cos(x); y4=cot(x);
plot(x,y2) plot(x,y4)
title('f(x)=cos(x)') title('f(x)=cot(x)')
23
SUBPLOT
subplot(2,2,1); % Şekli 2x2'lik 4 alt şekil olarak düşün, 1.yi seç
plot(t,s_1); % s_1'i çiz
title('2Hz sinüs dalgasi'); % Başlık
ylabel('Genlik')
xlabel('Zaman');
subplot(2,2,2); % Şekli 2x2'lik 4 alt şekil olarak düşün, 2.yi seç
plot(t,s_2); % s_2'yi çiz
title('4Hz kosinüs dalgasi'); % Başlık
ylabel('Genlik'); % y eksenini isimlendir
xlabel('Zaman'); % x eksenini isimlendir
24
2Hz sinüs dalgasi 4Hz kosinüs dalgasi
10 10
5 5
Genlik
Genlik
0 0
-5 -5
-10 -10
0 5 10 0 5 10
Zaman Zaman
25
SUBPLOT
subplot(2,2,3); % Şekli 2x2'lik 4 alt şekil olarak düşün, 3.yü seç
plot(t,s_1+s_2); % s_1+s_2'yi çiz
title('Toplam sinyal'); % Başlık
ylabel('Genlik'); % y eksenini isimlendir
xlabel('Zaman'); % x eksenini isimlendir
subplot(2,2,4); % Şekli 2x2'lik 4 alt şekil olarak düşün, 4.yü seç
plot(t,s_1.*s_2); % s_1*s_2'yi çiz
title('Çarpım sinyal'); % Başlık
ylabel('Genlik'); % y eksenini isimlendir
26
HOLD KOMUTU
Aynı eksen takımında birden fazla grafik çizmek için hold
komutu kullanılır. Figure fonksiyonu kullanılmadığı sürece
işletilen herbir plot komutu aynı grafik penceresinde işlem
8
görür. sin(x)
7 e 2*sin(x)
6
x=0:pi/30:2*pi;
5
y1=sin(x);
4
plot(x,y1,'k*:')
3
hold 2
y2=exp(2*sin(x)); 1
plot(x,y2,'ro--') 0
legend('sin(x)','\bf{e}^{2*sin(x)}') -1
0 1 2 3 4 5 6 7
27
DATA GRAFIKLERI PASTA
GRAFIKLERI: 2D
11%
22%
colormap jet
28%
6%
28
PASTA GRAFIKLERI: 3D
x = [1 3 0.5 2.5 2]
22%
explode = [0 1 0 0 0]
11%
pie3(x,explode)
28%
colormap hsv
33%
6%
29
ÇUBUK GRAFIKLERI: 3D
Y = [10 5 6 18 4 5];
X= [25 35 30 45 50 55]
60
Z=[X;Y]
40
bar3(Z,0.5)
20
6
0
5
1 4
3
2 2
1
30
ÇUBUK GRAFIKLERI
yr=[1988:1994]
30
sle=[8 12 20 22 18 24 27];
barh(yr,sle) 25
xlabel(‘Satışlar’) 20
ylable(‘Yıllar’)
Satislar
15
Veya 10
bar(yr,sle,’r’) 5
ylabel(‘Satışlar’)
0
xlable(‘Yıllar’) 1988 1989 1990 1991
Yillar
1992 1993 1994
31
28
26
24
22
yr=[1988:1994] 20
18
sle=[8 12 20 22 18 24 27]; 16
14
12
stairs(yr,sle) 10
8
1988 1989 1990 1991 1992 1993 1994
yr=[1988:1994] 30
25
sle=[8 12 20 22 18 24 27];
20
stem(yr,sle)
15
10
0
1988 1989 1990 1991 1992 1993 1994
32
x = linspace(-1,1,30); %-1'den 1'e eşit aralıklı 30 elemanlı
vektör oluştur
y = linspace(-1,1,30); %-1'den 1'e eşit aralıklı 30 elemanlı
vektör oluştur
[xg,yg] = meshgrid(x,y); % 3B çizim için 30x30'luk bir örgü
oluştur
zg = xg.^2 + yg.^2; % Çizdirilecek fonksiyonu örgü üzerinde
hesapla
figure; % Yeni bir şekil aç
contour(xg,yg,zg); % Fonksiyonu eşyülselti haritası
formatında çiz
33
figure; % Yeni bir şekil aç
contourf(xg,yg,zg); % Fonksiyonu içi dolu eşyülselti haritası formatında
çiz
34
EŞ YÜKSELTI EĞRILERI
[X,Y] = meshgrid(-2:.2:2,-2:.2:3);
3
Z = X.*exp(-X.^2-Y.^2);
2.5
0
[C,h] = contour(X,Y,Z); 2
1.5
clabel(C,h)
1
1
-0
.1 0.
0.
-0 .2 0.2
colormap cool 1
.1
-0
0.5 -0.3 0.3
0
-0 .4
0.4
0
0.2
-0 .2
-0
2
-0.5 -0 .3 0.3
.2
0.
-0
1
.1
0.
.1 0.
-1 1
-0
-1.5
0
-2
-2 -1.5 -1 -0.5 0 0.5 1 1.5 2
35
EŞ YÜKSELTI
EĞRILERI
Z = X.*exp(-X.^2-Y.^2);
contour3(X,Y,Z,30) 0
surface(X,Y,Z,'EdgeColor',
[.8 .8 .8],'FaceColor','none') -0.5
2
grid off 0
1.5 2
0 0.5 1
view(-15,25) -2
-2 -1.5 -1 -0.5
colormap cool
36
EŞ YÜKSELTI
EĞRILERI
[X,Y] = meshgrid([-2:.25:2]);
Z = (X.^2-Y.^2);
4
meshc(X,Y,Z)
2
colormap cool
0
-2
-4
2
1 2
0 1
0
-1 -1
-2 -2
37
UYGULAMA
38
UYGULAMA
Aşağıda verilen fonksiyonu x:-4:4, y=-4:4 aralığında 3D ve eş
yükselti eğrilerini bir grafik penceresinde birlikte gösteriniz
(subplot).
39
UYGULAMA
x = [ 0 : 0.1 : 100 ]
y = sin(x)*x./(1+cos(x));
plot(x,y)
grid
x = [ 0 : 0.1 : 100 ]
y = sin(x)*x./(1+cos(x));
plot(x,y, 'rx')
40
FPLOT
Fplot komutu sınırlar arasında verilen fonksiyonun grafiğini
çizer.
Fplot(‘fonksiyon’,limitler,’çizgi şekli’)
>>fplot(‘x^2+4*sin(2*x)-1’,[-3 3])
41