You are on page 1of 39

Trường đại học Công nghệ - Đại học Quốc Gia Hà Nội

Thực hành
Lý thuyết điều khiển tự động

Giảng viên: TS. Trần Cường Hưng

Automatic Control
Trường đại học Công nghệ - Đại học Quốc gia Hà Nội

Thực hành Lý thuyết điều khiển tự động


Ôn tập Matlab
Nội dung

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

Giảng viên: TS. Trần Cường Hưng


Trường đại học Công nghệ - Đại học Quốc gia Hà Nội

Thực hành Lý thuyết điều khiển tự động


Mảng
Tạo mảng

❖ 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

>> a = [1 2 3] >> c= [1;2;3] >> d = [1


a= 1 2 3 c= 2
1 3]
>> b = [1,2,3] 2
b= 1 2 3 3 d=
1
2
3

Giảng viên: TS. Trần Cường Hưng


Trường đại học Công nghệ - Đại học Quốc gia Hà Nội

Thực hành Lý thuyết điều khiển tự động


Mảng
Tạo mả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

Giảng viên: TS. Trần Cường Hưng


Trường đại học Công nghệ - Đại học Quốc gia Hà Nội

Thực hành Lý thuyết điều khiển tự động


Mảng
Bài tậ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)

Giảng viên: TS. Trần Cường Hưng


Trường đại học Công nghệ - Đại học Quốc gia Hà Nội

Thực hành Lý thuyết điều khiển tự động


Mảng
Bài tập

II. Tạo các véc tơ hàng sau đây


1. Có phần tử đầu là 2, phần tử cuối là 37, bước nhảy là 5.
2. Có 9 phần tử cách đều, phần tử đầu 81, phần tử cuối 12.
3. Có phần tử đầu 22.5, phần tử cuối 0 và bước nhảy là -2.5.
4. Có 10 phần tử cách đều, phần tử đầu -21, phần tử cuối 12.
5. Có 7 phần tử toàn là -3.
6. Có 9 phần tử, trong đó phần tử cuối là 7.5, còn lại toàn 0 (bằng 1 câu
lệnh).
7. b = 1 2 3 4 5 6 7 8 9 8 7 6 5 4 3 2 1 (bằng 1 câu lệnh).

Giảng viên: TS. Trần Cường Hưng


Trường đại học Công nghệ - Đại học Quốc gia Hà Nội

Thực hành Lý thuyết điều khiển tự động


Các phép toán với mảng
Các phép toán cơ bản

❖ 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ử:

Giảng viên: TS. Trần Cường Hưng


Trường đại học Công nghệ - Đại học Quốc gia Hà Nội

Thực hành Lý thuyết điều khiển tự động


Các phép toàn với mảng
Một số hàm có sẵn

Giảng viên: TS. Trần Cường Hưng


Trường đại học Công nghệ - Đại học Quốc gia Hà Nội

Thực hành Lý thuyết điều khiển tự động


Các phép toán với mảng
Bài tập

I. Tính tích vô hướng của hai véc tơ sau theo 3 cách


u = (-3,8,-2); v = (6.5, -5, -4)
a) Tạo véc tơ tích từng phần tử rồi dùng lệnh sum.
b) Sử dụng tích véc tơ.
c) Dùng lệnh dot.
II. Tính giá trị của hàm y(t) tại 0,1,2,3,4,5,6,7,8. Vẽ đồ thị

( t + 1)
2/3 2
20t 2
y= − 0.3t +5 +
t +1 e t +1

Giảng viên: TS. Trần Cường Hưng


Trường đại học Công nghệ - Đại học Quốc gia Hà Nội

Thực hành Lý thuyết điều khiển tự động


Làm việc với m-file và quản lý dữ liệu
Cách thức tạo giá trị input cho một m-file

❖ 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

Giảng viên: TS. Trần Cường Hưng


Trường đại học Công nghệ - Đại học Quốc gia Hà Nội

Thực hành Lý thuyết điều khiển tự động


Làm việc với m-file và quản lý dữ liệu
Cách thức tạo giá trị input cho một m-file

❖ 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

Giảng viên: TS. Trần Cường Hưng


Trường đại học Công nghệ - Đại học Quốc gia Hà Nội

Thực hành Lý thuyết điều khiển tự động


Làm việc với m-file và quản lý dữ liệu
Cách thức tạo giá trị input cho một m-file

❖ 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

Giảng viên: TS. Trần Cường Hưng


Trường đại học Công nghệ - Đại học Quốc gia Hà Nội

Thực hành Lý thuyết điều khiển tự động


Làm việc với m-file và quản lý dữ liệu
Các lệnh output để xuất dữ liệu

❖ 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 )

Giảng viên: TS. Trần Cường Hưng


Trường đại học Công nghệ - Đại học Quốc gia Hà Nội

Thực hành Lý thuyết điều khiển tự động


Làm việc với m-file và quản lý dữ liệu
Bài tập

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

Giảng viên: TS. Trần Cường Hưng


Trường đại học Công nghệ - Đại học Quốc gia Hà Nội

Thực hành Lý thuyết điều khiển tự động


Lập trình với Matlab
Các phép toán quan hệ

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)

Giảng viên: TS. Trần Cường Hưng


Trường đại học Công nghệ - Đại học Quốc gia Hà Nội

Thực hành Lý thuyết điều khiển tự động


Lập trình với Matlab
Thứ tự ưu tiên giữa các phép toán

Giảng viên: TS. Trần Cường Hưng


Trường đại học Công nghệ - Đại học Quốc gia Hà Nội

Thực hành Lý thuyết điều khiển tự động


Lập trình với Matlab
Câu lệnh
CÂU LỆNH ĐIỀU KIỆN if

Cấu trúc cơ bản

• 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

Giảng viên: TS. Trần Cường Hưng


Trường đại học Công nghệ - Đại học Quốc gia Hà Nội

Thực hành Lý thuyết điều khiển tự động


Lập trình với Matlab
Câu lệnh
CÂU LỆNH ĐIỀU KIỆN if

Cấu trúc cơ bản

• 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

Giảng viên: TS. Trần Cường Hưng


Trường đại học Công nghệ - Đại học Quốc gia Hà Nội

Thực hành Lý thuyết điều khiển tự động


Lập trình với Matlab
Câu lệnh
CÂU LỆNH CHIA NHÁNH switch - case
Cấu trúc cơ bản
switch
case 1
case 2
...
case n
otherwise (có thể có hoặc không)
end

Giảng viên: TS. Trần Cường Hưng


Trường đại học Công nghệ - Đại học Quốc gia Hà Nội

Thực hành Lý thuyết điều khiển tự động


Lập trình với Matlab
Câu lệnh
VÒNG LẶP for-end Một số lưu ý
• Mỗi một vòng for đều phải có một kết thúc
Sử dụng để lặp đi lặp lại một cụm
end tương ứng
lệnh theo một số lần xác định trước • Giá trị của k mặc định là không hiển thị khi
thực hiện các lần lặp
• Khi vòng lặp kết thúc, k sẽ nhận giá trị của
lần lặp cuối cùng

Giảng viên: TS. Trần Cường Hưng


Trường đại học Công nghệ - Đại học Quốc gia Hà Nội

Thực hành Lý thuyết điều khiển tự động


Lập trình với Matlab
Câu lệnh
VÒNG LẶP while-end Một số lưu ý
• Biểu thức điều kiện của lệnh while phải
Sử dụng để lặp đi lặp lại một cụm
chưa ít nhất 1 biến
lệnh theo một số lần không xác định • Biến trong biểu thức điều kiện phải được
trước. Cụm lệnh lặp sẽ được thực gán giá trị khi MATLAB thực hiện lệnh
hiện lặp cho đến khi một biểu thức while lần đầu tiên
điều kiện được thỏa mãn • Ít nhất 1 trong các biến của biểu thức điều
kiện phải được gán giá trị mới khi thực thi
cụm lệnh của while, nếu không vòng lặp sẽ
lặp vô hạn lần

Giảng viên: TS. Trần Cường Hưng


Trường đại học Công nghệ - Đại học Quốc gia Hà Nội

Thực hành Lý thuyết điều khiển tự động


Lập trình với Matlab
Bài tập

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

Giảng viên: TS. Trần Cường Hưng


Trường đại học Công nghệ - Đại học Quốc gia Hà Nội

Thực hành Lý thuyết điều khiển tự động


Function file
Hàm do người dùng định nghĩa và function-file

❖ 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.

Giảng viên: TS. Trần Cường Hưng


Trường đại học Công nghệ - Đại học Quốc gia Hà Nội

Thực hành Lý thuyết điều khiển tự động


Function file
Cách tạo function file

❖ 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

>> lookfor hinhchunhat


chuvi.m: % chuvi, hinhchunhat
Giảng viên: TS. Trần Cường Hưng
Trường đại học Công nghệ - Đại học Quốc gia Hà Nội

Thực hành Lý thuyết điều khiển tự động


Function file
Lưu trữ các function file

❖ 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

Giảng viên: TS. Trần Cường Hưng


Trường đại học Công nghệ - Đại học Quốc gia Hà Nội

Thực hành Lý thuyết điều khiển tự động


Function file
Cấu trúc của function file

Dòng định nghĩa hàm


❖ Cú pháp
function [các output] = tên_hàm(các input)
❖ Ví dụ
function [c, s] = chuvidientich(a,b,c)
❖ Chức năng
▫ Xác nhận file này là function file
▫ Định nghĩa tên hàm
▫ Định nghĩa và xác định thứ tự của các biến input, output
❖ Các quy định đặt tên các function cũng giống như các quy định đặt tên
các biến

Giảng viên: TS. Trần Cường Hưng


Trường đại học Công nghệ - Đại học Quốc gia Hà Nội

Thực hành Lý thuyết điều khiển tự động


Function file
Cấu trúc của function file

Ví dụ dòng định nghĩa hàm


function [c,s] = chuvidientich(a,b,c) 3 input, 2 output
function [c] = chuvi(a,b,c) 1 output
function c = chuvi(a,b,c) 1 output, bỏ qua ngoặc vuông []
function chuvi(a,b,c) không có output

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

Giảng viên: TS. Trần Cường Hưng


Trường đại học Công nghệ - Đại học Quốc gia Hà Nội

Thực hành Lý thuyết điều khiển tự động


Function file
Bài tập

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

Giảng viên: TS. Trần Cường Hưng


Trường đại học Công nghệ - Đại học Quốc gia Hà Nội

Thực hành Lý thuyết điều khiển tự động


Đa thức
Biểu diễn đa thức

❖ 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 đó

Cách viết trong MATLAB

Giảng viên: TS. Trần Cường Hưng


Trường đại học Công nghệ - Đại học Quốc gia Hà Nội

Thực hành Lý thuyết điều khiển tự động


Đa thức
Tính giá trị và nghiệm đa thức

❖ Tính giá trị đa thức – Lệnh polyval


polyval(p,x)
véc tơ hệ số của đa thức điểm cần tính giá trị đa thức,
có thể là số, véc tơ, ma trận

❖ Nghiệm của đa thức – Lệnh roots và lệnh poly


véc tơ cột chứa các
nghiệm của đa thức

r = roots(p) p = poly(r)

véc tơ hệ số của đa thức


Giảng viên: TS. Trần Cường Hưng
Trường đại học Công nghệ - Đại học Quốc gia Hà Nội

Thực hành Lý thuyết điều khiển tự động


Đa thức
Phép toán của đa thức

❖ Cộng, trừ: Yêu cầu các đa thức có cùng độ dài


❖ Nhân
c = conv(a,b)
đa thức tích đa thức thừa số

❖ 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

Giảng viên: TS. Trần Cường Hưng


Trường đại học Công nghệ - Đại học Quốc gia Hà Nội

Thực hành Lý thuyết điều khiển tự động


Đa thức
Đạo hàm và tích phân các đa thức

❖ Đạo hàm các đa thức

k = polyder(p) k là đạo hàm bậc nhất của p

k = polyder(a,b) k là đạo hàm bậc nhất của đa thức tích của a và b

[n,d] = polyder(u,v) n là đa thức tử số, d là đa thức mẫu số của đạo


hàm bậc nhất của phân thức u/v

❖ Tích phân các đa thức


a = polyint(p) a là tích phân của p, với hằng số = 0

a = polyint(p,k) a là tích phân của p, với hằng số = k

Giảng viên: TS. Trần Cường Hưng


Trường đại học Công nghệ - Đại học Quốc gia Hà Nội

Thực hành Lý thuyết điều khiển tự động


Symbolic toolbox
Đối tượng symbolic

❖ Tạo đối tượng (biến) symbolic bằng lệnh sym


❖ Các biến symbolic có thể là ký tự, con số, kết hợp ký tự và con số
❖ Các biến symbolic được hiển thị không thụt đầu dòng như các biến
numerical
❖ Tạo nhiều biến symbolic một lúc bằng lệnh syms

Giảng viên: TS. Trần Cường Hưng


Trường đại học Công nghệ - Đại học Quốc gia Hà Nội

Thực hành Lý thuyết điều khiển tự động


Symbolic toolbox
Giải phương trình đại số

❖ h = solve(eq): giải phương trình eq = 0 theo biến mặc định của eq


❖ h = solve(eq, biến): giải phương trình eq = 0 theo biến được chỉ định
▫ eq có thể chứa hoặc không chứa dấu bằng
▫ eq có thể là một biểu thức đã được định nghĩa, hoặc một biểu thức mới viết dưới
dạng chuỗi ký tự được đặt trong dấu ngoặc đơn ‘’
❖ Nếu phương trình có nhiều biến, thì nên chỉ định biến được chọn làm
ẩn để giải theo ẩn đó
❖ solve(eq) sẽ gán nghiệm cho ans
❖ Nếu phương trình có nhiều nghiệm, thì các nghiệm sẽ đặt trong một véc
tơ cột có các thành phần là đối tượng symbolic

Giảng viên: TS. Trần Cường Hưng


Trường đại học Công nghệ - Đại học Quốc gia Hà Nội

Thực hành Lý thuyết điều khiển tự động


Symbolic toolbox
Giải phương trình đại số

❖ 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ự

Giảng viên: TS. Trần Cường Hưng


Trường đại học Công nghệ - Đại học Quốc gia Hà Nội

Thực hành Lý thuyết điều khiển tự động


Symbolic toolbox
Giải phương trình đại số

❖ 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

Giảng viên: TS. Trần Cường Hưng


Trường đại học Công nghệ - Đại học Quốc gia Hà Nội

Thực hành Lý thuyết điều khiển tự động


Symbolic toolbox
Giải hệ phương trình đại số

❖ 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)

Giảng viên: TS. Trần Cường Hưng


Trường đại học Công nghệ - Đại học Quốc gia Hà Nội

Thực hành Lý thuyết điều khiển tự động


Symbolic toolbox
Giải hệ phương trình đại số

❖ Hệ phương trình có số biến bằng số phương trình

Giảng viên: TS. Trần Cường Hưng


SEE YOU NEXT TIME

You might also like