Phạmvibiến
Matlab cung cấpcáckiểubiến trong hàm
Biếncụcbộ(local variable)
Biếntổng thể(global variable)
Biếncụcbộlà biếnđượcđịnh nghĩa trong 1 hàm và
nó tồntạichỉ khi hàmđượcthựchiện.
Biếntổng thể
Đượckhaibáovớitừkhóa global. Nó tồntạitrongmôi
trường Matlab và có thểđược dùng lại ởhàm khác.
Khi dùng lại, dùng từkhóa globalđểkhai báo lại.
Dùng lệnh “who global”đểxem biếntổng thể.
47 trang |
Chia sẻ: tuanhd28 | Lượt xem: 1836 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu MATrix LABoratory, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
11/4/2013
1
KHOA CÔNG NGHỆ THÔNG TIN
BỘ MÔN CÁC HỆ THỐNG THÔNG TIN
Hoang Huu Viet, Ph.D.,
MATrix LABoratory
E-mail: viethh.vinhuni@gmail.com
Sep., 2013
Matlab
Mục đích
Giới thiệu cơ bản về phần mềm MATLAB cho
i h iês n v n.
Ứ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.
Designed by Hoàng Hữu Việt, Computer Engineering Department. Slide 2
11/4/2013
2
Matlab
Nộ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 ì hguy n rung ng, r n c, p r n
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
Designed by Hoàng Hữu Việt, Computer Engineering Department.
.
Slide 4
11/4/2013
1
KHOA CÔNG NGHỆ THÔNG TIN
BỘ MÔN CÁC HỆ THỐNG THÔNG TIN
MATrix LABoratory
Hoang Huu Viet, Ph.D.,
E-mail: viethh.vinhuni@gmail.com
Sep., 2013
Chương 1. Nhập môn
Nội dung
Giới thiệu về MATLAB
ế Khởi động và k t thúc
Môi trường làm việc
M-File
Designed by Hoàng Hữu Việt, Computer Engineering Department. Slide 2
11/4/2013
2
Chương 1. Nhập môn
Giới thiệu về MATLAB
MATLAB (MATrix LABoratory) được Cleve Moler
hát i h à ối thậ iê 1970p m n v o cu p n n .
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 (
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.
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 ka or s.
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++,...
ể ố ế
Designed by Hoàng Hữu Việt, Computer Engineering Department.
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).
Slide 4
11/4/2013
3
Chươ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
Slide 5
Chương 1. Nhập môn
Khởi động và kết thúc
Khởi động Matlab
ể Nháy đúp vào bi u tượng ở màn hình máy tính.
Xuất hiện:
Designed by Hoàng Hữu Việt, Computer Engineering Department.
Kết thúc Matlab
Gõ exit và ấn enter tại dấu nhắc lệnh >>.
Slide 6
11/4/2013
4
Chương 1. Nhập môn
Môi trường làm việc
Nút
ằ 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á
nhân (calculator).
Chương 1. Nhập môn
Môi trường làm việc
Cửa sổ lệnh (tiếp)
ổ Các phím dùng trong cửa s lệnh
Phím Tác dụng
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
Designed by Hoàng Hữu Việt, Computer Engineering Department. Slide 8
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ỏ
11/4/2013
5
Chươ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.
... .
Ví dụ:
>> x = 1, y = 2, z = 3 (enter)
>> x + y; y + z; z + x;
Slide 9
Chương 1. Nhập môn
Môi trường làm việc
Cửa sổ Workspace
ể ế 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ổ
Designed by Hoàng Hữu Việt, Computer Engineering Department.
bị mất khi dùng lệnh xóa
clear all.
Slide 10
11/4/2013
6
Chương 1. Nhập môn
Mô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
ể Hi n thị các thư mục con và tệp của thư mục hiện
thời.
Thư mục hiện thời được chọn
Chú ý:
Thiết lập đường dẫn cho Matlab
Designed by Hoàng Hữu Việt, Computer Engineering Department.
Chọn File Set Path
Chọn Add Folder
Chọn Save
Slide 12
11/4/2013
7
Chương 1. Nhập môn
M-file
Matlab là một ngôn ngữ lập trình mà các lệnh
đ iết à ột tệ h t ì h à đóược v v o m p c ương r n v sau
thực hiện.
Tệp chương trình là một là một tệp văn bản
chứa các lệnh của Matlab và có phần mở rộng
“.m”, do đó tệp gọi là M-file.
M fil ó thể là ột tệ i t h ặ f ti
Designed by Hoàng Hữu Việt, Computer Engineering Department.
- e c m p scr p o c unc on
Script: chứa các lệnh matlab như khi làm việc tại dấu
nhắc cửa sổ lệnh.
Function: dùng để xây dựng hàm trong Matlab.
Slide 13
Chương 1. Nhập môn
M-file
Biên soạn M-file
ể 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 %.
Ghi M-file
Chọn biểu tượng trên thanh công cụ, hoặc chọn
File save
Designed by Hoàng Hữu Việt, Computer Engineering Department.
.
Thực hiện M-file
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.
Slide 14
11/4/2013
8
Chương 1. Nhập môn
Kết thúc chương
Hỏi & Đáp
Designed by Hoàng Hữu Việt, Computer Engineering Department. Slide 15
11/4/2013
1
KHOA CÔNG NGHỆ THÔNG TIN
BỘ MÔN CÁC HỆ THỐNG THÔNG TIN
Hoang Huu Viet, Ph.D.,
MATrix LABoratory
E-mail: viethh.vinhuni@gmail.com
Sep., 2013
Chương 2. Ma trận và mảng
Nội dung
Ma trận
ằ ế ể H ng, bi n, hàm, bi u thức
Các phép toán trên ma trận
Các phép toán trên mảng
Xâu ký tự
Định dạng hiển thị dữ liệu
Designed by Hoàng Hữu Việt, Computer Engineering Department. Slide 2
Một số lệnh cơ bản
11/4/2013
2
Chương 2. Ma trận và mảng
Ma trận
Biễu diễn ma trận
Trong Matlab, ma trận (matrix) là một bảng dữ liệu
gồm các hàng và các cột.
Ví dụ:
Một ma trận kích thước mxn nghĩa là ma trận có m
Designed by Hoàng Hữu Việt, Computer Engineering Department.
hàng, n cột.
Phần tử ở dòng i và cột j của ma trận A được ký hiệu
là A(i,j) (1≤ i ≤ n, 1≤ j ≤ m).
Slide 3
Chương 2. Ma trận và mảng
Ma trận
Biễu diễn ma trận (tiếp)
ố Một ma trận kích thức 1x1 là một s vô hướng.
Một ma trận kích thước 1xn là một véc tơ hàng.
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.
Designed by Hoàng Hữu Việt, Computer Engineering Department. Slide 4
11/4/2013
3
Chươ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
trong dấu [ ].
Ví dụ:
A = [1 2 3; 4 5 6; 7 8 9]; ma trận A kích thước 3x3.
B = [2 7 3 8 4 6 7 8 2]; vector hàng
Designed by Hoàng Hữu Việt, Computer Engineering Department.
C = [1; 3; 5; 7; 2; 1]; vector cột
Chú ý:
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.
Slide 5
Chương 2. Ma trận và mảng
Ma trận
Truy nhập phần tử của ma trận
ầ ố Các ph n tử của mảng được truy qua chỉ s dòng và
cột.
Cú pháp: tên_ma_trận(chỉ_số_dòng,chỉ_số_cột)
Ví dụ:
A = [1 2 3; 4 5 6; 7 8 9];
s1 = A(1,2) + A(1,2) + A(1,3); s2 = A(1,1) + A(2,2) + A(3,3);
Designed by Hoàng Hữu Việt, Computer Engineering Department.
Chú ý:
Nếu ma trận là 1 vector hàng hoặc cột thì chỉ cần dùng chỉ
số hàng hoặc chỉ số cột để truy nhập.
Ví dụ: a = [2 4 6 9 2 4] s = a(3) + a(5);
Slide 6
11/4/2013
4
Chương 2. Ma trận và mảng
Ma 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.
Ví dụ:
z = 1:8 vector z = 1 2 3 4 5 6 7 8
v = 1:-1 vector v = [] (vector rỗng)
Slide 7
Chương 2. Ma trận và mảng
Ma trận
Toán tử “:” (tiếp)
ể ố ầ Toán tử “:” được dùng đ trích một s ph n tử của
vector.
Ví dụ:
a = 0:2:12; a = [0 2 4 6 8 10 12]; b = a(3:6) b = [4 6 8 10].
Toán tử “:” được dùng để trích ra 1 tập hợp các hàng
hoặc các cột của một ma trận.
Designed by Hoàng Hữu Việt, Computer Engineering Department.
Ví dụ:
A(:,j) trích các phần tử ở cột j.
A(i,:) trích các phần tử ở hàng i.
A(2:5,j) trích các phần tử ở hàng 2 5 của cột j.
A(2:5,4:6) trích các phần tử ở hàng 2 4 và cột 46.
Slide 8
11/4/2013
5
Chương 2. Ma trận và mảng
Hằng, biến, hàm, biểu thức
Hằng (constant)
ằ ổ H ng là đại lượng có giá trị không thay đ i khi thực
hiện chương trình.
Matlab cung cấp các hằng số thực và số phức
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. i2 = j2 = -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.
Slide 9
Chương 2. Ma trận và mảng
Hằng, biến, hàm, biểu thức
Biến (variable)
ế ể 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
Designed by Hoàng Hữu Việt, Computer Engineering Department.
, , -,
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,..
Slide 10
11/4/2013
6
Chương 2. Ma trận và mảng
Hằng, biến, hàm, biểu thức
Biến (variable) (tiếp)
Ví dụ:
x = 5; tạo ra một ma trận x kích thước 1x1 để lưu giá trị 5.
y = [2 4 5]; tạo ra một ma trận y kích thước 1x3.
A = [1 3 4 5; 4 5 2 1]; tạo ra một ma trận A kích thước 2x4.
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
lệnh.
Ví dụ:
>> 5 ans = 5
>> [2 4 5] ans = [2 4 5]
Slide 11
Chương 2. Ma trận và mảng
Hằng, biến, hàm, biểu thức
Hàm (function)
ấ ề 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.
Một số hàm toán học cơ bản
Hàm Ý nghĩa Hàm Ý nghĩa
exp(x) ex asin(x) sin-1(x)
sqrt(x) cos(x) cos(x)x
Designed by Hoàng Hữu Việt, Computer Engineering Department. Slide 12
log(x) log(x) acos(x) cos-1(s)
log10(x) log10(x) tan(x) tang(x)
abs(x) |x| atan(x) tang-1(x)
sin(x) sin(x) sign(x) dấu của x
11/4/2013
7
Chương 2. Ma trận và mảng
Hằng, biến, hàm, biểu thức
Biểu thức (Expression)
ể ế ố Bi u thức là k t quả ghép n i các toán tử và các toán
hạng để diễn đạt một công thức.
Toán tử: là các phép toán
Toán hạng: là hằng, biến, hàm.
Ví dụ: y = 2 + x + exp(x) + ln(x).
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:
Giá trị khác 0: Mệnh đề đúng
Giá trị bằng 0: Mệnh đề sai
Slide 13
Chương 2. Ma trận và mảng
Hằng, biến, hàm, biểu thức
Phép toán gán giá trị
ế ể Dạng lệnh: = ;
Ý nghĩa: Dùng để gán giá trị của cho
Chú ý:
Nếu không có dấu “;” phía sau thì kết quả của
biến sẽ hiển thị lên cửa sổ lệnh.
Designed by Hoàng Hữu Việt, Computer Engineering Department.
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).
Slide 14
11/4/2013
8
Chương 2. Ma trận và mảng
Các phép toán trên ma trận
Matlab cung cấp các phép toán trên ma trận:
Cộng: + Trừ: -
Nhân: * Mũ: ^
Chuyển vị: ‘
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.
:
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.
Slide 15
Chươ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
ề ố [M,N] = size(X): trả v s dòng và cột của ma trận X.
[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
Designed by Hoàng Hữu Việt, Computer Engineering Department.
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]
Slide 16
11/4/2013
9
Chươ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.
,
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.
Ví dụ:
[Y,I] = min(X) Y = [1 3 1], I = [4 1 2].
Slide 17
Chươ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)
ề ổ [S] = sum(X): trả v 1 vector S là t ng các cột của ma
trận X.
Ví dụ:
X = [5 3 8; 4 9 1; 2 4 6; 1 7 3]
[S] = sum(X) S = [12 23 18] sum(S) = 53
[Y,I] = sort(X): trả về ma trận Y các cột được sắp tăng
dần của ma trận X Chỉ số sắp xếp lưu ở ma trận I
Designed by Hoàng Hữu Việt, Computer Engineering Department.
. .
Ví dụ:
X = [5 3 8; 4 9 1; 2 4 6; 1 7 3];
Y = sort(X) Y = [1 3 1; 2 4 3; 4 7 6; 5 9 8];
Chú ý: nếu X là 1 vector hàng, nó cũng được sắp tăng dần.
Slide 18
11/4/2013
10
Chương 2. Ma trận và mảng
Cá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.
.
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.
Slide 19
Chương 2. Ma trận và mảng
Các phép toán trên mảng
Mảng là một tập hợp các phần tử có cùng kiểu
dữ liệ à ỗi hầ tử đ đá h hỉ ố thu m m p n ược n c s eo
số chiều của mảng.
Mảng 1 chiều là 1 vector, mỗi phần tử có 1 chỉ số.
Mảng 2 chiều là 1 ma trận, mỗi phần tử có 2 chỉ số.
Mảng 3 chiều là tập hợp các ma trận, mỗi phần tử có
3 chỉ số Ví dụ: A = randi(10 2 3 4);
Designed by Hoàng Hữu Việt, Computer Engineering Department.
. , , ,
A(1,1,1) = 1; A(1,1,2) = 5; A(1,1,3) = 7; A(1,1,4) = 4;
Slide 20
11/4/2013
11
Chương 2. Ma trận và mảng
Các phép toán trên mảng
Các phép toán trên mảng được thực hiện trên
từ hầ tử ủ ảng p n c a m ng.
Các phép toán trên mảng giống với trên ma trận:
Công, trừ phần tử: +, -.
Các phép toán trên mảng khác với trên ma trận:
Nhân: .*
Chia: ./
Designed by Hoàng Hữu Việt, Computer Engineering Department.
Chia trái: .\
Mũ: .^
Ví dụ:
A = [1 2; 3 4]; A.*A = [1 4; 9 16];
B = [2 4; 5 7]; A.*B = [2 8; 15 28];
Slide 21
Chương 2. Ma trận và mảng
Các phép toán trên mảng
Các phép toán quan hệ
ằ 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: <=
So sánh bằng: ==; so sánh khác nhau: ~=
Chú ý:
Các phép toán quan hệ so sánh các phần tử của 2
ma trận và kết quả là 1 ma trận với các phần tử 0/1
Designed by Hoàng Hữu Việt, Computer Engineering Department.
.
Ví dụ:
A = [1 1 5; 2 5 1; 5 3 3]; B = [1 4 1; 5 5 2; 1 5 2]
C = A > B; C = [0 0 1; 0 0 0; 1 0 1];
D = (A == B); D = [1 0 0; 0 1 0; 0 0 0];
Slide 22
11/4/2013
12
Chương 2. Ma trận và mảng
Các phép toán trên mảng
Các phép toán logic
À Phép toán V : &
Phép toán HOẶC: |
Phép phủ định: ~
Chú ý:
Các phép toán logic so sánh các phần tử của 2 ma
trận và kết quả là 1 ma trận với các phần tử 0/1
Designed by Hoàng Hữu Việt, Computer Engineering Department.
.
Ví dụ:
A = [1 1 0; 2 5 1; 5 0 3]; ~A = [0 0 1; 0 0 0; 0 1 0];
Slide 23
Chương 2. Ma trận và mảng
Xâu ký tự
Xâu ký tự là một dãy các ký tự được đặt trong
ặ dấ ‘ ‘c p u .
Ví dụ: s = ‘I love Matlab so much’;
Xâu ký tự là 1 vector hàng dùng chỉ số hàng
để 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:
Designed by Hoàng Hữu Việt, Computer Engineering Department.
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ự?
Slide 24
11/4/2013
13
Chương 2. Ma trận và mảng
Định dạng hiển thị dữ liệu
Định dạng hiển thị số được điều khiển bởi các
lê hn sau:
Định dạng Ý nghĩa
format 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ố
Chương 2. Ma trận và mảng
Một số lệnh cơ bản
who: hiển thị các biến
clc: xóa màn hình
clear all: xóa tất cả các biến
save: các biến
save : ghi tất cả các biến vào tệp với phần
mở rộng .mat.
Designed by Hoàng Hữu Việt, Computer Engineering Department.
save x: ghi biến x vào tệp.
load: đọc các biến từ tệp
load : đọc tất cả các biến từ tệp.
load x: đọc chỉ biến x từ tệp.
Slide 26
11/4/2013
14
Chương 2. Ma trận và mảng
Kết thúc chương
Hỏi & Đáp
Designed by Hoàng Hữu Việt, Computer Engineering Department. Slide 27
11/4/2013
1
KHOA CÔNG NGHỆ THÔNG TIN
BỘ MÔN CÁC HỆ THỐNG THÔNG TIN
Hoang Huu Viet, Ph.D.,
MATrix LABoratory
E-mail: viethh.vinhuni@gmail.com
Sep., 2013
Chương 3. Đồ họa trong Matlab
Nội dung
Các lệnh làm việc với cửa sổ đồ thị
ồ ẳ Đ họa trong mặt ph ng
Hàm plot
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ị
Designed by Hoàng Hữu Việt, Computer Engineering Department. Slide 2
n s a trực t p t
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
11/4/2013
2
Chương 3. Đồ họa trong Matlab
Các lệnh làm việc với cửa sổ
Tạo cửa sổ để vẽ đồ thị
Cú pháp: figure;
Menu: các lệnh làm việc.
ToolBar: các lệnh thường dùng
Ghi cửa sổ đồ thị
Chọn biểu tượng Save
Xóa cửa sổ đồ thị
Designed by Hoàng Hữu Việt, Computer Engineering Department.
Cú pháp: clf;
Đóng tất cả các cửa sổ
Cú pháp: close all;
Slide 3
Chương 3. Đồ họa trong Matlab
Đồ họa trong mặt phẳng
Hàm plot(x,y)
Ý ồ ố ẳ nghĩa: Vẽ đ thị hàm s y = f(x) trong mặt ph ng
với x là vector đối số và y là vector kết quả của hàm f.
Ví dụ:
figure; x = -pi : 0.1 : pi; y = sin(x); plot(x,y);
Designed by Hoàng Hữu Việt, Computer Engineering Department. Slide 4
11/4/2013
3
Chương 3. Đồ họa trong Matlab
Đồ họa trong mặt phẳng
Hàm plot(x,y,s)
Ý ồ ố ẳ nghĩa: Vẽ đ thị hàm s y = f(x) trong mặt ph ng
với kiểu đường, màu sắc và nét vẽ được tạo dùng
xâu ký tự s.
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
Đồ họa trong mặt phẳng
Hàm plot(x,y,s) (tiếp)
Ví dụ:
figure; x = -pi : 0.1 : pi; y = sin(x); plot(x,y,’-b*);
Designed by Hoàng Hữu Việt, Computer Engineering Department. Slide 6
11/4/2013
4
Chương 3. Đồ họa trong Matlab
Đồ 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
Đồ họa trong mặt phẳng
Thiết lập các tham số cho đồ thị (tiếp)
ế Thi t lập phạm vi trục tung, trục hoành:
Thiết lập cả 2 trục: axis([xmin,xmax,ymin,ymax]);
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
Designed by Hoàng Hữu Việt, Computer Engineering Department.
,
Trục tung: set(gca,’XTickLabel’,);
Trục hoành: set(gca,’YTickLabel’,);
Slide 8
11/4/2013
5
Chươ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
Đồ họa trong mặt phẳng
Một số hàm vẽ thông dụng
ẳ ầ Hàm line(x,y): vẽ đường th ng với tọa độ là các ph n
tử trong vector x và y.
Ví dụ: line([1, 4, 3], [5, 1, 7]);
Hàm rectangle(‘position’, [x, y, w, h]): vẽ hình chữ
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ử
Designed by Hoàng Hữu Việt, Computer Engineering Department.
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).
Slide 10
11/4/2013
6
Chương 3. Đồ họa trong Matlab
Đồ 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ẽ.
LineWidth: độ lớn đường vẽ.
Designed by Hoàng Hữu Việt, Computer Engineering Department.
Marker: các ký hiệu trên đường vẽ.
MarkerSize: độ lớn ký hiệu vẽ.
Chọn menu Insert để chèn
các đối tượng khác vào đồ thị.
Slide 12
11/4/2013
7
Chương 3. Đồ họa trong Matlab
Đồ họa trong mặt phẳng
Vẽ nhiều đồ thị trong 1 hệ trục tọa độ
ồ Dùng lệnh “hold on” và vẽ các đ thị.
Thêm các chú thích trên các đồ thị
Cú pháp: legend(h,’chú thích 1’, ‘chú thích 2’,..,’chú thích n’);
h là 1 vector có n gía trị được lấy từ các lệnh plot:
h(1) = plot(x,y1); vẽ hàm y1 = f1(x);
h(2) = plot(x,y2); vẽ hàm y2 = f2(x);
Designed by Hoàng Hữu Việt, Computer Engineering Department.
...
h(n) = plot(x,yn); vẽ hàm yn = fn(x);
Slide 13
Chương 3. Đồ họa trong Matlab
Đồ họa trong mặt phẳng
Vẽ nhiều đồ thị trong 1 hệ trục tọa độ
Ví dụ:
Designed by Hoàng Hữu Việt, Computer Engineering Department. Slide 14
11/4/2013
8
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ổ
ổ Hàm subplot(m,n,p) hoặc subplot mnp: chia cửa s
thành bảng có m hàng, n cột hệ trục tọa độ và hệ trục
tọa độ thứ p được chọn để vẽ.
Ví dụ 1: subplot(2,3,4) tạo ra 6 hệ trục tọa độ và chọn hệ
trục tọa độ thứ 4 để vẽ.
Designed 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 độ
Designed by Hoàng Hữu Việt, Computer Engineering Department. Slide 16
11/4/2013
9
Chươ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
Vẽ đồ thị hàm hàm 2 biến z = f(x,y)
Sinh ra ma trận X và Y lặp lại các dòng và cột.
Ví dụ: vẽ hàm z = x^2 + y^2), 1<= x <= 6; 1<=y<=4;
Sinh ra ma trận X, Y
Designed by Hoàng Hữu Việt, Computer Engineering Department.
Tính ma trận Z = f(X,Y)
Vẽ các ma trận (X,Y,Z)
Slide 18
11/4/2013
10
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) (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ụ
Designed by Hoàng Hữu Việt, Computer Engineering Department. Slide 20
11/4/2013
11
Chươ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.
,
y:yminymax, và z:zminzmax.
Slide 21
Chương 3. Đồ họa trong Matlab
Kết thúc chương
Hỏi & Đáp
Designed by Hoàng Hữu Việt, Computer Engineering Department. Slide 22
11/4/2013
1
KHOA CÔNG NGHỆ THÔNG TIN
BỘ MÔN CÁC HỆ THỐNG THÔNG TIN
Hoang Huu Viet, Ph.D.,
MATrix LABoratory
E-mail: viethh.vinhuni@gmail.com
Sep., 2013
Chương 4. Lập trình trong Matlab
Nội dung
Các lệnh nhập/xuất dữ liệu
ấ Các c u trúc lập trình
Cấu trúc if-end
Cấu trúc switch-case-end
Cấu trúc for-end
Cấu trúc while-end
Designed by Hoàng Hữu Việt, Computer Engineering Department. Slide 2
Xây dựng hàm trong Matlab
11/4/2013
2
Chươ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: = 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
.
Ví dụ:
n = input(‘nhap so nguyen n =‘);
Designed by Hoàng Hữu Việt, Computer Engineering Department.
Dạng 2:
Cú pháp: = input(‘xâu ký tự’ ’,’s’);
Ý nghĩa: Giống dạng 1 nhưng dùng để nhập một xâu ký tự
vào .
Slide 3
Chương 4. Lập trình trong Matlab
Các hàm nhập/xuất dữ liệu
Hàm xuất dữ liệu ra màn hình
Cú pháp: disp(X);
Ý nghĩa: Hiển thị giá trị mảng X hoặc xâu dữ liệu X ra
màn hình.
Ví dụ 1:
disp(‘I love Matlab so much !’);
Ví dụ 2:
Designed by Hoàng Hữu Việt, Computer Engineering Department.
s = sum(1:100);
disp([‘tong tu 1 den 100 la:’,num2str(s)]);
x = [1 2 3 4 5];
disp([‘vector x = ‘,num2str(x)]);
Slide 4
11/4/2013
3
Chương 4. Lập trình trong Matlab
Các cấu trúc điều khiển
Matlab chia các cấu trúc điều khiển thành 2
dạng:
Các cấu trúc rẽ nhánh
if-end
if-else-end
if-elseif-else-end
switch-case-otherwise-end
Designed by Hoàng Hữu Việt, Computer Engineering Department.
Các cấu trúc lặp
for-end
while-end
Slide 5
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 if-end
Cú pháp:
if
end
Ý nghĩa:
Nế đú thì th hiệ
Designed by Hoàng Hữu Việt, Computer Engineering Department.
u u c ng ực n n m n .
Ví dụ:
Giải phương trình ax + b = 0 dùng nhiều câu lệnh if lồng
nhau
Slide 6
11/4/2013
4
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 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
Cấu trúc rẽ nhánh
ấ C u trúc if-else-end
Cú pháp:
if
else
d
Designed by Hoàng Hữu Việt, Computer Engineering Department.
en
Ý nghĩa:
Nếu đúng thì thực hiện , ngược lại
thì thực hiện .
Ví dụ: Giải phương trình ax + b = 0
Slide 8
11/4/2013
5
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 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
Cấu trúc rẽ nhánh
ấ C u trúc if-elseif-else-end
Cú pháp:
if
elseif
else
Designed by Hoàng Hữu Việt, Computer Engineering Department.
n m n
end
Ý nghĩa:
Nếu đúng thì thực hiện , ngược
lại và nếu thì thực hiện , ngược
lại thì thực hiện .
Slide 10
11/4/2013
6
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ấ t ú it h th i d u r c sw c -case-o erw se-en
Cú pháp:
switch
case
case
Designed by Hoàng Hữu Việt, Computer Engineering Department.
...
[otherwise]
end
Ý nghĩa: Nếu == thực hiện <nhóm
lệnh i>, ngược lại thì thực hiện .
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ấ t ú it h th i d (tiế ) u r c sw c -case-o erw se-en p
Ví dụ: Nhập vào 1 số, kiểm tra và hiển thị số đó là âm, 0, hay
dương.
Designed by Hoàng Hữu Việt, Computer Engineering Department. Slide 12
11/4/2013
7
Chương 4. Lập trình trong Matlab
Các cấu trúc điều khiển
Cấu trúc lặp
ấ C u trúc for-end
Cú pháp:
for =
end
Ý nghĩa:
lầ l t hậ á iá t ị t à th hiệ
Designed by Hoàng Hữu Việt, Computer Engineering Department.
n n ượ n n c c g r rong y g r v ực n
.
Chú ý: là 1 vector các giá trị, chẳng hạn:
:
::
Slide 13
Chương 4. Lập trình trong Matlab
Các cấu trúc điều khiển
Cấu trúc lặp
ấ ế C u trúc for-end (ti p)
Ví dụ: Nhập vào 1 số n, tính tổng các số chẳn 1 n.
Designed by Hoàng Hữu Việt, Computer Engineering Department.
Chú ý: đoạn vòng lặp có thể thực hiện theo cách:
Slide 14
11/4/2013
8
Chương 4. Lập trình trong Matlab
Các cấu trúc điều khiển
Cấu trúc lặp
ấ C u trúc while-end
Cú pháp:
while
end
Ý nghĩa:
Khi đú thì đ th hiệ
Designed by Hoàng Hữu Việt, Computer Engineering Department.
u c ng n m n ược ực n.
Chú ý:
Nếu luôn luôn đúng thì vòng lặp thực hiện vô hạn
lần. Để kết thúc, ấn CTRL + C.
Slide 15
Chương 4. Lập trình trong Matlab
Các cấu trúc điều khiển
Cấu trúc lặp
ấ ế C u trúc while-end (ti p)
Ví dụ 1: Nhập 1 số n, tính tổng s = 1 + 32 + 52 + ..+ (2n+1)2.
Designed by Hoàng Hữu Việt, Computer Engineering Department. Slide 16
11/4/2013
9
Chương 4. Lập trình trong Matlab
Các cấu trúc điều khiển
Cấu trúc lặp
ấ ế C u trúc while-end (ti p)
Ví dụ 2: Nhập 1 số n, tìm và in ra các số nguyên tố từ 2n.
Designed by Hoàng Hữu Việt, Computer Engineering Department. Slide 17
Chương 4. Lập trình trong Matlab
Các cấu trúc điều khiển
Cấu trúc lặp
Lệnh break
Cú pháp:
break;
Ý nghĩa:
Dùng để kết thúc vòng lặp for hoặc while. Các lệnh ở phía sau
break không được thực hiện.
Lệnh continue
Designed by Hoàng Hữu Việt, Computer Engineering Department.
Cú pháp:
continue;
Ý nghĩa:
Kết thúc vòng lặp hiện thời của và thực hiện vòng lặp tiếp theo
trong các câu lệnh for hoặc while.
Slide 18
11/4/2013
10
Chương 4. Lập trình trong Matlab
Các cấu trúc điều khiển
Cấu trúc lặp
Lệnh return
Cú pháp:
return;
Ý nghĩa:
Dùng để kết thúc chương trình tại vị trí lệnh return.
Ví dụ: Nhập vào 1 số nguyên dương n và tính s = 1+2+3+..n.
Designed by Hoàng Hữu Việt, Computer Engineering Department. Slide 19
Chương 4. Lập trình trong Matlab
Xây dựng hàm
Ngoài các hàm có sẳn, người sử dụng có thể
â d thê á hà ới t M filx y ựng m c c m m rong - e.
Hàm được xây dựng theo cấu trúc sau:
function [các_đối_số_ra] = tên_hàm(các_đối_số_vào)
end
Designed by Hoàng Hữu Việt, Computer Engineering Department.
Chú ý
Tên hàm đặt theo quy tắc đặt tên biến.
Mỗi đối số cách nhau một dấu “,”.
Slide 20
11/4/2013
11
Chương 4. Lập trình trong Matlab
Xây dựng hàm
Chú ý (tiếp):
ế ế N u một tệp M-file chỉ vi t một hàm thì tên tệp phải
trùng với tên hàm.
Một têp M-file cũng có thể viết nhiều hàm. Khi đó
hàm đầu tiên là hàm chính để gọi các hàm còn lại.
Ví dụ 1: Hàm tính diện tích tam giác
function [s] = dien tich(a,b,c)
Designed by Hoàng Hữu Việt, Computer Engineering Department.
_
p = (a+b+c)/2;
s = sqrt(p*(p-a)*(p-b)*(p-c));
end
Slide 21
Chương 4. Lập trình trong Matlab
Xây dựng hàm
Phạm vi biến
ấ ể ế Matlab cung c p các ki u bi n trong hàm
Biến cục bộ (local variable)
Biến tổng thể (global variable)
Biến cục bộ là biến được định nghĩa trong 1 hàm và
nó tồn tại chỉ khi hàm được thực hiện.
Biến tổng thể
Designed by Hoàng Hữu Việt, Computer Engineering Department.
Được khai báo với từ khóa global. Nó tồn tại trong môi
trường Matlab và có thể được dùng lại ở hàm khác.
Khi dùng lại, dùng từ khóa global để khai báo lại.
Dùng lệnh “who global” để xem biến tổng thể.
Slide 22
11/4/2013
12
Chương 4. Lập trình trong Matlab
Kết thúc chương
Hỏi & Đáp
Designed by Hoàng Hữu Việt, Computer Engineering Department. Slide 23
Các file đính kèm theo tài liệu này:
- matlab_7664.pdf