Professional Documents
Culture Documents
Thực hành
Lý thuyết điều khiển tự động
Automatic Control
Trường đại học Công nghệ - Đại học Quốc gia Hà Nội
A. Mảng
B. Các phép toán với mảng
C. Làm việc với m-file và quản lý dữ liệu
D. Lập trình với Matlab
E. Function file
F. Đa thức
G. Symbolic toolbox
❖ Các phần tử của hàng ngăn cách bởi dấu cách hoặc dấu phẩy (,)
❖ Các phần tử của cột ngăn cách bởi dấu chấm phẩy (;) hoặc enter xuống
dòng
❖ Dùng dấu hai chấm (:) để tạo véc tơ hàng cách đều x = [m:q:n] hoặc x =
m:q:n
❖ Dùng lệnh linspace để tạo véc tơ hàng cách đều x = linspace(a,b,n)
❖ Một số mảng đặc biệt
▫ zeros(m,n): Tạo ma trận kích thước m,n gồm toàn phần tử 0
▫ ones(m,n): Tạo ma trận kích thước m,n gồm toàn phần tử 1
▫ eye(n): Tạo ma trận đơn vị kích thước n,n
❖ Sử dụng dấu nháy đơn (’) để tạo mảng chuyển vị
❖ Truy cập một phần tử của véc tơ: dùng dấu ngoặc đơn () để chỉ định
thứ tự phần tử cần truy cập
❖ Truy cập một phần tử của ma trận: dùng dấu ngoặc đơn () để chỉ định
thứ tự hàng, cột của phần tử cần truy cập
I. Thực hiện các lệnh dưới đây và tìm hiểu ý nghĩa của lệnh
1. >> a = [1:2:5] %tạo véc tơ hàng cách đều
2. >> b = [1:2:7]’
3. >> c = linspace(1,5,3)
4. >> d = linspace(1,2)
5. >> e = [1 2; 3 4]
6. >> f = zeros(2,3)
7. >> g = ones(2,2)
8. >> h = [1 3 2 4]
k = h(3)
❖ Cộng trừ các mảng với nhau: các mảng được cộng trừ phải có cùng
kích thước
❖ Cộng trừ các mảng với một số: số đó sẽ được cộng vào từng phần tử
của mảng
❖ Muốn thực hiện A x B thì số hàng của A phải bằng số cột của B
❖ Nhân các mảng với một số: số đó sẽ được nhân vào từng phần tử của
mảng
❖ Dùng lệnh inv(A) hoặc A^(-1) để tính nghịch đảo của ma trận vuông A
❖ Phép tính trên từng phần tử:
( t + 1)
2/3 2
20t 2
y= − 0.3t +5 +
t +1 e t +1
❖ 1. Các biến được tạo và gán giá trị bên trong m-file
❖ 2. Các biến được tạo và gán giá trị bên ngoài m-file từ Command
Window
❖ 3. Các biến được tạo bên trong m-file nhưng được gán giá trị bên ngoài
m-file từ Command Window bằng lệnh input
❖ 1. Các biến được tạo và gán giá trị bên trong m-file
❖ 2. Các biến được tạo và gán giá trị bên ngoài m-file từ Command
Window
❖ 3. Các biến được tạo bên trong m-file nhưng được gán giá trị bên ngoài
m-file từ Command Window bằng lệnh input
❖ 1. Lệnh disp dùng để hiện thị ra ngoài màn hình giá trị của một biến
hoặc một chuỗi ký tự.
Cấu trúc: disp(tên biến)
disp(‘ chuỗi ký tự ’)
❖ 2. Lệnh fprintf có thể dùng để hiện thị các output ra ngoài màn hình
hoặc ghi chúng vào các file lưu trữ
a) Dùng fprintf để hiển thị chuỗi ký tự. Khác với disp là mỗi lệnh
một dòng, với fprintf, muốn xuống dòng thì luôn phải sử dụng \n
b) Dùng fprintf để hiển thị chuỗi ký tự kết hợp với dữ liệu giá trị số
fprintf ( ‘..text....%f....%g...%f...’ , biến 1, biến 2, biến 3 )
I. Viết m-file tính toán diện tích hình tròn. Yêu cầu người dùng nhập vào
giá trị bán kính hình tròn, và hiển thị thông báo kết quả “Dien tich hinh
tron ban kinh X la Y”, trong đó X là bán kính, Y là diện tích
Kết quả của các phép toán quan hệ là giá trị logic
0 và 1, bằng 1 (nếu đúng) và bằng 0 (nếu sai)
• if - end
• if - else - end
• if - elseif - else - end
Sau if, else, elseif là các biểu
thức quan hệ hoặc logic
• if - end
• if - else - end
• if - elseif - else - end
Sau if, else, elseif là các biểu
thức quan hệ hoặc logic
I. Tạo một véc tơ gồm 30 phần tử là các số nguyên ngẫu nhiên trong
khoảng [20,30] minh họa nhiệt độ 30 ngày trong 1 tháng.
Hãy tìm:
1. Số ngày có nhiệt độ cao hơn 24
2. Số ngày có nhiệt độ nằm giữa 22 và 26
3. Các ngày có nhiệt độ nằm giữa 22 và 26
II. Viết m-file nhập vào số n, báo lỗi nếu n không nguyên, nếu n là số
nguyên, kiểm tra xem n chẵn hay lẻ và hiển thị thông báo kết quả.
1. Sử dụng “if”
2. Sử dụng “switch – case”
( −1) k
k
n
III. Viết m-file tính tổng của n số hạng đầu của tổng
k =1 2k
❖ MATLAB cho phép người dùng tự định nghĩa các hàm số.
❖ Các hàm này được lưu dưới dạng .m file, và được sử dụng tương tự
như các hàm có sẵn của MATLAB (sin(x), cos(x)...)
❖ Ví dụ:
❖ Với hàm có sẵn y = sin(x), với input là x thì output sẽ là giá trị sin(x)
❖ Người dùng có thể định nghĩa hàm tính chu vi hình chữ nhật. Với hàm
này, input sẽ là độ dài hai cạnh a,b; output sẽ là chu vi của hình chữ
nhật.
❖ Cách function file được tạo và chỉnh sửa bằng cửa sổ Editor
chuvi.m
Dòng đầu tiên trong một function file luôn
function c = chuvi(a,b) là dòng định nghĩa của hàm, bắt đầu bằng từ
% chuvi, hinhchunhat khóa function
% input: hai canh a,b >> A = chuvi(2,3)
% output: chu vi hinh chu nhat A = 10
% Ban quyen: Khoa CHKT & TDH
c = 2*(a + b); >> help chuvi
chuvi, hinhchunhat
input: hai canh a,b
output: chu vi hinh chu nhat
Ban quyen: Khoa CHKT & TDH
❖ Các function rất, rất, rất nên được lưu thành các m-file có tên file trùng
với tên của function đó
❖ Các function chỉ có thể được gọi thành công khi các function file được
lưu trữ trong Current Folder của MATLAB
function [c,s,d] = ChuviDientichDuongcheo(a,b) ChuviDientichDuongcheo.m
function [c] = chuvi(a,b) chuvi.m
❖ Các function do người dùng định nghĩa được gọi và sử dụng tương tự
như các function có sẵn của MATLAB
Thân function
❖ Bao gồm toàn bộ nội dung tính toán của function
❖ Nếu function có output thì bắt buộc phải có phần gán giá trị cho các output
❖ Có thể có các ghi chú đặt sau dấu %, tuy nhiên các ghi chú này sẽ không
được hiển thị khi gọi lệnh Help
I. Viết function tính chu vi, diện tích hình tròn biết bán kính r
II. Viết function đổ xúc xắc, output là một số nguyên ngẫu nhiên trong
khoảng 1-6
❖ Trong MATLAB, các đa thức được biểu diễn bởi véc tơ hàng chứa các
hệ số của đa thức đó
r = roots(p) p = poly(r)
❖ Chia
[q,r] = deconv(u,v)
q là thương u là đa thức bị chia
r là phần dư v là đa thức chia
Lưu ý: r và u sẽ có cùng độ dài
❖ eq có thể chứa hoặc không chứa dấu bằng, viết dưới dạng biểu thức
hoặc chuỗi ký tự
❖ eq có thể chứa một hoặc nhiều ❖ eq có thể chứa cả các biến chưa
biến. Khi đó nếu không chỉ được khai báo, nhưng khi đó phải
định biến làm ẩn, thì solve sẽ được viết dưới dạng chuỗi ký tự
giải phương trình theo biến
mặc định của eq
❖ Lệnh solve có thể được dùng để giải hệ nhiều phương trình đại số
❖ Nếu số biến bằng số phương trình của hệ, thì nghiệm là dạng
numerical
❖ Nếu số biến nhiều hơn số phương trình của hệ, thì nghiệm sẽ là dạng
symbolic biểu diễn ẩn thông qua các biến khác.
Cú pháp
output = solve (eq1, eq2,...,eqn)
output = solve (eq1, eq2,...,eqn, biến 1, biến 2,..., biến n)