
9/3/2019
1
Khoa Khoa học ứng dụng
Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh
Trường đại học Bách Khoa
Lập trình tính toán Cơ kỹ thuật Matlab® – Matrix Laboratory 1
Giảng viên: Ths. Trần Kim Bằng
Bộ môn Cơ Kỹ Thuật, P.106B4
Khoa Khoa Học Ứng Dụng
Đại học Bách Khoa TpHCM
Khoa Khoa học ứng dụng
Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh
Trường đại học Bách Khoa
Lập trình tính toán Cơ kỹ thuật Matlab® – Matrix Laboratory 2
Chương 3
Đồ họa hai chiều trong
Matlab
Khoa Khoa học ứng dụng
Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh
Trường đại học Bách Khoa
Lập trình tính toán Cơ kỹ thuật
Matlab® – Matrix Laboratory 3
Một số thuật ngữ quan trọng trong
đồ họa Matlab
•figure: cửa sổ đồ họa, nơi chứa các đối tượng đồ họa khác
•axes: đối tượng đồ họa hệ trục tọa độ, hiển thị vùng không gian biểu
diễn các đối tượng độ họa dạng đường nét, hay chuỗi ký tự
•line: đối tượng đồ họa ở dạng đường nét
•text: đối tượng đồ họa ở dạng chuỗi ký tự
•title: đối tượng đồ họa dạng chuỗi ký tự được đặt trên đối tượng đồ
họa hệ trục tọa độ
•xlabel: đối tượng đồ họa dạng chuỗi ký tự được đặt cạnh trục x của
đối tượng đồ họa hệ trục tọa độ
•ylabel: đối tượng đồ họa dạng chuỗi ký tự được đặt cạnh trục y của
đối tượng đồ họa hệ trục tọa độ
Khoa Khoa học ứng dụng
Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh
Trường đại học Bách Khoa
Lập trình tính toán Cơ kỹ thuật
Matlab® – Matrix Laboratory 4
3.1. Các lệnh tạo đối tượng đồ
họa hệ trục, đường nét, chuỗi ký
tự và thiết lập các tính chất kèm
theo trong không gian hai chiều
Khoa Khoa học ứng dụng
Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh
Trường đại học Bách Khoa
Lập trình tính toán Cơ kỹ thuật Matlab® – Matrix Laboratory 5
3.1.1. Cú pháp tổng quát của hàm plot
Code Matlab:
x = -pi:pi/10:pi;
y = tan(sin(x)) - sin(tan(x));
plot(x,y,'-.m^','LineWidth',2,...
'MarkerEdgeColor',[1 0 1],...
'MarkerFaceColor','g',...
'MarkerSize',10)
'--rs‘ -- là dạng đường, r là màu sắc của
đường, s là hình dạng maker
LineWidth là độ dày của đường
MakerEdgeColor là màu của cạnh Maker
MakerFaceColor là màu nền của Maker
MakerSize là kích thước của Maker
plot(X1,Y1,LineSpec,'PropertyName',PropertyValue)
Giải thích:
•Tạo mảng x có giá trị từ -
pi đến pi.
•Tạo mảng y theo x
•Vẽ đường cong y = f(x),
nét chấm gạch, màu tím,
maker hình”^”, độ dày
đường nét bằng 2, màu
của cạnh Maker là tím
(màu sắc được quy ước
theo giá trị từ 0->1 trong
[1 0 1], màu nền của
Maker là xanh lá cây, kích
thước điểm dữ liệu là 10.
Khoa Khoa học ứng dụng
Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh
Trường đại học Bách Khoa
Lập trình tính toán Cơ kỹ thuật Matlab® – Matrix Laboratory 6
Bảng 4.1. Quy ước về dạng đường nét, điểm dữ liệu, màu sắc trong Matlab

9/3/2019
2
Khoa Khoa học ứng dụng
Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh
Trường đại học Bách Khoa
Lập trình tính toán Cơ kỹ thuật Matlab® – Matrix Laboratory 7
3.1.2. Vẽ nhiều đồ thị trên cùng một hệ trục (axis)
Code Matlab:
x=linspace(0,2*pi,30);
y=sin(x);
z=cos(x);
plot(x,y,'-.','color',[1 0 0])
hold on
plot(x,z,':d','color','g'),
Dùng lệnh hold on để giữ lại các đối tượng đã hiển thị trên cửa sổ đồ họa
Giải thích:
•Tạo mảng x có giá trị từ -2*pi với 30 phần
tử.
•Tạo mảng y theo x.
•Tạo mảng z theo x.
•Vẽ đường cong y = f(x), nét chấm gạch,
màu đỏ ([1 0 0]).
•Giữa lại đối tượng đã tạo trên cửa sổ đồ
họa trước đó.
•Vẽ đường cong y = z(x), nét chấm gạch,
màu xanh lá cây, kèm theo các maker
hình kim cương.
Khoa Khoa học ứng dụng
Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh
Trường đại học Bách Khoa
Lập trình tính toán Cơ kỹ thuật Matlab® – Matrix Laboratory 8
Chú ý:
Đồ thị có quá nhiều maker có thể gây rối mắt.
Có những trường hợp chỉ cần biểu diễn maker tại một số điểm quan
trọng
Để khắc phục điều này, tách ra hai mảng dữ liệu. Một dùng để vẽ
đường cong và một để thể hiện maker
Code Matlab:
x=linspace(0,pi,1000);
y=cos(6*x).*exp(-x)
plot(x,y,'-.^')
Giải thích:
•Tạo mảng x chứa 1000 giá trị.
•Tạo mảng y theo x.
•Vẽ đường cong y = f(x), vừa có nét chấm
gạch, vừa có các maker hình”^”.
•Vì hai mảng x và y dùng để biểu diễn cả
đường nét và maker nên sẽ hiển thị rất nhiều
maker và gây rối mắt.
Khoa Khoa học ứng dụng
Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh
Trường đại học Bách Khoa
Lập trình tính toán Cơ kỹ thuật
Matlab® – Matrix Laboratory 9
Code Matlab:
x=linspace(0,pi,1000);
y=cos(6*x).*exp(-x);
plot(x,y, '-r')
hold on
xm=linspace(0,pi,20);
ym= cos(6*xm).*exp(-xm);
plot(xm,ym,'^b')
Giải thích:
•Tạo mảng x chứa 1000 giá trị.
•Tạo mảng y theo x.
•Hiển thị y = f(x) dưới dạng nét
cơ bản và màu đỏ.
•Hold on để giữ nguyên đường
cong trước đó đã vẽ trên hệ
trục.
•Tạo mảng xm chứa 20 giá trị.
•Tạo mảng ym theo xm.
•Hiển thị ym = f(xm) dưới dạng
các maker và màu xanh
dương.
Khoa Khoa học ứng dụng
Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh
Trường đại học Bách Khoa
Lập trình tính toán Cơ kỹ thuật
Matlab® – Matrix Laboratory 10
3.1.3. Các lệnh hiển thị hoặc không hiển thị trục tọa độ và lưới
Lệnh Matlab Giải thích
axis on Hiển thị hệ trục tọa độ
axis off Ẩn đi hệ trục tọa độ
box on Hiển thị khung hệ trục tọa độ
box off Ẩn đi khung hệ trục tọa độ
grid on Hiển thị lưới
grid off Ẩn đi lưới
Bảng 4.2. Một số lệnh tương tác với hệ trục tọa độ
Khoa Khoa học ứng dụng
Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh
Trường đại học Bách Khoa
Lập trình tính toán Cơ kỹ thuật Matlab® – Matrix Laboratory 11
Code Matlab:
x = linspace(0, 6, 100);
plot(x,cos(x), 'k-', x, 1./cosh(x),
'k--', [4.73, 4.73], [-1, 1], 'k')
xlabel('x')
ylabel('Value of functions')
title('Visualization of two
intersecting curves')
text(4.8, -0.1, 'x = 4.73')
legend('cos(x)',
'1/cosh(x)','Location',
'SouthWest')
3.1.4. Chú thích trên hệ trục tọa độ
Giải thích:
• Vẽ ba đường cong trên cùng hệ
trục tọa độ
• Dùng lệnh xlabel chú thích trục x
• Dùng lệnh ylabel chú thích trục y
• Dùng lệnh title đặt tiêu đề cho đồ
thị
• Dùng lệnh text để đặt chuỗi ký tự
tại một vị trí nào đó trong hệ trục
tọa độ.
• Dùng lệnh legend hú thích tên
đường cong (vẽ đường cong nào
trước thì lệnh legend sẽ có tác
dụng với đường cong đó trước) và
chọn vị trí tây nam
Khoa Khoa học ứng dụng
Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh
Trường đại học Bách Khoa
Lập trình tính toán Cơ kỹ thuật Matlab® – Matrix Laboratory 12
Code Matlab:
x = -pi:0.1:pi;
y = sin(x);
p = plot(x,y);
set(gca,'XTick',-pi:pi/2:pi)
set(gca,‘xticklabels’,{'-pi','-
pi/2','0','pi/2',‘3pi/2','pi'})
text(-pi/4,sin(-pi/4),'\leftarrow sin(-
\pi\div4)','HorizontalAlignment','left')
Giải thích:
• Tạo mảng x
• Tính y từ x
• Vẽ đường cong
• Dùng lệnh set thiết lập các mốc
giá trị trên trục hoành của hệ trục
tọa độ hiện hành (gca) với giá trị
đi từ -pi đến pi và bước nhảy pi/2.
• Dùng lệnh set ký hiệu các mốc
giá trị trên trục hoành với các
chuỗi ký tự do người sử dụng đặt
ra.
• Dùng lệnh text ký hiệu mũi tên
nằm ngang hướng từ phải qua trái
tại một vị trí trong hệ trục tọa độ.
3.1.5. Quy ước các mốc giá trị trên một trục

9/3/2019
3
Khoa Khoa học ứng dụng
Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh
Trường đại học Bách Khoa
Lập trình tính toán Cơ kỹ thuật Matlab® – Matrix Laboratory 13
3.1.6. Một số lệnh điều chỉnh hệ trục tọa độ
Lệnh Matlab Giải thích
axis([xmin xmax ymin ymax]) Điều chỉnh khoảng không gian quan
sát
axis square Điều chỉnh thành hệ trục vuông
axis equal Điều chỉnh các khoảng chia trên trục
tung và trục hoành bằng nhau
axis normal Làm đồ thị cân xứng nhưngcác
khoảng chia trên trục tung và trục
hoành không bằng nhau
Code Matlab:
x=linspace(0,2*pi,30);
y=sin(x);
plot(x,y)
axis([0 2*pi -1.5 2])
axis off
Giải thích:
Dùng lệnh axis giới hạn không gian quan sát theo
oPhương ngang với xmin = 0 và xmax = 2*pi
oPhương đứng với ymin = -1.5 và ymax = 2
Ẩn đi hệ trục tọa độ
Khoa Khoa học ứng dụng
Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh
Trường đại học Bách Khoa
Lập trình tính toán Cơ kỹ thuật Matlab® – Matrix Laboratory 14
• Dùng ^ để ký hiệu chỉ số trên dòng
• Dùng _ để ký hiệu chỉ số dưới dòng
• Dùng \ để ký hiệu chữ số hy lạp và toán học
• Dùng \bf để bật chế độ in đậm
• Dùng \it để bật chế độ in nghiêng
• Dùng \rm để chuyển thành dạng thường
3.1.7. Chú thích bằng ký hiệu toán học
Khoa Khoa học ứng dụng
Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh
Trường đại học Bách Khoa
Lập trình tính toán Cơ kỹ thuật
Matlab® – Matrix Laboratory 15
Code Matlab:
x = linspace(1, 2); beta = 3;
plot(x,cos(4*pi*x).*exp(-(1+x.^beta)), 'k')
title('\it\bfg^{\rm\it2} \rmversus \Omega_1 for \it\beta \rm= 3')
Giải thích: in nghiêng, in đậm, ghi ký tự g; sau đó ghi chỉ số trên dòng cho
cụm (chuyển thành chế độ thường, bật chế độ in nghiêng, ghi ký tự 2); sau
đó chuyển thành chế độ thường, ghi chuỗi versus; sau đó ghi ký tự
Omega; sau đó ghi chỉ số dưới dòng cho ký tự 1; sau đó ghi chuỗi for; sau
đó bật chế độ in nghiêng, ghi ký tự beta; sau đó chuyển thành chế độ
thường, ghi chuỗi =3
Khoa Khoa học ứng dụng
Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh
Trường đại học Bách Khoa
Lập trình tính toán Cơ kỹ thuật
Matlab® – Matrix Laboratory 16
Code Matlab:
x = linspace(0, 6, 100);
fig1 = figure;
axis1=axes;
p1=plot(x,cos(x), 'k-');
fig2 = figure;
axis2 = axes('Position',
[0.62, 0.62, 0.25, 0.25]);
p2=plot(x,sin(x), 'b-');
xlabel(axis2,'x1');
xlabel(axis1,'x');
set(p2,'color','g') ;
set(p1,'color','r');
plot(axis1,0,-1,’*’);
axes(axis1);
3.1.8. Thay đổi thuộc tính của đối tượng đồ họa
Giải thích:
•Tạo mảng x.
•Tạo cửa sổ đồ họa thứ nhất và gán vào fig1
•Tạo cửa hệ trục thứ nhất và gán vào axis1
•Vẽ đường cong y=cos(x) và gán vào p1
•Tạo cửa sổ đồ họa thứ hai và gán vào fig2
•Tạo cửa hệ trục thứ hai tại vị trí [0.62, 0.62,
0.25, 0.25] và gán vào axis2
•Vẽ đường cong y=sin(x) và gán vào p2
•Đặt tên trục hoành cho axis2
•Đặt tên trục hoành cho axis1
•Đổi màu sắc cho p2 thành xanh lá
•Đổi màu sắc cho p1 thành đỏ
•Vẽ maker hình * trên hệ trục axis1
•Đưa axis1 về hệ trục hiện hành
Có thể thay đổi thuộc tính của đối tượng đồ họa bằng cách gán đối tượng
đồ họa cho một biến rồi tương tác với biến đó
Khoa Khoa học ứng dụng
Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh
Trường đại học Bách Khoa
Lập trình tính toán Cơ kỹ thuật Matlab® – Matrix Laboratory 17
Code Matlab:
axis1 = axes('Position', [0.62,
0.62, 0.25, 0.25]);
3.1.9. Tạo một hệ trục mới tại một vị trí trong cửa sổ đồ họa
Giải thích:
Xác định vị trí của hệ trục tọa độ mới
bên trong cửa sổ đồ họa với thuộc tính
'Position'
Khoa Khoa học ứng dụng
Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh
Trường đại học Bách Khoa
Lập trình tính toán Cơ kỹ thuật Matlab® – Matrix Laboratory 18
3.1.10. Bố trí nhiều hệ trục trong cùng một cửa sổ đồ họa
“dưới dạng ma trận”
Code Matlab:
x=linspace(0,2*pi,30);
y=sin(x); z=cos(x);
a=2*sin(x).*cos(x);
b=sin(x)./(cos(x));
fig1=figure;
s1=subplot(2,2,1);
p1=plot(x,y);
s2=subplot(2,2,2);
p2=plot(x,z);
s3=subplot(2,2,4);
p3=plot(x,b);
xlabel(s2,'x2');
set(p1,'color','r');
subplot(m,n,p)
Giải thích:
•m là số “hàng” của “ma trận”
chứa hệ trục tọa độ.
•n là số “cột” của “ma trận”
chứa hệ trục tọa độ.
•p là “vị trí” của hệ trục tọa độ
trong “ma trận” chứa hệ trục
tọa độ.

9/3/2019
4
Khoa Khoa học ứng dụng
Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh
Trường đại học Bách Khoa
Lập trình tính toán Cơ kỹ thuật Matlab® – Matrix Laboratory 19
3.2. Tô màu diện tích trong
không gian hai chiều
Khoa Khoa học ứng dụng
Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh
Trường đại học Bách Khoa
Lập trình tính toán Cơ kỹ thuật Matlab® – Matrix Laboratory 20
3.2.1. Cú pháp cơ bản của lệnh tô màu hai chiều
Để biểu diễn sự thay đổi giá trị một đại lượng nào đó trên một miền diện
tích trong không gian hai chiều bằng màu sắc, ta dùng lệnh fill(x,y,c)
Code Matlab:
X = [0 1 2 2 0]
Y = [0 -1 0 4 4]
C = [1 5 2 3 4]
fill(X,Y,C)
colorbar
Giá trị c(3)
ứng với vị trí
x(3) và y(3)
Có thể thay thế C bằng một
chuỗi quy ước màu sắc (đỏ là
‘r’) để miền diện tích được tô
duy nhất một màu.
fill(X,Y,’r’)
Giải thích:
•X là mảng chứa các hoành độ của
các điểm tạo nên miền diện tích
được tô màu.
•Y là mảng chứa các tung độ của các
điểm tạo nên miền diện tích được tô
màu.
•C là mảng chứa các giá trị của đại
lượng cần biểu diễn tại các điểm
tạo nên miền diện tích được tô màu.
X = [x(1) x(2) x(3) … x(n)]
Y = [y(1) y(2) y(3) … y(n)]
C = [c(1) c(2) c(3) … c(n)]
fill(X,Y,C)
Khoa Khoa học ứng dụng
Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh
Trường đại học Bách Khoa
Lập trình tính toán Cơ kỹ thuật
Matlab® – Matrix Laboratory 21
Code Matlab:
t = linspace(0, 2*pi);
fill(t,sin(t), 'm')
3.2.2. Tô màu miền diện tích giới hạn bởi đường cong và
trục hoành
Giải thích:
Tô màu vùng diện
tích được tạo bởi sự
giao nhau giữa
đường cong sin(t) và
trục hoành với màu
được chọn là màu tím
Khoa Khoa học ứng dụng
Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh
Trường đại học Bách Khoa
Lập trình tính toán Cơ kỹ thuật
Matlab® – Matrix Laboratory 22
Code Matlab:
X = linspace(0, 2*pi);
Y = sin(X);
Z = 1 + cos(2*X);
hold on
grid on
plot(X, Y, 'r', 'LineWidth', 2);
plot(X, Z, 'b', 'LineWidth', 2);
XX = [X fliplr(X)];
YZ = [Y fliplr(Z)];
fill(XX,YZ,'y')
3.2.3. Tô màu miền diện tích được tạo bởi sự giao nhau
của hai đường cong
Khoa Khoa học ứng dụng
Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh
Trường đại học Bách Khoa
Lập trình tính toán Cơ kỹ thuật Matlab® – Matrix Laboratory 23
Code Matlab:
t = linspace(0, 2*pi);
fill(t,sin(t),'m','FaceAlpha',giatri)
3.2.4. Thay đổi thuộc tính của lệnh tô màu diện tích
Thêm tính chất làm trong suốt để tăng và giảm độ trong suốt của miền diện
tích được tô màu
Giải thích:
Tô màu màu tím cho vùng
diện tích bị giới hạn bởi
đường cong sin(t) và trục
hoành, thay đổi thông số
giatri từ 0 đến 1 để điều
chỉnh độ trong suốt
Khoa Khoa học ứng dụng
Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh
Trường đại học Bách Khoa
Lập trình tính toán Cơ kỹ thuật Matlab® – Matrix Laboratory 24
3.3. Tạo hiệu ứng hoạt hình
Để tạo hiệu ứng hoạt hình và xuất ra tập tin ten.avi, cần sử dụng các
lệnh sau
•VideoWriter: tạo ra ten.avi
•open: mở biến chứa ten.avi
•getframe: chụp hình
•writeVideo: lưu các khung hình vào ten.avi
•close: đóng biến chứa tập tin ten.avi

9/3/2019
5
Khoa Khoa học ứng dụng
Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh
Trường đại học Bách Khoa
Lập trình tính toán Cơ kỹ thuật Matlab® – Matrix Laboratory 25
Code Matlab:
t=0:0.1:5;
bien_tuy_y =
VideoWriter('tenphim.avi');
open(bien_tuy_y);
for i =1:length(t)
[X,Y]=meshgrid(-10:0.1:10);
R = sqrt(X.^2*t(i) + Y.^2) + eps;
Z = sin(R)./R;
mesh(X,Y,Z);
G = getframe;
writeVideo(bien_tuy_y,G)
end
close(bien_tuy_y);
Giải thích:
•Tạo mảng t, đại diện cho thời gian mô
phỏng.
•Tạo tập tin tenphim.avi và lưu vào
bien_tuy_y.
•Mở bien_tuy_y.
•Lặp từ phần tử thứ nhất t(1) đến phần tử
cuối cùng t(end) của mảng t. Trong mỗi
lần lặp, tại thời điểm t(i):
•Tạo lưới dữ liệu trên mặt phẳng XY.
•Tính giá trị của Z từ X và Y.
•Tạo lưới từ X, Y và Z.
•Chụp hình và lưu vào G
•Lưu G vào bien_tuy_y.
•Kết thúc vòng lặp tại t(i), tiếp tục quay lại
các bước trên với t(i+1).
•Đóng bien_tuy_y.
•Vào thư mục hiện hành kiếm tập tin
bien_tuy_y.avi để trình chiếu.

