35
Chương 4 Đồ họa trong Matlab

Lttt matlab chuong 4

Embed Size (px)

Citation preview

Page 1: Lttt matlab chuong 4

Chương 4

Đồ họa trong Matlab

Page 2: Lttt matlab chuong 4

2 04/06/2013 Lập trình tính toán

4.1 Đồ họa 2D Lệnh plot

>> plot(x,y,‘option’)

Với:

x: vector miền giá trị

y: các cột của y với chỉ số tương ứng xác định bởi vector x

‘option’: các tham số về màu sắc, kiểu đường,… của đồ thị

Page 3: Lttt matlab chuong 4

3 04/06/2013 Lập trình tính toán

4.1 Đồ họa 2D (tt.) Lệnh plot (tt.)

Tham số “kiểu đường”:

Tham số Kiểu đường

‘-’ Đường liền nét

‘--’ Đường đứt nét

‘-.’ Đường chấm gạch

‘:’ Đường chấm

Page 4: Lttt matlab chuong 4

4 04/06/2013 Lập trình tính toán

4.1 Đồ họa 2D (tt.) Lệnh plot (tt.)

Tham số “đánh dấu nét vẽ”:

Tham số Marker

‘.’ Điểm

‘*’ Dấu hoa thị

‘x’ Chữ cái x

‘o’ Chữ cái o

+ Dấu cộng

Page 5: Lttt matlab chuong 4

5 04/06/2013 Lập trình tính toán

4.1 Đồ họa 2D (tt.) Lệnh plot (tt.)

Tham số “đánh dấu nét vẽ” (tt.):

Tham số Marker ‘s’, ‘square’ Hình vuông

‘d’, ‘diamond’ Hình thoi ‘p’, ‘pentagram’ Hình ngôi sao ‘h’, ‘hexagram’ Hình

Page 6: Lttt matlab chuong 4

6 04/06/2013 Lập trình tính toán

4.1 Đồ họa 2D (tt.) Lệnh plot (tt.)

Tham số “đánh dấu nét vẽ” (tt.):

Tham số Marker ‘v’ Hình ‘^’ Hình ‘<’ Hình ‘>’ Hình

Page 7: Lttt matlab chuong 4

7 04/06/2013 Lập trình tính toán

4.1 Đồ họa 2D (tt.) Lệnh plot (tt.)

Tham số “màu sắc”:

Tham số Màu sắc ‘y’, ‘yellow’ Vàng ‘g’, ‘green’ Xanh lá cây ‘b’, ‘blue’ Xanh dương ‘r’, ‘red’ Đỏ

Page 8: Lttt matlab chuong 4

8 04/06/2013 Lập trình tính toán

4.1 Đồ họa 2D (tt.) Lệnh plot (tt.)

Tham số “màu sắc” (tt.):

Tham số Màu sắc ‘k’, ‘black’ Đen ‘w’, ‘white’ Trắng ‘c’, ‘cyan’ Xanh cyan

‘m’, ‘magenta’ Hồng

Page 9: Lttt matlab chuong 4

9 04/06/2013 Lập trình tính toán

4.1 Đồ họa 2D (tt.) Lệnh plot (tt.)

Các tham số khác:

Tham số Ý nghĩa

LineWidth Độ rộng của nét vẽ, tính bằng pt

MarkerEdgecolor Màu của đường viền marker

MarkerFacecolor Màu bên trong marker

MarkerSize Kích thước của marker, tính bằng pt

Page 10: Lttt matlab chuong 4

10 04/06/2013 Lập trình tính toán

4.1 Đồ họa 2D (tt.) Lệnh plot (tt.)

Ví dụ 1: Vẽ đồ thị của hàm sin(x) >> x = 0:pi/20:2*pi;

>> plot(x,sin(x))

Page 11: Lttt matlab chuong 4

11 04/06/2013 Lập trình tính toán

4.1 Đồ họa 2D (tt.) Lệnh plot (tt.)

Ví dụ 2: Vẽ đồ thị của hàm sin(x) và x/2 + 1/2 >> x = 0:0.01:2;

>> A=[sin(pi*x);0.5+0.5*x];

>> plot(x,A)

Page 12: Lttt matlab chuong 4

12 04/06/2013 Lập trình tính toán

4.1 Đồ họa 2D (tt.) Lệnh plot (tt.)

Ví dụ 3: Vẽ đồ thị hàm y và y/2 theo x >> x = [-4 -2 0 1 3 7];

>> y = [15 4 0 1 9 20];

>> plot(x,y,‘r’); hold on;

>> plot(x,y/2);

Page 13: Lttt matlab chuong 4

13 04/06/2013 Lập trình tính toán

4.1 Đồ họa 2D (tt.) Lệnh plot (tt.)

Ví dụ 4: Vẽ đồ thị hàm sin(x) với các tham số >> x = -pi:pi/10:pi;

>>plot(x,y,‘--rs’, ‘LineWidth’,…

2, ‘MarkerEdgecolor’,…

‘k’, ‘MarkerFacecolor’,…

‘g’, ‘MarkerSize’,10)

Page 14: Lttt matlab chuong 4

14 04/06/2013 Lập trình tính toán

4.1 Đồ họa 2D (tt.) Lệnh comet

>> comet(x,y,p)

Vẽ theo hàm comet với phần kéo dài p, khi không khai báo chỉ số p thì chương trình tự lấy giá trị p = 0.1

Lệnh comet cho phép người dùng vẽ theo từng điểm trên màn hình gây hiệu ứng hoạt họa khi vẽ.

Page 15: Lttt matlab chuong 4

15 04/06/2013 Lập trình tính toán

4.1 Đồ họa 2D (tt.) Các hệ tọa độ trong mặc phẳng

Lệnh Hệ tọa độ polar(thet,r) Vẽ trên hệ tọa độ cực

semilogx(x,y) Vẽ trên hệ tọa độ của trục loga, thang đo log10 được sử dụng cho trục x

semilogy(x,y) Vẽ trên hệ tọa độ của trục loga, thang đo log10 được sử dụng cho trục y

loglog(x,y) Vẽ trên hệ tọa độ loga, 2 trục của hệ tọa độ đều dựa trên thang log10

Page 16: Lttt matlab chuong 4

16 04/06/2013 Lập trình tính toán

4.1 Đồ họa 2D (tt.) Xác định kiểu trục tọa độ

>> axis([xmin xmax ymin ymax])

Các tùy chỉnh:

axis on/off/auto axis normal/square/equal/tight axis ij/xy grid on/off

Page 17: Lttt matlab chuong 4

17 04/06/2013 Lập trình tính toán

4.1 Đồ họa 2D (tt.) Xác định kiểu trục tọa độ (tt.)

Ví dụ:

Page 18: Lttt matlab chuong 4

18 04/06/2013 Lập trình tính toán

4.1 Đồ họa 2D (tt.) Xác định giới hạn trục tọa độ

>> xlim([xmin xmax])

>> ylim([ymin ymax])

Ví dụ: >> x = linspace(0,3,500); >> y = 1./(x-1).^2 + 3./(x-2).^2; >> plot(x,y); grid on; >> ylim([0 50]);

Page 19: Lttt matlab chuong 4

19 04/06/2013 Lập trình tính toán

4.1 Đồ họa 2D (tt.) Xác định các mốc ghi trên trục tọa độ

Xtick và Ytick

Ví dụ: >> x = -pi:0.1:pi; >> plot(x,sin(x)) >> set(gca,'XTick',-pi:pi/2:pi) >> set(gca,'XTickLabel',… {'-pi','-pi/2','0','pi/2','pi'})

Page 20: Lttt matlab chuong 4

20 04/06/2013 Lập trình tính toán

4.1 Đồ họa 2D (tt.) Chú thích trên đồ thị

Các lệnh: xlabel; ylabel

title

legend

text; gtext;

Page 21: Lttt matlab chuong 4

21 04/06/2013 Lập trình tính toán

4.1 Đồ họa 2D (tt.) Chú thích trên đồ thị (tt.)

Ví dụ: x = -pi:.1:pi;t = -pi/4; y = sin(x); plot(x,y) set(gca,'XTick',-pi:pi/2:pi) set(gca,'XTickLabel',{'-pi','pi/2','0','pi/2','pi'}) xlabel('-\pi \leq \Theta \leq \pi') ylabel('sin(\Theta)') title('Plot of sin(\Theta)') text(-pi/4,sin(-pi/4),'\leftarrow sin(\pi\div4)',... 'HorizontalAlignment','left') legend('sin \theta') hold on plot(t, sin(t),’or’)

Page 22: Lttt matlab chuong 4

22 04/06/2013 Lập trình tính toán

4.1 Đồ họa 2D (tt.) Chú thích trên đồ thị (tt.)

Ví dụ (tt.):

ylabel

xlabel

title

legend

text

Page 23: Lttt matlab chuong 4

23 04/06/2013 Lập trình tính toán

4.1 Đồ họa 2D (tt.) Vẽ đồ thị trên hai tung độ khác nhau

>>plotyy(x1,y1, x2,y2)

Ví dụ: t=0:900; A=1000;

a=0.005; b=0.005;

y1 = A*exp(-a*t);

y2 = sin(b*t);

plotyy(t,y1,t,y2);

Page 24: Lttt matlab chuong 4

24 04/06/2013 Lập trình tính toán

4.1 Đồ họa 2D (tt.) Vẽ nhiều đồ thị trên cùng một cửa sổ

>>subplot(m,n,p)

Chia màn hình đồ họa làm m hàng, n cột và p là phần cửa

sổ hiện thời. Các cửa sổ con của màn hình đồ họa được

đánh số theo hàm từ trái sang phải, từ trên xuống dưới.

Page 25: Lttt matlab chuong 4

25 04/06/2013 Lập trình tính toán

4.1 Đồ họa 2D (tt.) Vẽ nhiều đồ thị trên cùng một cửa sổ (tt.)

Ví dụ: t = 0:pi/20:2*pi; [x,y] = meshgrid(t);

subplot(2,2,1); plot(sin(t),cos(t)); axis equal

subplot(2,2,2); z = sin(x)+cos(y); plot(t,z); axis([0 2*pi -2 2])

subplot(2,2,3); z = sin(x).*cos(y); plot(t,z); axis([0 2*pi -1 1])

subplot(2,2,4); z = (sin(x).^2)-(cos(y).^2); plot(t,z); ...

axis([0 2*pi -1 1])

Page 26: Lttt matlab chuong 4

26 04/06/2013 Lập trình tính toán

4.1 Đồ họa 2D (tt.) Vẽ nhiều đồ thị trên cùng một cửa sổ (tt.)

Ví dụ (tt.):

Page 27: Lttt matlab chuong 4

27 04/06/2013 Lập trình tính toán

4.1 Đồ họa 2D (tt.) Đọc dữ liệu từ màn hình đồ họa

>>[x,y] = ginput

Đọc tọa độ điểm từ màn hình đồ họa và trao kết quả cho 2

vector x và y. Vị trí của điểm được xác định bởi chuột hoặc

bàn phím.

Page 28: Lttt matlab chuong 4

28 04/06/2013 Lập trình tính toán

4.2 Đồ họa 3D Lệnh plot3

>> plot3(x,y,z,‘option’)

Ví dụ: t = 0:pi/50:10*pi;

plot3(sin(t),cos(t),t)

xlabel('sin(t)')

ylabel('cos(t)')

zlabel('t')

grid on

axis square

Page 29: Lttt matlab chuong 4

29 04/06/2013 Lập trình tính toán

4.2 Đồ họa 3D (tt.) Lệnh meshgrid

>> [u,v]=meshgrid(x,y)

Trong đó, giá trị tọa đổ điểm của lưới được lưu trữ vào 2 ma trận u, v

- u chứa vector x với m dòng

- v chứa vector y với n cột

Page 30: Lttt matlab chuong 4

30 04/06/2013 Lập trình tính toán

4.2 Đồ họa 3D (tt.) Bộ lệnh tạo lưới

Lệnh Ý nghĩa

mesh(z) In các giá trị trong ma trận z như là các độ cao trên mặt lưới grid hình chữ nhật. Nối các điểm đó với các điểm xung quanh tạo nên mặt lưới

mesh(u,v,z,c)

Vẽ hàm mặt lưới trên dữ liệu là các phần tử trong ma trận z. Các điểm lân cận trong lưới được nối với nhau bởi các đường thẳng. Đồ họa được vẽ trong không gian 3D với góc chiếu phối cảnh, trong đó phần tử zij là chiều cao trên lưới grid(uij,vij). C: ma trận màu cho mỗi điểm. Nếu C không xác định thì C=Z

Page 31: Lttt matlab chuong 4

31 04/06/2013 Lập trình tính toán

4.2 Đồ họa 3D (tt.) Bộ lệnh tạo lưới (tt.)

Lệnh Ý nghĩa

meshc(...) Vẽ bước lưới cho các bề mặt lưới tương tự như lệnh mesh nhưng đồng thời vẽ thêm đường contour ở dưới bề mặt lưới

meshz(...) Vẽ mặt lưới tương tự như lệnh mesh nhưng có thêm lưới grid trên mặt x, y

waterfall(...) Tương tự như lệnh mesh nhưng lưới grid chỉ được vẽ theo một hướng

hidden on/off Hiện / không hiện các đường khuất sau mặt lưới tạo bởi lệnh mesh

Page 32: Lttt matlab chuong 4

32 04/06/2013 Lập trình tính toán

4.2 Đồ họa 3D (tt.) Bộ lệnh tạo lưới (tt.)

Ví dụ: Vẽ mặt z=sin(y2-x)-cos(y-x2) với x,y∈[0,π] x=0:0.1:pi;y=0:0.1:pi; [X,Y]=meshgrid(x,y); Z=sin(Y.^2+X)-cos(Y-X.^2); subplot(221);mesh(Z); subplot(222);meshc(Z); subplot(223);mesh(x,y,Z); axis([0 pi 0 pi -5 5]); subplot(224);mesh(Z); hidden off

Page 33: Lttt matlab chuong 4

33 04/06/2013 Lập trình tính toán

4.2 Đồ họa 3D (tt.) Lệnh comet3

>> comet(x,y,z,p)

Cho ra tiến trình vẽ mô phỏng hàm z=f(x,y) với độ kéo dài tính theo p.

Nếu p không các định thì hàm số lấy giá trị mặc định là tập của các giá trị 0.1

Page 34: Lttt matlab chuong 4

34 04/06/2013 Lập trình tính toán

4.3 In đồ thị Xuất hình thành file với định dạng chỉ định

>> print –dformat filename

Một số format của tập tin: tiff, bmp, jpeg, …

Ví dụ:

print -dtiff -r200 mygraph.tiff

print –djpeg mygraph.jpeg

Page 35: Lttt matlab chuong 4

35 04/06/2013 Lập trình tính toán

4.4 Giao diện người sử dụng (GUI) Tạo giao diện đồ họa

>> guide