Lập trình trong Matlab Designed by Hoàng Hữu Việt, Computer Engineering Department... Cung cấp các hàm đồ họa 2-D, 3-D cho hiển thị dữ Designed by Hoàng Hữu Việt, Computer Engineering
Trang 1KHOA CÔNG NGHỆ THÔNG TIN
BỘ MÔN CÁC HỆ THỐNG THÔNG TIN
Hoang Huu Viet, Ph.D.,
Ứng dụng MATLAB để giải quyết được một số
bài toán cơ bản liên quan với ngành học của
sinh viên.
Trang 2Nội dung
Chương 1 Nhập môn
Chương 2 Ma trận và mảng
Chương 3 Đồ họa trong Matlab
Chương 4 Lập trình trong Matlab
Designed by Hoàng Hữu Việt, Computer Engineering Department. Slide 3
Matlab
Tài liệu tham khảo
[1] Nguyễn Hoàng Hải, Nguyễn Khắc Kiểm,
N ễ T Dũ Hà T ầ Đứ Lậ t ì h
Nguyễn Trung Dũng, Hà Trần Đức, Lập trình
Matlab, MXB Khoa học và Kỹ thuật, 2003.
[1] Nguyễn Hữu Tình, Lê Tấn Hùng, Phạm Thị
Ngọc Yến, Nguyễn Thị Lan Hương, Cơ sở
Matlab & ứng dụng, NXB Khoa học và Kỹ thuật,
2009
2009.
Trang 3KHOA CÔNG NGHỆ THÔNG TIN
BỘ MÔN CÁC HỆ THỐNG THÔNG TIN
Trang 4Giới thiệu về MATLAB
MATLAB (MATrix LABoratory) được Cleve Moler
hát i h à ối thậ iê 1970
phát minh vào cuối thập niên 1970.
Cleve Moler là GS toán và khoa học
máy tính gần 20 năm ở các trường
Đại học Michigan, Stanford, và New
Mexico(http://www.mathworks.com/moler/).
Cleve Moler cũng là đồng tác giả của các quyển sách
Designed by Hoàng Hữu Việt, Computer Engineering Department.
Cleve Moler cũng là đồng tác giả của các quyển sách
Numerical Computing with MATLAB
Experiments with MATLAB
Cleve Moler hiện là chủ tịch công ty MatWorks
Slide 3
Chương 1 Nhập môn
Giới thiệu về MATLAB
MATLAB được phát triển bởi công ty
M thW k
MathWorks.
Matlab là một ngôn ngữ bậc cao cho tính toán
số và phát triển các ứng dụng.
Dùng Matlab có thể giải quyết các bài toán
nhanh hơn các ngôn ngữ lập trình: C, C++,
Matlab có thể ứng dụng trong đại số tuyến tính,
xác suất, xử lý ảnh, xử lý tín hiệu số, thông
qua các thư viện (toolboxs).
Trang 5Chương 1 Nhập môn
Giới thiệu về MATLAB
Các đặc trưng chính của Matlab
Là ngôn ngữ máy tính bậc cao cho tính toán kỹ thuật
Là công cụ để thiết kế và giải quyết các bài toán
nhanh chóng
Cung cấp các hàm để làm việc trong các lĩnh vực: đại
số tuyến tính, thống kê, lý thuyết tối ưu,
Cung cấp các hàm đồ họa 2-D, 3-D cho hiển thị dữ
Designed by Hoàng Hữu Việt, Computer Engineering Department.
liệu
Cung cấp công cụ cho phát triển giao diện đồ họa
Cung cấp các lệnh làm việc với C, C++, Java, Fortran
Trang 6Môi trường làm việc
ằ
Nằm ở góc dưới bên trái của màn hình Matlab
Dùng để chạy Demo và các công cụ của Matlab
Cửa sổ lệnh
Dùng để gõ các lệnh của Matlab
Dùng để hiển thị kết quả của lệnh
Designed by Hoàng Hữu Việt, Computer Engineering Department. Slide 7
Trong chế độ làm việc tại cửa sổ lệnh,
Matlab có thể được xem như 1 máy tính cá
Lấy lại lệnh đã thực hiện phía trước
Lấy lại lệnh đã thực hiện phía sau
Đưa con trỏ sang phải một ký tự
Đưa con trỏ sang trái một ký tự
Home Đưa con trỏ về đầu dòng
Home Đưa con trỏ về đầu dòng
End Đưa con trỏ về cuối dòng
Esc Xóa lệnh tại dấu nhắc >>
Delete Xóa ký tự tại ví trí con trỏ
Backspace Xóa ký tự trước vị trí con trỏ
Trang 7Chương 1 Nhập môn
Môi trường làm việc
Cửa sổ lệnh (tiếp)
Các lệnh có thể viết trên 1 dòng, mỗi lệnh có thể
cách nhau dấu phẩy “,” hoặc chấm phẩy “;”
Nếu các lệnh cách nhau dấu “,” thì kết quả của lệnh hiển thị
trên màn hình.
Nếu các lệnh cách nhau dấu “;” thì kết quả của lệnh không
hiển thị trên màn hình.
Dấu ( ) để chỉ câu lệnh được tiếp tục ở dòng dưới
Designed by Hoàng Hữu Việt, Computer Engineering Department.
Dấu ( ) để chỉ câu lệnh được tiếp tục ở dòng dưới
Hiển thi các biến trong bộ nhớ
Name: tên biến
Value: giá trị của biến
Min: giá trị bé nhất
Max: giá trin lớn nhất
Các biến trong cửa sổ
bị mất khi dùng lệnh xóa
clear all.
Trang 8Môi trường làm việc
Cửa sổ Command History
Dùng để lưu các lệnh đã thực hiện tại cửa sổ lệnh
Để thực hiện lại lệnh, nháy đúp lên lệnh
Xóa các lệnh trong cửa sổ:
Nháy chuột phải
Chọn Clear Command History
Designed by Hoàng Hữu Việt, Computer Engineering Department. Slide 11
Chương 1 Nhập môn
Môi trường làm việc
Cửa sổ Current Folder
Thiết lập đường dẫn cho Matlab Thiết lập đường dẫn cho Matlab
Chọn File Set Path
Chọn Add Folder
Chọn Save
Trang 9Designed by Hoàng Hữu Việt, Computer Engineering Department.
M-file có thể là một tệp script hoặc function
Script: chứa các lệnh matlab như khi làm việc tại dấu
Chọn biểu tượng trên thanh công cụ, hoặc chọn
File New Blank M-file
Chú ý: Lời chú thích đặt sau dấu %
Chọn biểu tượng trên thanh công cụ, hoặc gõ tên
M-file tại cửa sổ lệnh
Trang 10Kết thúc chương
Hỏi & Đáp
Designed by Hoàng Hữu Việt, Computer Engineering Department. Slide 15
Trang 11KHOA CÔNG NGHỆ THÔNG TIN
BỘ MÔN CÁC HỆ THỐNG THÔNG TIN
Hoang Huu Viet, Ph.D.,
Trang 12 Một ma trận kích thước mx1 là một vec tơ cột.
Ví dụ: a là 1 vector hàng kích thước 1x6, b là 1 vector cột
kích thước 5x1.
Trang 13Chương 2 Ma trận và mảng
Ma trận
Nhập ma trận
ầ
Liệt kê các phần tử của các véc tơ hàng của ma trận,
mỗi hàng cách nhau dấu “;” và tất cả các hàng đặt
Nếu có dấu “;” sau lệnh thì kết quả không xuất hiện, ngược
lại thì kết quả xuất hiện trên màn hình.
Trang 14Ma trận
Toán tử “:”
Cú pháp: a:b:c
Ý nghĩa: Tạo ra một vector hàng bắt đầu từ giá trị a,
mỗi số cách nhau 1 giá trị b, và kết thúc ở gía trị c
Ví dụ:
x = 1:2:10 vector x = [1 3 5 7 9]
y = 10:-1:5 vector y = [10, 9, 8, 7, 6, 5]
Designed by Hoàng Hữu Việt, Computer Engineering Department.
Nếu không chỉ ra giá trị b, thì b lấy giá trị bằng 1
Trang 15 Số thực: dùng dấu “.” để biểu diễn phân số.
Số phức: dùng ký kiệu “i” hoặc “j” để biểu diễn phần ảo.
Một số hằng đặc biệt
Designed by Hoàng Hữu Việt, Computer Engineering Department.
pi: Trả về giá trị số pi.
i (và ) j: ký hiệu số phức i 2 = j 2 = -1.
Inf: Để chỉ số vô cùng lớn Ví dụ 1/0 = inf
NaN: Dùng để chỉ số không xác định Ví dụ: 0/0 = NaN.
Biến là một vùng bộ nhớ được đặt tên và dùng để
chứa một hoặc một dãy các giá trị
Các quy định đặt tên biến trong MATLAB
Tên biến bắt đầu phải là một chữ cái, tiếp theo có thể là các
chữ cái, chữ số, hoặc dấu gạch dưới.
Các ví dụ đúng: x1, x_1, x_2, giatri,
Các ví dụ sai: 1x x+ x
Các ví dụ sai: 1x, x+, x-,
Tên biến phân biệt chữ hoa và chữ thường.
Tên biến không được đặt trùng tên với các từ khóa
(keywords) của MATLAB Ví dụ: if, end, for,
Trang 16 Trong Matlab, các biến không cần khai báo kiểu dữ
liệu và kích thước của biến
Designed by Hoàng Hữu Việt, Computer Engineering Department.
Biến có tên “ans” là biến dùng để trả về kết quả của
Matlab cung cấp nhiều hàm toán học cho người
dùng Gõ “help elfun” để xem các hàm
log10(x) log10(x) tan(x) tang(x)
x
Trang 17 Biểu thức thực là biểu thức trả về giá trị số thực.
Designed by Hoàng Hữu Việt, Computer Engineering Department.
Biểu thức logic là biểu thức có giá trị nguyên:
Nếu không có dấu “;” phía sau <biểu thức> thì kết quả của
biến sẽ hiển thị lên cửa sổ lệnh.
Phép toán “=“ dùng để gán giá trị, phép toán “==“ dùng để so
sánh giá trị của 2 biểu thức (kết quả trả về là 1 hoặc 0).
Trang 18 Chia phải: / (ví dụ: XA = B X = B/A)
Chia trái: \ (ví dụ: AX = B X = B\A)
Chú ý
Designed by Hoàng Hữu Việt, Computer Engineering Department.
Chú ý:
Nếu kích thước của ma trận không phù hợp với phép
toán, một lỗi sẽ xẩy ra
[N] = length(X): trả về kích thước lớn nhất của X
[D] = det(X): trả về định thức của ma trân vuông X
Y = inv(X): trả về ma trân nghịch đảo Y của ma trận
vuông X
[I] = find(X): trả về các vị trí tương ứng với các phần
[I] = find(X): trả về các vị trí tương ứng với các phần
từ khác 0 (giá trị đúng) của ma trận X
Ví dụ:
X = [6 10 10 2 10 10 5 9] ;
find(X = 10) I = [2 3 5 6]
Trang 19Chương 2 Ma trận và mảng
Các phép toán trên ma trận
Các hàm làm việc với ma trận (tiếp)
[Y,I] = max(X): trả về giá trị và vị trí của phần tử lớn
nhất của các cột của ma trận X Giá trị lớn nhất lưu
trong vector Y và vị trí lưu trong vector I
Ví dụ:
X = [5 3 8; 4 9 1; 2 4 6; 1 7 3];
[Y,I] = max(X) Y = [5 9 8], I = [1 2 1].
[Y I] = min(X): trả về giá trị và vị trí của phần tử bé
Designed by Hoàng Hữu Việt, Computer Engineering Department.
[Y,I] = min(X): trả về giá trị và vị trí của phần tử bé
nhất của các cột của ma trận X Giá trị bé nhất lưu
trong vector Y và vị trí lưu trong vector I
Trang 20Các phép toán trên ma trận
Các hàm tạo ma trận
ố
X = zeros(M,N): tạo ma trận X kích thước MxN số 0
X = ones(M,N): tạo ma trận X kích thước MxN số 1
X = eye(N): tạo ma trận đơn vị X kích thước NxN
Y = diag(X): tạo vector đường chéo của ma trận X
Y = triu(X): tạo ma trận tam giá trên của ma trận X
Y = tril(X): tạo ma trận tam giác dưới của ma trận X
Designed by Hoàng Hữu Việt, Computer Engineering Department.
Y = tril(X): tạo ma trận tam giác dưới của ma trận X
X = rand(M,N): tạo ma trận X kích thước MxN với các
phần tử ngẫu nhiên từ -1 đến 1
X= randi(IMAX,M,N): tạo ma trận X kích thước MxN
với phần tử ngẫu nhiên từ 0 IMAX
Trang 21 So sánh lớn hơn: >; lớn hơn hoặc bằng: >=
So sánh bé hơn: <; bé hơn hoặc bằng: <=
Trang 22để truy nhập từng phần tử của xâu ký tự.
Các hàm làm việc với xâu:
Hàm [T] = num2str(A): chuyển ma trận A thành xâu
ký tự T
Chuyển số thành xâu ký tự?
Trang 23format short Hiển thị 5 chữ số thập phân
format long Hiển thị 15 chữ số thập phân
format short e Hiển thị dạng số e cùng 5 chữ số thập phân
format long e Hiển thị dạng số e cùng 15 chữ số thập phân
Designed by Hoàng Hữu Việt, Computer Engineering Department. Slide 25
format hex Hiển thị dạng số Hexa
format '+' Hiển thị dạng có dấu (+,-)
format bank Hiển thị thêm dấu $
format rat Hiển thị dang phân số
load <tên_têp>: đọc tất cả các biến từ tệp
load <tên_têp> x: đọc chỉ biến x từ tệp
Trang 24Kết thúc chương
Hỏi & Đáp
Designed by Hoàng Hữu Việt, Computer Engineering Department. Slide 27
Trang 25KHOA CÔNG NGHỆ THÔNG TIN
BỘ MÔN CÁC HỆ THỐNG THÔNG TIN
Hoang Huu Viet, Ph.D.,
Thiết lập kiểu đường, màu sắc, nét vẽ
Thiết lập các tham số cho đồ thị
Một số hàm vẽ thông dụng
Chỉ h ử iế đồ hị
Chỉnh sửa trực tiếp đồ thị
Vẽ nhiều đồ thị trong cùng hệ trục tọa độ
Vẽ nhiều đồ thị trong cùng cửa sổ
Đồ họa trong không gian
Trang 26Các lệnh làm việc với cửa sổ
Trang 27Chương 3 Đồ họa trong Matlab
Thiết lập kiểu đường, màu sắc, nét vẽ cho xâu s
Designed by Hoàng Hữu Việt, Computer Engineering Department. Slide 5
Chương 3 Đồ họa trong Matlab
Trang 28Đồ họa trong mặt phẳng
Thiết lập các tham số cho đồ thị
ồ
Hàm grid on/off: tạo/hủy lưới trên đồ thị
Hàm xlabel(‘tiêu đề trục x’): tạo tiêu đề trục x
Hàm ylabel(‘tiêu đề trục y’): tạo tiêu đề trục y
Hàm title(‘tiêu đề đồ thị’): tạo tiêu đề cho đồ thị:
Designed by Hoàng Hữu Việt, Computer Engineering Department. Slide 7
Chương 3 Đồ họa trong Matlab
Thiết lập chỉ trục tung: xlim(gca,[xmin, xmax]);
Thiết lập chỉ trục hoành: ylim(gca,[ymin, ymax]);
xmin, xmax là giới hạn trái và giới hạn phải của trục hoành.
ymin, ymax là giới hạn dưới và dưới hạn trên của trục tung.
Thiết lập nhãn cho trục tung trục hoành
Thiết lập nhãn cho trục tung, trục hoành
Trục tung: set(gca,’XTickLabel’,<các giá trị>);
Trục hoành: set(gca,’YTickLabel’,<các giá trị>);
Trang 29Chương 3 Đồ họa trong Matlab
Đồ họa trong mặt phẳng
Thiết lập các tham số cho đồ thị (tiếp)
Ví dụ:
Designed by Hoàng Hữu Việt, Computer Engineering Department. Slide 9
Chương 3 Đồ họa trong Matlab
nhật ở tọa độ (x,y) với chiều rộng w và chiều cao h
Hàm fill(x,y,c): vẽ đa giác với các đỉnh là các phần tử
của vector x, y và được tô màu c
Hàm text(x,y,’xâu ký tự’): hiển thị xâu ký tự ở vị trí
(x,y)
Trang 30Đồ họa trong mặt phẳng
Một số hàm thông dụng
Ví dụ: Vẽ 1 lục giác
Designed by Hoàng Hữu Việt, Computer Engineering Department. Slide 11
Chương 3 Đồ họa trong Matlab
Đồ họa trong mặt phẳng
Chỉnh sửa đồ thị
ể
Chọn biểu tượng trên thanh công cụ hoặc chọn
menu Tools Edit Plot
Bấm con trỏ chuột trên đồ thị nháy chuột pải:
Color: Màu đường vẽ.
LineStyle: kiểu đường vẽ.
Trang 31Chương 3 Đồ họa trong Matlab
Trang 32Designed by Hoàng Hữu Việt, Computer Engineering Department. Slide 15
Chương 3 Đồ họa trong Matlab
Đồ họa trong mặt phẳng
Vẽ nhiều đồ thị trong cùng một cửa sổ (tiếp)
ồ
Ví dụ 2: Vẽ 4 đồ thị trên 4 hệ trục tọa độ
Trang 33Chương 3 Đồ họa trong Matlab
Đồ họa trong không gian
Hàm plot3(x,y,z)
Dùng để vẽ các điểm có tọa độ là các phần tử của
vector x, y, z với x, y, z có cùng chiều dài (số phần tử)
Designed by Hoàng Hữu Việt, Computer Engineering Department. Slide 17
Chương 3 Đồ họa trong Matlab
Đồ họa trong không gian
Trang 34Đồ họa trong không gian
Vẽ đồ thị hàm hàm 2 biến z = f(x,y) (tiếp)
Hàm [X,Y] = meshgrid(x,y): tạo 2 ma trận X, Y từ 2
vector (x,y) để tính ma trận Z = f(X,Y)
Các hàng của ma trận X được sao chép từ vector x.
Các cột của ma trận Y được sao chép từ vector y.
Nếu vector x = y thì có thể dùng dạng: [X,Y] = meshgird(x);
Hàm mesh(X,Y,Z) hoặc mesh(X,Y,Z,C):
Designed by Hoàng Hữu Việt, Computer Engineering Department.
Dùng để vẽ đồ thị Z = f(X,Y) với màu là C.
Hàm surf(X,Y,Z) hoặc surf(X,Y,Z,C):
Dùng để vẽ bề mặt đồ thị Z = f(X,Y) với màu là C.
Slide 19
Chương 3 Đồ họa trong Matlab
Đồ họa trong không gian
Vẽ đồ thị hàm hàm 2 biến z = f(x,y)
Ví dụ
Trang 35Chương 3 Đồ họa trong Matlab
Đồ họa trong không gian
Thiết lập các tham số cho đồ thị
Hàm xlabel(‘tiêu đề trục x’): tạo tiêu đề trục x
Hàm ylabel(‘tiêu đề trục y’): tạo tiêu đề trục y
Hàm zlabel(‘tiêu đề trục z’): tạo tiêu đề trục z
Hàm title(‘tiêu đề đồ thị’): tạo tiêu đề cho đồ thị
Hàm axis([xmin xmax ymin ymax zmin zmax ]): thiết
lập giới hạn cho 3 trục tọa độ x: xminxmax
Designed by Hoàng Hữu Việt, Computer Engineering Department.
lập giới hạn cho 3 trục tọa độ x: xminxmax,
Trang 36BỘ MÔN CÁC HỆ THỐNG THÔNG TIN
Hoang Huu Viet, Ph.D.,
Trang 37Chương 4 Lập trình trong Matlab
Các hàm nhập/xuất dữ liệu
Hàm nhập dữ liệu từ bàn phím
Dạng 1:
Cú pháp: <biến> = input(‘xâu ký tự’);
Ý nghĩa: dùng để hiển thị ‘xâu ký tự’ lên màn hình, đợi người
sử dụng nhập dữ liệu số từ bán phím và lưu giá trị vào
Trang 38Các cấu trúc điều khiển
Matlab chia các cấu trúc điều khiển thành 2
Chương 4 Lập trình trong Matlab
Các cấu trúc điều khiển
Trang 39Chương 4 Lập trình trong Matlab
Các cấu trúc điều khiển
Cấu trúc rẽ nhánh
Cấu trúc if-end (tiếp)
Designed by Hoàng Hữu Việt, Computer Engineering Department. Slide 7
Chương 4 Lập trình trong Matlab
Các cấu trúc điều khiển
Ý nghĩa:
Nếu <biểu thức> đúng thì thực hiện <nhóm lệnh 1>, ngược lại
thì thực hiện <nhóm lệnh 2>.
Ví dụ: Giải phương trình ax + b = 0
Trang 40Các cấu trúc điều khiển
Cấu trúc rẽ nhánh
Cấu trúc if-else-end (tiếp)
Designed by Hoàng Hữu Việt, Computer Engineering Department. Slide 9
Chương 4 Lập trình trong Matlab
Các cấu trúc điều khiển
Nếu <biểu thức 1> đúng thì thực hiện <nhóm lệnh 1>, ngược
lại và nếu <biểu thức 2> thì thực hiện <nhóm lệnh 2>, ngược
lại thì thực hiện <nhóm lệnh 2>.
Trang 41Chương 4 Lập trình trong Matlab
Các cấu trúc điều khiển
Ý nghĩa: Nếu <biểu thức> == <hằng i> thực hiện <nhóm
lệnh i>, ngược lại thì thực hiện <nhóm lệnh n+1>.
Slide 11
Chương 4 Lập trình trong Matlab
Các cấu trúc điều khiển
Cấu trúc rẽ nhánh
Cấu trúc switch-case-otherwise-end (tiếp)
Ví dụ: Nhập vào 1 số, kiểm tra và hiển thị số đó là âm, 0, hay
dương.
Trang 42Các cấu trúc điều khiển
<biế > lầ l t hậ á iá t ị t <dã iá t ị> à th hiệ
Designed by Hoàng Hữu Việt, Computer Engineering Department.
<biến> lần lượt nhận các giá trị trong <dãy giá trị> và thực hiện
<nhóm lệnh>.
Chú ý: <dãy giá trị> là 1 vector các giá trị, chẳng hạn:
<giá trị đầu>:<giá trị cuối>
<giá trị đầu>:<bước nhảy>:<giá trị cuối>
Slide 13
Chương 4 Lập trình trong Matlab
Các cấu trúc điều khiển