You are on page 1of 37

ĐẠI HỌC ĐÀ NẴNG

TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT


KHOA ĐIỆN- ĐIỆN TỬ - BỘ MÔN TỰ ĐỘNG HÓA

Tin học Ứng dụng Chương 4:

Chương 3:

Đồ họa trong Matlab


Võ Khánh Thoại

vkthoai@ute.udn.vn
Tham khảo
• Matlab – Simulink dành cho Kỹ sư ĐKTĐ - Nguyễn Phùng Quang
Chương 3. Đồ họa trong Matlab

3.1. Các lệnh xử lí trên của sổ đồ họa


3.2. Đồ họa trong không gian 2D
3.3. Đồ họa trong không gian 3D

Updated Aug - 2019 © V. K. Thoai – Matlab – C3 Page 2


Chương 3. Đồ họa trong Matlab

3.1. Các lệnh xử lí trên của sổ đồ họa


3.2. Đồ họa trong không gian 2D
3.3. Đồ họa trong không gian 3D

Updated Aug - 2019 © V. K. Thoai – Matlab – C3 Page 3


3.1. Các lệnh xử lý trên cửa sổ đồ họa
MATLAB cung cấp thư viện hàm xử lý đồ hoạ rất
mạnh và phong phú trong không gian 2-D và 3-D
figure(n) tạo ra cửa sổ đồ thị mới với số thứ tự là n.
sublot(m,n,p) chia một trang đồ hoạ làm m hàng, n cột, p
(1…mxn) là phần cửa sổ hiện hành
subplot Tương đương sublot(1,1,1)
hold on Lệnh giữ lại đồ hoạ cửa sổ hiện hành, các lệnh vẽ
tiếp theo sẽ vẽ thêm vào chứ không xoá đi các thực
thể cũ.

hold off Mặc định khi khởi tạo cửa sổ đồ hoạ, các vẽ mới sẽ
thay thế các thực thể mới trên phần cửa sổ hiện
hành.

hold chuyển trạng thái từ on sang off và ngược lại


ishold Trả về 1 nếu trạng thái đồ hoạ hiện hành là hold on,
0 nếu là hold off.
Updated Aug - 2019 © V. K. Thoai – Matlab – C3 Page 4
3.1. Các lệnh xử lý trên cửa sổ đồ họa
Lưới và chế độ phóng to thu nhỏ
grid on Bật vẽ lưới trên phần cửa sổ đồ hoạ hiện
hành.
grid off Tắt vẽ lưới trên phần cửa sổ đồ hoạ hiện
hành.
grid Chuyển trạng thái lệnh grid từ on sang off và
ngược lại.
zoom on Phóng to đồ hoạ 2 chiều bằng các phím trái
chuột trên cửa sổ đồ hoạ. Phím chuột phải để
thu nhỏ. Cho phép phóng to phần lựa bằng
"kéo và thả" chuột

zoom off Loại bỏ lệnh zoom

zoom Chuyển trạng thái lệnh zoom giữa on và off.

zoom out Đưa đồ hoạ về trạng thái ban đầu.

Updated Aug - 2019 © V. K. Thoai – Matlab – C3 Page 5


3.1. Các lệnh xử lý trên cửa sổ đồ họa

Xác lập miền giới hạn

axis Trả về khoảng giới hạn phần đồ hoạ hiện


hành.không gian 2D là [xmin xmax ymin
ymax]không gian 3D là [xmin xmax ymin ymax
zmin zmax]

axis(lim) Xác lập miền giới hạn phần đồ hoạ hiện hành,
không gian 2D (3D) lim là vector 4 (6) thành
phần [xmin xmax ymin y max] ([...zmin zmax])

axis(axis) Giữ miền giới hạn đồ hoạ hiện hành, không


axis manual cho Matlab tự động thay đổi khi thêm thực thể
mới vào cửa sổ đồ hoạ hiện hành.

Updated Aug - 2019 © V. K. Thoai – Matlab – C3 Page 6


3.1. Các lệnh xử lý trên cửa sổ đồ họa
Xác lập miền giới hạn
axis ctrl Đưa ra lệnh tuỳ thuộc tham số ctrl
với ctrl là:

auto Cho phép Matlab tự động xác lập miền giới hạn
tight Giới hạn miền giới hạn bằng giá trị lớn nhất và nhỏ nhất
của dữ liệu

equal Giới hạn miền vẽ các trục toạ độ bằng nhau, bằng giá trị
lớn nhất.

ij Quay trục y với hướng từ trên xuống cho chiều dương,.


xy Đưa các trục x, y vầ hướng mặc định
image Như axis equal nhưng vẽ hình bao khớp với dữ liệu
square Đưa giới hạn miền thành hình vuông.
normal Trả cửa sổ đồ hoạ về kích thước ban đầu.
on Hiển thị các trục, các nhãn, các dấu chia đoạn, lưới (nếu
có) và màu nền

off Dấu các trục ghi kich thước, lưới (nếu có) và tắt màu nền.

Updated Aug - 2019 © V. K. Thoai – Matlab – C3 Page 7


3.1. Các lệnh xử lý trên cửa sổ đồ họa
Văn bản trong cửa sổ đồ họa
title(str) Viết dòng tiêu đề trên đỉnh, căn giữa

xlabel(str) Viết tên nhãn cho các trục x,y,z. Dòng chữ
được căn giữa.
ylabel(str)
zlabel(str)

text(x,y,(z,)str) Viết xâu str tại vị trí x,y (z).

gtext(str) Viết xâu str tại vị trí kích chuột.

legend(s1,s2,...) Đưa ra chú thích là các xâu kí tự s1,s2,... với


kiểu đường theo thứ tự các thực thể đã vẽ
trước đó

legend(s1,l1,s2,l2,... Đưa ra chú thích là các xâu kí tự s1,s2,... với


) kiểu đường cho bởi l1,l2,...

legend off Loại bỏ chức năng legend

Updated Aug - 2019 © V. K. Thoai – Matlab – C3 Page 8


3.2. Đồ họa trong không gian 2D
3.2.1. Đồ thị dạng đường, điểm (plot)
plot(x,y) vẽ đồ thị gồm tập hợp các điểm là các phần tử
của véc tơ x (trục hoành) và y (trục tung).
plot(y) vẽ đồ thị gồm tập hợp các điểm là các phần tử
của véc tơ y (trục tung) và các giá trị thứ tự các
phần tử véc tơ y (trục hoành). Nếu y véc tơ
gồm các số phức thì đồ thị là tập hợp các điểm
với hoành độ là phần thực và tung độ là phần
ảo.
Tương đương với lệnh: plot(real(y),
image(y))
plot(x,y,’str’) vẽ đồ thị với định dạng cho màu sắc và kiểu
đường vẽ nhờ khai báo qua str là tham số tối
đa gồm 3 ký tự chứa các thông tin sau:
Màu sắc theo quy định
Kiểu đánh dấu (markerStyle)
Kiểu đồ thị (lineStyle)
Updated Aug - 2019 © V. K. Thoai – Matlab – C3 Page 9
Chương 3. Đồ họa trong Matlab

3.1. Các lệnh xử lí trên của sổ đồ họa


3.2. Đồ họa trong không gian 2D
3.3. Đồ họa trong không gian 3D

Updated Aug - 2019 © V. K. Thoai – Matlab – C3 Page 10


3.2. Đồ họa trong không gian 2D
3.2.1. Đồ thị dạng đường, điểm (plot)
Màu sắc theo quy định
y yellow b blue
c cyan r red
g green m magenta
w white k black

Kiểu đánh dấu (markerStyle)


. point o circle x x-mark
+ plus * star s square
d diamond v triangle ^ triangle
< triangle > triangle p pentagram
h hexagram

Kiểu đồ thị (lineStyle)


- solid -. dashdot -- dashed : dotted

Updated Aug - 2019 © V. K. Thoai – Matlab – C3 Page 11


3.2. Đồ họa trong không gian 2D
3.2.1. Đồ thị dạng đường, điểm (plot)

plot(x,y,'c+:')
sẽ vẽ đồ thị với định dạng
màu xanh cyan,
kiểu đánh dấu +
và kiểu đồ thị : (dotted)

Updated Aug - 2019 © V. K. Thoai – Matlab – C3 Page 12


3.2. Đồ họa trong không gian 2D
3.2.1. Đồ thị dạng đường, điểm (plot)
Khi vẽ nhiều đồ thị cùng một lúc, trên 1 ô
plot(x1,y1,’str1’,x2,y2,’str2’,...)
với str1, str2,... là các định dạng theo quy định trên.

Updated Aug - 2019 © V. K. Thoai – Matlab – C3 Page 13


3.2. Đồ họa trong không gian 2D
3.2.1. Đồ thị dạng đường, điểm (plot)
Gán thuộc tính đồ thị trong câu lệnh plot
plot(x,y,’r-o',’LineWidth’,2,’MarkerSize’,7)
Trong đó:
LineWidth là thuộc tính chiều dày nét vẽ
MarkerSize là kích cỡ ký tự đánh dấu.
(Chú ý các ký tự in HOA và in thường).

Updated Aug - 2019 © V. K. Thoai – Matlab – C3 Page 14


3.2. Đồ họa trong không gian 2D
3.2.1. Đồ thị dạng đường, điểm (plot)
Vẽ đồ thị của hàm số dạng function.
Cú pháp: fplot(‘fun’,[xmin,xmax])
Trong đó:
fun: tên hàm số.
xmin, xmax: xác định khoảng cần vẽ.
Ví dụ:
»fplot(‘x.^3-2*x-3’,[0,2]);
»grid;

Updated Aug - 2019 © V. K. Thoai – Matlab – C3 Page 15


3.2. Đồ họa trong không gian 2D
3.2.1. Đồ thị dạng đường, điểm (plot)
Đồ thị dạng hoạt cảnh (COMET)
Cho phép vẽ đồ thị giống như plot với cách vẽ chậm trên màn hình gây ra
hiệu ứng hoạt hình.
comet(y): vẽ đồ thị hệ toạ độ xy với thời gian kéo dài 0.1 (giây)
comet(x,y): vẽ đồ thị hệ toạ độ xy với thời gian kéo dài 0.1
comet(x,y,t): vẽ đồ thị hệ toạ độ xy với thời gian kéo dài t

Updated Aug - 2019 © V. K. Thoai – Matlab – C3 Page 16


3.2. Đồ họa trong không gian 2D
3.2.2. Đồ thị dạng thanh (BAR)
bar(y) vẽ đồ thị thanh theo giá trị nằm trong trục y tăng
dần theo x
bar(x,y) vẽ đồ thị thanh, mỗi thanh theo giá trị nằm trên
trục y tại vị trí chỉ định theo x
vẽ đồ thị có đặt thuộc tính chiều rộng, màu thanh
bar(x,y, 0.3,’r’)
Ví dụ:
% Bar plot of a bell shaped curve
x = -2.9:0.2:2.9;
bar(x,exp(-x.*x));

Updated Aug - 2019 © V. K. Thoai – Matlab – C3 Page 17


3.2. Đồ họa trong không gian 2D
3.2.2. Đồ thị dạng thanh (BAR)

Updated Aug - 2019 © V. K. Thoai – Matlab – C3 Page 18


3.2. Đồ họa trong không gian 2D
3.2.3. Đồ thị dạng tròn (PIE)

pie(x) đồ thị hình pie dưới dạng tỉ lệ phần trăm theo các giá trị
của véc tơ thành phần của x.
pie(x,tach) tach là véc tơ có giá trị 1/0 để tách/không tách giá trị đồ
thị ra khỏi pie (có cùng kích thước với x).
pie(x,nhan) nhan là véc tơ kiểu mảng xâu cấu trúc biểu thị nhãn của
các giá trị.

Updated Aug - 2019 © V. K. Thoai – Matlab – C3 Page 19


3.2. Đồ họa trong không gian 2D
3.2.3. Đồ thị dạng tròn (PIE)

Updated Aug - 2019 © V. K. Thoai – Matlab – C3 Page 20


3.2. Đồ họa trong không gian 2D
3.2.4. Đồ thị trong toạ đồ cực (POLAR):

polar(theta,r) vẽ đồ thị quan hệ bán kính r theo góc theta

Updated Aug - 2019 © V. K. Thoai – Matlab – C3 Page 21


3.2. Đồ họa trong không gian 2D
3.2.3. Đồ thị theo trục toạ độ logarithm (LOG)
semilogx(x,y) vẽ đồ thị với thang đo theo trục x là log10 của x, tương
đương plot(log10(x),y)
semilogy(x,y) vẽ đồ thị với thang đo theo trục y là log10 của y, tương
đương plot(x,log10(y))
loglog(x,y) vẽ đồ thị với thang đo theo trục x và y đều là log10,
tương đương plot(log10(x),log10(y))

Updated Aug - 2019 © V. K. Thoai – Matlab – C3 Page 22


Chương 3. Đồ họa trong Matlab

3.1. Các lệnh xử lí trên của sổ đồ họa


3.2. Đồ họa trong không gian 2D
3.3. Đồ họa trong không gian 3D

Updated Aug - 2019 © V. K. Thoai – Matlab – C3 Page 23


3.3. Đồ họa trong không gian 3D
▪ Haøm plot3: haøm veõ ñoà thò ba chieàu z theo x vaø y cuù phaùp laø
plot3(x,y,z,’LineWidth’,<ñoäroäng>,’LineStyle’,’<neùtveõ>’,’Color’,’<maøu>’)
Ví duï : caùc leänh sau laø ví duï minh chöùng söû duïng haøm plot3.
>>z = 0:pi/30:10*pi;
>> x = sin(z);
>>y = cos(z);
>>plot3(x,y,z,’LineWidth’,3.0,’LineStyle’,’o’,’Color’,’r’)

Updated Aug - 2019 © V. K. Thoai – Matlab – C3 Page 24


3.3. Đồ họa trong không gian 3D
▪ Haøm meshgrid, surf vaø mesh:
➢ Haøm meshgrid: haøm taïo hai vector ñieåm x vaø y keát hôïp vôùi haøm surf
vaø mesh ñeå veõ ñoà thò ba chieàu vôùi cuù phaùp laø
[x, y] = meshgrid(x, y);
➢ Haøm surf : haøm veõ ñoà thò ba chieàu z theo x vaø y vôùi cuù phaùp laø
surf(x, y, z, c);
Trong ñoù, c laø maøu toâ neùt veõ.
➢ Haøm mesh : haøm veõ ñoà thò ba chieàu nhöng khoâng coù toâ maøu neàn nhö
haøm surf vôùi cuù phaùp laø
mesh(x, y, z, c);
Ví duï : veõ ñoà thò ba chieàu cuûa haøm z = sqrt(x^2 + y^2) duøng haøm surf
vaø haøm mesh vôùi caùc leänh laø
>>[x,y] = meshgrid(-8:0.3:8);
>>z = sqrt(x.^2 + y.^2);
>>surf(x,y,z,’EdgeColor’,’r’),title(‘Ham surf’);
>>mesh(x,y,z,’EdgeColor’),title(‘Ham mesh’);
Updated Aug - 2019 © V. K. Thoai – Matlab – C3 Page 25
3.3. Đồ họa trong không gian 3D

Updated Aug - 2019 © V. K. Thoai – Matlab – C3 Page 26


3.3. Đồ họa trong không gian 3D
▪ Haøm surfc, leänh view, contour vaø clabel :
➢ Haøm surfc : haøm veõ ñoà thò ba chieàu z theo x vaø y coù hình chieáu treân maët
phaúng x-y vôùi cuù phaùp laø
surfc(x,y,z);

Ví duï : veõ ñoà thò ba chieàu cuûa haøm z = x^2 + y^2 vôùi caùc leänh laø
>>x = -1:0.03:1;
>>y = x;
>> [x,y] = meshgrid(x,y);
>> z = x.^2 + y.^2;
>> surfc(x,y,z)

Updated Aug - 2019 © V. K. Thoai – Matlab – C3 Page 27


3.3. Đồ họa trong không gian 3D
▪ Leänh Colormap : taïo maøu neàn cho ñoà thò ba chieàu vôùi caùc maøu
nhö sau :
➢ hsv : blue colormap
➢ hot : black red yellow white colormap
➢ gray : gray colormap
➢ copper : copper colormap
➢ pink : pink colormap
➢ white : white colormap.
Ví duï : ñoåi maøu neàn cuûa ñoà thò cho treân vôùi leänh
>>Colormap copper

Updated Aug - 2019 © V. K. Thoai – Matlab – C3 Page 28


3.3. Đồ họa trong không gian 3D
▪ Leänh shading : leänh laøm laùng ñoà thò ba chieàu vôùi moät trong
hai thoâng soá ñoù laø interp vaø flat.
Ví duï : laøm laùng ñoà thò cho treân vôùi leänh
>>shading interp

Updated Aug - 2019 © V. K. Thoai – Matlab – C3 Page 29


3.3. Đồ họa trong không gian 3D
▪ Haøm contour: haøm veõ caùc ñöôøng cong hình chieáu töông öùng treân
maët phaúng x-y cuûa ñoà thò ba chieàu z theo x vaø y vôùi cuù phaùp laø
[c,h] = contour(z,’s’);
➢ s : maøu toâ neùt veõ caùc ñöôøng hình chieáu treân maët phaúng x-y.
➢ Haøm traû veà ma traän ñieåm c treân maët phaúng x-y vaø chieàu cao h.
Ví duï : veõ caùc ñöôøng cong hình chieáu treân maët phaúng x-y cuûa ñoà thò ba chieàu
z cho treân vôùi leänh laø
>>[c,h] = contour(z,’b’);

Updated Aug - 2019 © V. K. Thoai – Matlab – C3 Page 30


3.3. Đồ họa trong không gian 3D
▪ Leänh clabel: leänh ñaùnh nhaõn chieàu cao z töông öùng treân caùc ñöôøng cong
hình chieáu cuûa maët phaúng x-y vôùi cuù phaùp laø
clabel(c,h)
➢ c : ma traän ñieåm treân maët phaúng x-y
➢ h : vector ñieåm chieàu cao z töông öùng ñöôïc thieát laäp töø haøm contour.
Ví duï : ñaùnh nhaõn caùc chieàu cao z töông öùng treân caùc ñöôøng cong hình chieáu
cuûa maët x-y cho treân vôùi leänh
>>clabel(c,h);

Updated Aug - 2019 © V. K. Thoai – Matlab – C3 Page 31


3.3. Đồ họa trong không gian 3D
▪ Leänh view: leänh hieån thò nghieâng ñoà thò trong khoâng gian ba chieàu.
➢ view([AZ, EL]) : nhìn nghieâng vôùi moät goùc AZ theo phöông naèm
ngang vaø moät goùc EL theo phöông thaúng ñöùng.
➢ view([x y z]) : nhìn nghieâng vôùi caùc goùc x, y, z töông öùng vôùi caùc truïc
toïa ñoä x, y, z.
➢ view(3) : maëc ñònh trong ñoà thò ba chieàu.
➢ view(2) : maëc ñònh trong ñoà thò hai chieàu.
▪ Animation :
➢ getframe : taïo ra moãi frame di chuyeån cuûa ñoái töôïng ñoà hoïa gaùn cho
maûng M.
➢ movie : di chuyeån caùc frame ñoà hoïa ñöôïc chöùa trong maûng M theo thöù
töï chæ soá taêng daàn.
➢ Hai leänh naøy ñöôïc keát hôïp vôùi cuù phaùp toång quaùt laø
for k = 1:n
Graphic command;
M(k) = getframe;
end
movie(M,m)
Trong ñoù, m laø soá laàn laëp laïi cuûa M.
Updated Aug - 2019 © V. K. Thoai – Matlab – C3 Page 32
3.3. Đồ họa trong không gian 3D
Ví duï 1 : Chöông trình sau laø moät ví duï minh chöùng.
% Beginning of program
clear
for k = 1:16
plot(fft(eye(k+16)))
M(k) = getframe;
end
movie(M,30)
%end of program

Updated Aug - 2019 © V. K. Thoai – Matlab – C3 Page 33


3.3. Đồ họa trong không gian 3D
Ví duï 2 :Chöông trình sau laø moät ví duï minh chöùng thöù 2.
clear
z = peaks;
surf(z);
axis tight
set(gca,'nextplot','replacechildren');
for j = 1:20
surf(sin(2*pi*j/20)*z,z);
F(j) = getframe;
end
movie(F,20)

Updated Aug - 2019 © V. K. Thoai – Matlab – C3 Page 34


3.3. Đồ họa trong không gian 3D
▪ Hình caàu vaø hình truï:
➢ Hình caàu : coù cuù phaùp laø
[x, y, z] = sphere(n)
Ví duï : veõ hình caàu coù taâm taïi truïc toïa ñoä goùc vôùi n = 20 ñieåm
duøng leänh
>>sphere(20)

Updated Aug - 2019 © V. K. Thoai – Matlab – C3 Page 35


3.3. Đồ họa trong không gian 3D
Ví duï: Veõ hình caàu coù taâm taïi toïa ñoä (x =2, y = -1, z =1) vôùi caùc
leänh laø
>>sphere(30)
>>surf(x+2, y-1, z+1)

Updated Aug - 2019 © V. K. Thoai – Matlab – C3 Page 36


3.3. Đồ họa trong không gian 3D
➢ Hình truï: coù cuù phaùp laø
cylinder(r,n)
Trong ñoù, r laø vector baùn kính vaø n laø soá ñieåm.
Ví duï 1 : Veõ hình truï coù baùn kính ñaùy döôùi laø 2 vaø baùn kính ñaùy
treân laø 1 vôùi leänh
>>cylinder([2 1])

Updated Aug - 2019 © V. K. Thoai – Matlab – C3 Page 37

You might also like