You are on page 1of 39

FETEL 2019 1

CHƯƠNG 4

Đồ thị trong Matlab


2D Plotting in Matlab
2

Mục tiêu Chủ đề


Khảo sát các cách biểu
diễn đồ thị 2D trong • Vẽ đồ thị 2D
Matlab • Các kiểu đồ thị 2D
• Ví dụ…

FETEL 2019
Basic 2D Plotting plot
3

>> x=0:0.05:10*pi;
>> y=exp(-.1.*x).*sin(x);
>> plot(x,y)
>> xlabel('X axis description')
>> ylabel('Y axis description') Title for plot goes here
1
>> title('Title for plot goes here') Legend for graph
>> legend('Legend for graph')
>> grid on
Y axis description 0.5

NOTE #1:
Đảo thứ tự (x,y) thành 0
(y,x) sẽ quay đồ thị 900

Manually inserted text...


-0.5
NOTE #2:
line(x,y) giống plot(x,y)
nhưng sẽ không có các lựa -1
chọn phụ 0 5 10 15 20
FETEL 2019X axis description
25 30 35
Supporting Commands
4
 axis(): xác định phạm vi hiển thị
 hold on/off: cho phép vẽ thêm các đường mới trên cùng đồ thị

>> x=0:0.1:2*pi;
>> plot(x,sin(x))
>> axis >> x=0:0.1:2*pi;
ans = >> plot(x,sin(x))
0 7 -1 1 >> hold on
>> axis([0 7 -.5 .5]) >> plot(x,cos(x))
0.5 1

0.5

0 0

-0.5

-0.5 -1
0 1 2 3 4 5 6 7 FETEL
0 2019
2 4 6 8
Lines, Markers, Color
5

FETEL 2019
6

FETEL 2019
7

FETEL 2019
8

>> yr=[1988:1:1994];
>> sle=[8 12 20 22 18 24 17];
>> plot(yr, sle,'--r*','linewidth', 2, 'markersize',12)
24

22

20

18

16

14

12

10

8
1988 1989 1990 1991 FETEL 2019
1992 1993 1994
Dùng kết hợp Markers & Lines
9

>> x=0:.02:1;
>> x=0:0.02:1;
>> y=x.^1.5;
>> plot(x,cos(x),'r:') >> y=x.^1.5;
>> yr=randn(size(x));
>> hold on >> yr=randn(size(x));
>> yy=y+0.1.*yr;
>> plot(x,sin(x),'b--') >> yy=y+0.1.*yr;
>> plot(x,yy,'ro',x,yy)
1 >> plot(x,yy,'rx') 1.2
1.2
1
0.5 1
0.8
0.8
0.6
0.6
0
0.4
0.4
0.2
0.2
-0.5
0
0

-0.2 -0.2
0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1
-1
0 2 4 6 8

FETEL 2019
Dùng kết hợp Markers & Lines
10

>> x=0:.02:1;
>> y=x.^1.5;
>> yr=randn(size(x));
>> yy=y+0.1.*yr;
>> plot(x,yy,'x')
>> x=0:0.2:2.*pi;
>> p=polyfit(x,yy,1)
>> y=sin(x);
p = >> yr=randn(size(x));
1.0159 -0.0927 >> plot(x,10.*y+yr,'ro')
>> hold on >> hold on
>> plot(x,polyval(p,x),'r') >> plot(x,10.*y)
1.2 15

1 10

0.8
5
0.6
0
0.4
-5
0.2

0 -10

-0.2 -15
0 0.2 0.4 0.6 0.8 1 0 FETEL 22019 4 6 8
Vẽ nhiều đường
11

>> X = 0.0:pi/100:2*pi;
>> Y1 = cos(X);
>> Y2 = 3*cos(X);
>> Y3 = cos(2*X);
>> Y4 = sin(X);

>> plot(X,Y1)
>> hold on 2

>> plot(X,Y2)
>> plot(X,Y3) 1

>> plot(X,Y4)
0

-1

-2

-3
0 1 2 3 4 5 6 7

FETEL 2019
Vẽ nhiều đường
3

 Có thể dùng cách này: 2

12 1
>> plot(X,Y1,X,Y2,X,Y3,X,Y4)
0

 Hoặc cách này -1

-2

>> Z = [Y1;Y2;Y3;Y4];
>> plot(X,Z) -3
0 1 2 3 4 5 6 7

 Nếu dùng câu lệnh như dưới 2

thì sao? 1

>> plot(X, Z, 'o') 0

-1

-2

FETEL 2019
-3
0 1 2 3 4 5 6 7
Vẽ 2 đường với hai trục Y
13

>> x=0:0.1:3.*pi; >> x=0:0.1:3.*pi;


>> y1=sin(x+0.5); >> y1=sin(x+0.5);
>> y2=90.*sin(x-0.5); >> y2=90.*sin(x-0.5);
>> plot(x,y1,x,y2) >> plotyy(x,y1,x,y2)
100 1 100

50 0.5 50

0 0 0

-50 -0.5 -50

-100 -1 -100
0 2 4 6 8 10 0 2 4 6 8 10

FETEL 2019
Một số lệnh liên quan đới đồ thị
14

 axis([xmin, xmax, ymin, ymax]) –


Thiết lập giá trị giới hạn trên các trục.
 Axis giải phóng giới hạn ở các trục
 axis off – turns off display of axes
 axis on – turns on display of axes
 grid on/off – Tắt/mở hiển thị lưới
 text(x,y,‘string’) – Hiện choỗi tại (x,y)
 gtext(‘string’)????
 line(x,y) – Thêm đường biểu diễn xác định
bởi x & y vectors FETEL 2019
Vẽ đồ thị logarit
15

>> x=linspace(.1,10,1000);
>> damp=0.05;
>> y=1./sqrt((1-x.^2).^2 + (2.*damp.*x).^2);
>> plot(x,y) 1
>> semilogx(x,y) y = 1/ 2
(1 − x 2 )2 + (2 x )2 
>> loglog(x,y)

1
10 10 10

8 8
0
10
6 6

4 4 -1
10

2 2

-2
0 0 10
0 2 4 6 8 10 -1 0 1 -1 0 1
10 10 10 10 10 10

FETEL 2019
Vẽ đồ thị trên các của sổ con
16

 subplot(m,n,k)
 m= hàng, n= cột
 k= cửa sổ hiện tại
 Ví dụ: subplot(2,3,1)
3

1 2 3
2

4 5 6

FETEL 2019
Ví dụ, chạy thử đoạn chương trình
17
sau
X=0:0.5:50;
Y=5*x.^2;
subplot(2,2,1), plot(X,Y), title(‘Polynomial – Linear/Linear’), ...
ylabel(‘y’), grid
subplot(2,2,2), semilogx(X,Y), title(‘Polynomial – Log/Linear’), ...
ylabel(‘y’), grid
subplot(2,2,3), semilogy(X,Y), title(‘Polynomial – Linear/Log’), ...
ylabel(‘y’), grid
subplot(2,2,4), loglog(X,Y), title(‘Polynomial – Log/Log’), ...
ylabel(‘y’), grid

FETEL 2019
Một số vấn đề khác
18

>> x = -2.9:0.2:2.9;
>> y = exp(-x.*x);
>> subplot(2,2,1)

FETEL 2019
19

bar(x,y)
title('Figure 1: 2-D Bar Chart')

>> subplot(2,2,2)
>> bar3(x,y,'r')
>> title('Figure 2: 3-D Bar Chart<')

FETEL 2019
20

>> subplot(2,2,3)
>> stairs(x,y)
>> title('Figure 3: Stair Chart')

>> subplot(2,2,4)
>> barh(x,y)
>> title('Figure 3: Horizontal Bar Chart')
FETEL 2019
Tóm lược một số lệnh cơ bản
21

 plot Vẽ đường tuyến tính x-y


 loglog Vẽ loga x-y
 semilogx Vẽ bán loga x-y (loga trục x)
 semilogy Vẽ bán loga x-y (loga trục y)
 polar Vẽ tọa độ cực
 mesh Vẽ mặt lưới 3 chiều
 contour Vẽ đường mức
 bar Vẽ biểu đồ
 stairs Vẽ đồ thị bậc thang
FETEL 2019
22

 title Tiêu đề đồ thị


 xlabel Nhãn trục x
 ylabel Nhãn trục y
 text Văn bản ở vị trí bất kỳ
 gtext Văn bản ở vị trí chuột
 grid Các dòng lưới

FETEL 2019
Ví dụ
23

FETEL 2019
24

FETEL 2019
25

FETEL 2019
Hiển thị chữ Hy lạp,
chỉ số trên/dưới
26

FETEL 2019
Bảng ký tự Hy Lạp
27

FETEL 2019
FETEL 2019 28

CHƯƠNG 3 (TT)

Đồ thị trong Matlab


3D Plotting in Matlab
29

Plot3(x, y, z)
x,y,z là các vector chứa tọa độ điểm

t=0:0.1:6*pi;
x=sqrt(t).*sin(2*t);
y=sqrt(t).*cos(2*t);
z=0.5*t;
plot3(x,y,z,'k','linewidth',3)
grid on
xlabel('x'); ylabel('y'); zlabel('z')

FETEL 2019
Tạo lưới
30

 Để tạo một lưới trong hệ tọa độ vuông góc


dùng lệnh: meshgrid

FETEL 2019
Lệnh mesh(X,Y,Z) và surf(X,Y,Z)
31

 Ví dụ vẽ

x=-1:0.1:3;
y=1:0.1:4;
[X,Y]=meshgrid(x,y);
Z=X.*Y.^2./(X.^2+Y.^2);
mesh(X,Y,Z)
xlabel('x'); ylabel('y'); zlabel('z')

FETEL 2019
32

 surf(X,Y,Z)

FETEL 2019
meshc(X,Y,Z) x=-3:0.25:3;
y=-3:0.25:3;
Vẽ lưới và đường viền 0.4
[X,Y]=meshgrid(x,y);
0.3

Z=1.8.^(-1.5*sqrt(X.^2+Y.^2)).*cos(0.5*Y).*sin(X);
0.2

33 0.1

0
meshc(X,Y,Z)

z
-0.1
xlabel('x'); ylabel('y')
-0.2 zlabel('z')
-0.3

-0.4
3

2
3
1
2
0 1
0
-1
-1
-2
-2
-3 -3
y
x
x=-3:0.25:3;
meshz(X,Y,Z) y=-3:0.25:3;
Vẽ lưới và đường màn [X,Y]=meshgrid(x,y);
0.4

0.3 Z=1.8.^(-1.5*sqrt(X.^2+Y.^2)).*cos(0.5*Y).*sin(X);
0.2

0.1
meshz(X,Y,Z)
0
xlabel('x'); ylabel('y')
-0.1

zlabel('z')
-0.2

-0.3

-0.4
3

2
3
1
2
0 1
0
-1
-1
-2
-2
-3 -3

FETEL 2019
x=-3:0.25:3;
surfc(X,Y,Z) y=-3:0.25:3;

Vẽ mặt và đường viền 0.4 [X,Y]=meshgrid(x,y);


34 0.3
Z=1.8.^(-1.5*sqrt(X.^2+Y.^2)).*cos(0.5*Y).*sin(X);
0.2

0.1 surfc(X,Y,Z)
0
xlabel('x'); ylabel('y')
-0.1
zlabel('z')
-0.2

-0.3

-0.4
3

2
3
1
2
0 1
0
-1
-1
-2
-2
-3 -3
x=-3:0.25:3;
surfl(X,Y,Z) y=-3:0.25:3;

Surface Plot with 0.4


[X,Y]=meshgrid(x,y);
0.3 Z=1.8.^(-1.5*sqrt(X.^2+Y.^2)).*cos(0.5*Y).*sin(X);
Lighting
0.2

0.1
surfl(X,Y,Z)
0

xlabel('x'); ylabel('y')
-0.1

-0.2
zlabel('z')
-0.3

-0.4
3

2
3
1
2
0 1

-1
-1
0
FETEL 2019
-2
-2
-3 -3
x=-3:0.25:3;
contour3(X,Y, Z,n)
y=-3:0.25:3;
n là số mức đường 0.4
[X,Y]=meshgrid(x,y);

35viền Z=1.8.^(-1.5*sqrt(X.^2+
0.2
Y.^2)).*cos(0.5*Y).*sin(X);

0
contour3(X,Y,Z,15)
xlabel('x'); ylabel('y')
-0.2
zlabel('z')

-0.4

2
3
2
0 1
0
-1
-2
-2
-3

x=-3:0.25:3;
contour(X,Y, Z,n) 3
y=-3:0.25:3;
n là số mức đường 2
[X,Y]=meshgrid(x,y);

viền Z=1.8.^(-1.5*sqrt(X.^2+Y.^2)).*cos(0.5*Y).*sin(X);
1

contour(X,Y,Z,15)
0
xlabel('x'); ylabel('y')

-1 zlabel('z')

-2

-3
-3 -2 -1 0 1 2 3

FETEL 2019
>> [X,Y] = meshgrid(-1:0.1:1);
>> [X,Y] = meshgrid(-2:0.1:2);
>> surf(X,Y, 4 - X.^2 - Y.^2);
>> surf(X, Y, X.^2 - Y.^2)
>> hold on;
>> colorbar
>> surf(X,Y, X.^2 + Y.^2);
36 >> hold off;

3 4

4
3.5
2
3
2
1 2.5

0 2
0
1.5

-2
-1 1

0.5
-4 -2
2
0

1 2 1
-3
1
0 0.5 1
0
-1 0.5
-1 -4 0
-2 -2 0
-0.5
-0.5

-1 -1

FETEL 2019
>> Y=[1 6.5 7; 2 6 7; 3 5.5 7; 4 5 7; 3
Bar3(Y) 4 7; 2 3 7; 1 2 7]
7

Y =
6

37 5

3 1.0000 6.5000 7.0000


2.0000 6.0000 7.0000
2

0
3.0000 5.5000 7.0000

1
4.0000 5.0000 7.0000
2

3 3.0000 4.0000 7.0000


4

5 2.0000 3.0000 7.0000


6
3
7 2 1.0000 2.0000 7.0000
1

Bài tập ??
1

0.9

0.8

0.7

0.6

0.5

0.4

0.3

0.2

0.1

0
2

1 2

1
0
0
FETEL 2019
-1
-1

-2 -2
Bài tập ??
1

0.8
38
0.6

0.4

0.2

-0.2

-0.4

-0.6

-0.8

-1
1

0.5 1

0.5
0
0
-0.5
-0.5

Bài tập ??
-1 -1

0.9

0.8

0.7

0.6

0.5

0.4

0.3

0.2

0.1

0
2

1 2

1
0
0
FETEL 2019
-1
-1

-2 -2
Bài tập t=0:0.2:10;
35

30
x=t;
39 25
y=sin(t);
20

z=t.^1.5;

z
15

10

5 ??
0
1

0.5 10

8
0
6

4
-0.5
2
-1 0
y
x

Bài tập 19%


10%
35

30

25

20

15

10

42% 0
29% 1

0.5 10

8
0
6

4
-0.5

FETEL 2019 -1 0
2

You might also like