Giới thiệu phần mềm Matlab
TS. Phạm Xuân Hiển
Giao diện Matlab được chia thành 4 vùng chính:
1. Toolbar
2. Current Folder
3. Command Window 3
1
4. Workspace
4
Giao diện Matlab được chia thành 4 vùng chính:
1. Toolbar:
- Home
- Plot
- App
1. Home có 6 vùng
- File: thư mục có thể tạo file, mở file có sẵn…
- Variable: biến
- Code: công cụ làm việc với code có thể phân tích code, vừa
chạy vừa tính thời gian…
- Simulink: nhóm công cụ liên quán đến simulink
- Enviroment: công cụ liên quan đến môi trường làm việc. Có
thể thay đổi giao diện làm việc cho phù hợp
- Resources: công cụ liên quan đến tài nguyên làm việc. Lưu ý
mục Help
2. Current folder: thư mục làm việc hiện tại của phần mềm
3. Command windows: nơi nhập các câu lệnh
4. Workspace: nơi chứa các biến của phần mềm khi làm việc
(vùng nhớ tạm thời)
Biến: là một vùng nhớ trong máy tính có địa chỉ nhớ cụ thể,
mỗi loại biến có kiểu dữ liệu, tên biến và giá trị
Lưu ý với biến:
- Không được bắt đầu bằng chữ số
- Phân biệt chữ hoa và chữ thường
- Độ dài tên biến lên đến 31 ký tự
- Giá trị của biến có thể thay đổi trong quá trình lập trình
Các phép toán cơ bản
Phép cộng, trừ, nhân
Các phép toán cơ bản
Phép chia
Các phép toán cơ bản
Toán tử lũy thừa
Các phép toán cơ bản
Lượng giác: lưu ý các hàm sin, cos, tan…làm việc với rad
Các phép toán cơ bản
Lượng giác: sind, cosd,tand … làm việc với độ
Các phép toán cơ bản
Các hàm khác
Phần help
Phần help
M-file
Chọn New >> Script (Hoặc Ctrl+N)
M-file
Hàm nhập / xuất dữ liệu
Hàm nhập / xuất dữ liệu
Hàm nhập / xuất dữ liệu
Vẽ đồ thị
Vẽ đồ thị
Vẽ đồ thị
x = -pi:pi/10:pi;
y = tan(sin(x)) - sin(tan(x));
plot(x,y,'--rs','LineWidth',2,...
'MarkerEdgeColor','k',...
'MarkerFaceColor','g',...
'MarkerSize',10)
-- Đường gạch đơn
r màu sắc của đường
s square dạng của đường
Linewidth kích thước của đường
MarkerEdgeColor màu của đường bao
MarkerFaceColor màu của marker
MarkerSize kích thước của marker
Vẽ đồ thị
Vẽ đồ thị
Ma trận và Vectơ
Ma trận được biểu thị trong dấu ngoặc vuông ([ ]), mỗi phần tử trên một hàng được
cách nhau bằng các ô trống hoặc dấu phẩy (,), còn mỗi hàng được ngăn cách bởi dấu
chấm phẩy (;) hoặc ngắt dòng.
Ví dụ: viết ma trận A gồm 3 hàng 3 cột trên màn hình Command Window.
>> A=[ 1 2 3 ; 4 5 6 ; 7 8 9]
A=
1 2 3
4 5 6
7 8 9
Vector thực chất là ma trận (1 x n) hoặc (n x 1), nên ta có thể tạo ra vectơ như cách
tạo ra ma trận. Ngoài ra, có thể dùng một số cách sau:
>> x=0:0.1:1 % vector gồm các phần tử từ 0 tới 1, mỗi phần tử cách nhau 0.1
>> y=linspace(1, 10, 20) % vector 20 phần tử cách đều nhau từ 1 - 10
>> z=rand(10,1) % vector 10 phần tử ngẫu nhiên
Ma trận
Matlab có hai kiểu phép toán số học, đó là phép toán ma trận (matrix arithmetic
operation) và phép toán mảng (array arithmetic operation). Phép toán ma trận được
định nghĩa bởi các luật của đại số tuyến tính. Phép toán mảng được thực hiện tương
ứng từng phần tử, chẳng hạn phép nhân mảng hai ma trận A có các phần tử là a(i,j)
và B có các phần tử là b(i,j) được thực hiện bằng cách nhân tương ứng từng phần tử
của A và B:
c(i,j) = a(i,j)b(i,j)
Phép toán ma trận Phép toán mảng
Phép toán Toán tử Phép toán Toán tử
Cộng + Cộng +
Trừ - Trừ -
Nhân * Nhân .*
Chia phải / Chia phải ./
Chia trái \ Chia trái .\
Luỹ thừa ^ Luỹ thừa .^
Phép gán = Phép gán =
Các phép toán quan hệ
Các phép toán quan hệ bao gồm:
== bằng
<= nhỏ hơn hoặc bằng
>= lớn hơn hoặc bằng
~= không bằng
< nhỏ hơn
> lớn hơn
Biểu thức có các toán tử quan hệ nhận giá trị đúng là (true) hoặc sai (false). Trong
Matlab, biểu thức đúng sẽ có giá trị là 1, biểu thức sai có giá trị là 0.
>> 12.2>12 >> A=[1:3;4:6;7:9] >> B=[1:3;2:4;10:12]
ans = A= B=
1 1 2 3 1 2 3
>> 1~=1 4 5 6 2 3 4
ans = 7 8 9 10 11 12
0
>> A==B
ans =
1 1 1
0 0 0
0 0 0
Cấu trúc điều kiện
Cú pháp lệnh rẽ nhánh if:
>> if (điều kiện1) <thực hiện lệnh>
elseif (điều kiện2) <thực hiện lệnh>
else <thực hiện lệnh>
end
a = input('a =');
b = input('b =');
c = input('c =');
if a == 0
disp(['Phuong trinh bac nhat co nghiem x = ' num2str(-c/b)])
else
delta = b^2 - 4*a*c;
if delta > 0
x1 = (-b - sqrt(delta))/(2*a);
x2 = (-b + sqrt(delta))/(2*a);
disp(x1)
disp(x2)
elseif delta ==0
x = -b/(2*a);
disp(['phuong trinh có nghiem kep x1 = x2 = ' num2str(x)])
else
disp('phuong trinh vo nghiem')
end
end
Cấu trúc điều kiện
a=menu('Ve do thi ham luong giac','sinx','cosx','tanx','logx');
if a == 1
t = -pi:0.1:pi;
plot(t,sin(t),'r');
grid on
xlabel('thoi gian');
ylabel('bien do');
elseif a == 2
t = -pi:0.1:pi;
plot(t,cos(t),'r');
grid on
xlabel('thoi gian');
ylabel('bien do');
elseif a == 3
t = -pi:0.1:pi;
plot(t,tan(t),'r');
grid on
xlabel('thoi gian');
ylabel('bien do');
else
t = 0.1:0.1:100;
plot(t,log(t),'r');
grid on
xlabel('thoi gian');
ylabel('bien do');
end
Cấu trúc vòng lặp for
Cú pháp vòng lặp for:
>> for n=mảng <thực hiện lệnh>
end
% Chuong trinh tinh tong n so tu nhien lien tiep
% N = 1 + 2 + 3 + ... + n
clear;
clc;
n = input('Hay nhap vao so nguyen duong n: ');
N = 0;
for i=1:n
N = N + i;
end
disp(['Tong cua ' num2str(n) ' so tu nhien lien tiep la: ' num2str(N)])
Cấu trúc vòng lặp While
Cú pháp vòng lặp While:
>> while điều_kiện_còn_đúng <thực hiện lệnh>
end
n = 100;
N = 0;
i = 0;
while i <= n % dieukien
% Neu dieu kien duoc thoa man thi thuc hien cac cau lenh
N = N + i;
i = i + 1;
end
disp(['Tong cua ' num2str(n) 'so tu nhien lien tiep la ' num2str(N)])
Lệnh rẽ nhánh switch:
Cú pháp lệnh rẽ nhánh switch:
>> switch biểu_thức
case giá_trị_biểu_thức_1 <thực hiện lệnh>
case giá_trị_biểu_thức_2 <thực hiện lệnh>
…
otherwise <thực hiện lệnh>
End
Ví dụ:
>> test=5;
>> switch test case 2; a=2, case {3 4 5}; a=5, otherwise a=10, end;
a=
5
Viết chương trình con
CHƯƠNG 5. GIỚI THIỆU CONTROL SYSTEM TOOLBOX
CỦA MATLAB
Control System Toolbox (CST) là một bộ công cụ rất có ý nghĩa và tiện lợi đối với
kỹ sư điều khiển tự động hay những người nghiên cứu lý thuyết hệ thống. Với
CST ta có thể thực hiện tất cả các bước cần thiết để khảo sát - thiết kế hệ thống,
đặc biệt là các hệ thống điều khiển (Control System):
- Mô tả các hệ tuyến tính - dừng (hệ có tham số hằng) dưới dạng liên tục hay
gián đoạn (hàm truyền đạt, sơ đồ phân bố điểm không - điểm cực, mô hình
trạng thái, mô hình đặc tính tần số.
- Chuyển đổi hoặc xử lý, phân tích đặc tính hệ thống (động học, đáp ứng bước
nhảy, giảm bậc).
- Thiết kế và tính tối ưu các khâu điều chỉnh (quỹ đạo điểm cực, gán cực, tối ưu).
CHƯƠNG 5. GIỚI THIỆU CONTROL SYSTEM TOOLBOX
CỦA MATLAB
5.1. Mô hình hóa các hệ tuyến tính-dừng (LTI-Linear Time-Invariant systems)
Các hệ LTI (liên tục hoặc gián đoạn) được MATLAB hỗ trợ bao gồm: hệ một vào /
một ra (SISO: single-input / single-output) hay hệ nhiều vào / nhiều ra (MIMO:
muliple-input / multiple-output). Dưới đây là bốn phương thức dùng để mô tả hệ
LTI:
- Hàm truyền đạt (Transfer Function: TF)
- Mô hình điểm không - điểm cực (Zero Pole Gain: ZPK)
- Mô hình không gian trạng thái (State Space: SS)
- Mô hình dữ liệu đặc tính tần số (Frequency Response Data: FRD)
CHƯƠNG 5. GIỚI THIỆU CONTROL SYSTEM TOOLBOX
CỦA MATLAB
5.1.1. Hàm truyền đạt
Hàm truyền đạt là một phân thức hữu tỷ của s với đa thức tử số num
(numerator) và đa thức mẫu số den (denominator) dùng để mô tả đặc tính
truyền đạt của hệ trên miền ảnh Laplace.
[Link]. Khai báo TF cho hệ SISO
Hàm truyền đạt của hệ SISO co thể được khai báo theo hai cách:
Cách 1: Sử dụng lệnh tf(num,den): nhập đa thức tử số num và đa thức mẫu số
den dưới dạng vector tham số của s theo trình tự số mũ của s giảm dần.
Ví dụ:
>> h = tf([3 -5],[1 1])
Transfer function:
3s-5
-------
s+1
H= (s^4+3s+2)/(s^5+4s^4) >>h=tf([1 0 0 3 2],[1 4 0 0 0 0])
CHƯƠNG 5. GIỚI THIỆU CONTROL SYSTEM TOOLBOX
CỦA MATLAB
[Link]. Khai báo TF cho hệ SISO
Cách 2: Khai báo dưới dạng hàm hữu tỷ của s: trước hết ta phải khai báo s là
biến của mô hình TF, sau đó nhập hàm truyền dưới dạng hàm hữu tỷ của s.
>> s = tf('s')
Transfer function:
s
>> h = (s+2)/(s^2+5*s+4)
Transfer function:
s+2
-------------
s^2 + 5 s + 4
[Link]. Khai báo TF cho hệ MIMO (đọc thêm)
CHƯƠNG 5. GIỚI THIỆU CONTROL SYSTEM TOOLBOX
CỦA MATLAB
5.1.2. Mô hình điểm không - điểm cực
Mô hình điểm không - điểm cực có thể mô tả dưới dạng:
Trong đó k là hệ số khuyếch đại với giá trị thực, z1 …zm và p1 …pn là các giá trị
thực và/ hoặc các cặp giá trị phức liên hợp của điểm không, điểm cực. Chúng
chính là nghiệm của các đa thức tử số và mẫu số.
Ví dụ: hệ thống có hàm truyền như sau:
Cách 1: Sử dụng lệnh zpk(z,p,k), với z là vector điểm không, p là vector điểm
cực và k là hệ số khuyếch đại.
>> h = zpk([-5 1 1],[-6 -1],3)
Zero/pole/gain:
3 (s+5) (s-1)^2
---------------
(s+6) (s+1)
CHƯƠNG 6. GIỚI THIỆU SIMULINK
6.1. Cơ sở về Simulink
SIMULINK là phần chương trình mở rộng của MATLAB nhằm mục đích mô hình
hoá, mô phỏng và khảo sát các hệ thống động học.
Với giao diện đồ hoạ, SIMULINK cho phép thể hiện hệ thống dưới dạng sơ đồ tín
hiệu với các khối chức năng quen thuộc.
SIMULINK cung cấp cho người sử dụng một thư viện rất phong phú, có sẵn với số
lượng lớn các khối chức năng cho các hệ tuyến tính, phi tuyến và gián đoạn.
Người sử dụng cũng có thể tạo nên các khối riêng của mình.
Để khởi động SIMULINK bằng một trong các cách sau:
Trong cửa sổ Command Window, nhập: >> simulink
Hoặc kích chuột vào biểu tượng trên thanh menu của MATLAB.
CHƯƠNG 6. GIỚI THIỆU SIMULINK
6.1. Cơ sở về Simulink
Mô hình Simulink có thể được tạo bằng một trong các cách sau:
Nhấp chuột vào biểu tượng của thư viện Simulink
Chọn: File New Model trong Menu của thư viện Simulink
Chọn: File New Model trong cửa sổ lệnh của MATLAB
Hình 6.2. Mô hình Simulink - cửa sổ soạn thảo của Simulink
CHƯƠNG 6. GIỚI THIỆU SIMULINK
6.1. Cơ sở về Simulink
Hình 6.3. Lấy một khối từ thư viện Simulink
CHƯƠNG 6. GIỚI THIỆU SIMULINK
6.1. Cơ sở về Simulink
Các loại tín hiệu được sử dụng trong Simulink:
Tín hiệu đơn (scalar), còn được gọi là tín hiệu vô hướng.
Tín hiệu vector: còn được gọi là tín hiệu 1-D, kích cỡ của tín hiệu loại này chỉ
được xác định theo một chiều với độ dài n.
Tín hiệu ma trận: còn được gọi là tín hiệu 2-D, kích cỡ của tín hiệu được xác
định theo hai chiều [m x n]. Tất nhiên cả vector hàng [1 x n] và vector cột [m x
1] cũng thuộc loại tín hiệu ma trận này.
CHƯƠNG 6. GIỚI THIỆU SIMULINK
6.2. Thư viện Sources, Sinks, Math
6.2.1. Thư viện Sources
CHƯƠNG 6. GIỚI THIỆU SIMULINK
6.2. Thư viện Sources, Sinks, Math
6.2.1. Thư viện Sources
CHƯƠNG 6. GIỚI THIỆU SIMULINK
6.2. Thư viện Sources, Sinks, Math
6.2.1. Thư viện Sources
CHƯƠNG 6. GIỚI THIỆU SIMULINK
6.2. Thư viện Sources, Sinks, Math
6.2.2. Thư viện Sinks
CHƯƠNG 6. GIỚI THIỆU SIMULINK
6.2. Thư viện Sources, Sinks, Math
6.2.2. Thư viện Sinks
CHƯƠNG 6. GIỚI THIỆU SIMULINK
6.2. Thư viện Sources, Sinks, Math
6.2.3. Thư viện Math
CHƯƠNG 6. GIỚI THIỆU SIMULINK
6.2. Thư viện Sources, Sinks, Math
6.2.3. Thư viện Math
CHƯƠNG 6. GIỚI THIỆU SIMULINK
6.2. Thư viện Sources, Sinks, Math
6.2.3. Thư viện Math
CHƯƠNG 6. GIỚI THIỆU SIMULINK
6.2. Thư viện Sources, Sinks, Math
6.2.3. Thư viện Math
CHƯƠNG 6. GIỚI THIỆU SIMULINK
6.2. Thư viện Sources, Sinks, Math
6.2.3. Thư viện Math
CHƯƠNG 6. GIỚI THIỆU SIMULINK
6.2. Thư viện Sources, Sinks, Math
6.2.3. Thư viện Math
CHƯƠNG 6. GIỚI THIỆU SIMULINK
6.3. Chuẩn bị mô phỏng
Trước khi tiến hành mô phỏng ta phải có những thao tác chuẩn bị nhất định, đó
là khai báo tham số và phương pháp mô phỏng. Các thao tác chuẩn bị được thực
hiện tại hộp thoại Simulation Parameters (từ mô hình simulink:
Simulation/Simulation Parameters). Hộp thoại Simulation Parameters bao gồm
4 tab:
6.3.1. Tab Solver (thuật giải)
Tab Solver cho phép ta khai báo thời điểm bắt đầu, thời điểm kết thúc, thuật
toán tích phân và phương pháp xuất kết quả của quá trình mô phỏng.
Các thông số trong tab Solver:
Simulation time: thời gian mô phỏng, từ Start time tới Stop time
Solver options (các lựa chọn của thuật giải): với hệ gián đoạn ta có thể chọn
bước tích phân Type kiểu Variable-step hoặc Fixed-step. Hệ liên tục ta chọn bước
tích phân Type kiểu Variable-step với thuật toán có thể là ode45, ode23 (dựa
trên phương pháp Ruge-Kutta) hoặc ode2 (phương pháp Heun), ode1 (phương
pháp Euler tiến)…
CHƯƠNG 6. GIỚI THIỆU SIMULINK
6.3. Chuẩn bị mô phỏng
CHƯƠNG 6. GIỚI THIỆU SIMULINK
6.3. Chuẩn bị mô phỏng
6.3.2. Tab Workspace I/O
Bằng cách khai báo thích hợp tại tab Workspace I/O ta có thể gửi số liệu vào
hoặc đọc số liệu từ môi trường MATLAB Workspace mà không cần sử dụng các
khối như To Worksapce hay From Workspace trong mô hình SIMULINK.
CHƯƠNG 6. GIỚI THIỆU SIMULINK
6.3. Chuẩn bị mô phỏng
6.3.3. Tab Diagnostics (dự báo)
Configuration options: khai báo phương thức xử lý của SIMULINK đối với các sự
kiện diễn ra trong quá trình mô phỏng.
Simulation options: có hai vị trí khai báo Consistency checking và Bounds
cheching có tính năng khống chế, đảm bảo rằng không có số liệu nào của khối bị
ghi ra ngoài vùng nhớ dành riêng cho khối.
CHƯƠNG 6. GIỚI THIỆU SIMULINK
6.3. Chuẩn bị mô phỏng
6.3.4. Tab Advanced (khai báo nâng cao)
Nếu ô Inline parameters được kích hoạt, nó sẽ phủ định khả năng thay đổi tham
số của các khối trong quá trình mô phỏng. Lúc đó chỉ những tham số liệt kê
trong danh sách Global (tunable) parameters trong hộp thoại Model Parameter
Congiguration là vẫn có thể thay đổi được.
CHƯƠNG 6. GIỚI THIỆU SIMULINK
6.3. Chuẩn bị mô phỏng
6.3.4. Tab Advanced (khai báo nâng cao)
CHƯƠNG 6. GIỚI THIỆU SIMULINK
6.4. Hệ thống con (Subsystems)
Để có thể bao quát tốt hơn các mô hình hệ thống phức tạp, SIMULINK cho phép
người sử dụng phân một hệ thống lớn thành các hệ thống con. Tính năng này có
ưu điểm là làm giảm số lượng các khối trong một cửa sổ mô phỏng, giúp ta có
thể thiết kế mô hình mô phỏng theo một cấu trúc có phân tầng với độ sâu tuỳ ý.
6.4.1. Tạo hệ thống con
Có hai cách tạo hệ thống con:
Cách 1: Dùng chuột chọn tất cả các khối trong mô hình mô phỏng hệ thống mà
ta muốn gọi lại với nhau. Cần chú ý là cần phải chọn cả các đường tín hiệu kèm
theo. Sau đó chọn Create Subsystem thuộc menu Edit, các khối được chọn sẽ
được SIMULINK thay thế bởi một khối hệ thống con (Subsystem).
Cách 2: Dùng khối Subsystem có sẵn trong thư viện Ports & Systems của thư viện
Simulink (xem hình 6.14). Sau khi gắp khối Subsystem sang mô hình hệ thống
đang mở, tay kích đúp chuột vào khối để mở cửa sổ Subsystem và lần lượt gắp
các khối cần thiết để tạo thành hệ thống con.
CHƯƠNG 6. GIỚI THIỆU SIMULINK
6.4. Hệ thống con (Subsystems)
CHƯƠNG 6. GIỚI THIỆU SIMULINK
6.4. Hệ thống con (Subsystems)
6.4.2. Thư viện Ports & Subsystems và thư viện Signal Routing
Dưới đây là một số khối quan trọng hay được sử dụng trong thư viện Ports &
Subsystems và thư viện Signal Routing:
CHƯƠNG 6. GIỚI THIỆU SIMULINK
6.4. Hệ thống con (Subsystems)
CHƯƠNG 6. GIỚI THIỆU SIMULINK
6.4. Hệ thống con (Subsystems)
CHƯƠNG 6. GIỚI THIỆU SIMULINK
6.5. Hệ thống tuyến tính - Thư viện Continous
Để hỗ trợ việc mô phỏng, khảo sát hệ thống tuyến tính, MATLAB cung cấp cho ta
một thư viện các khối đặc trưng cho động học của hệ tuyến tính, đó là thư viện
Continuous.
Hình 6.16 mô tả thư viện Continuous trong SIMULINK. Dưới đây là một số khối
chức năng hay sử dụng trong thư viện Continuous.
CHƯƠNG 6. GIỚI THIỆU SIMULINK
6.5. Hệ thống tuyến tính - Thư viện Continous
CHƯƠNG 6. GIỚI THIỆU SIMULINK
6.5. Hệ thống tuyến tính - Thư viện Continous
6.6. Công cụ LTI-Viewer
Như ta đã biết, khi thực hiện mô phỏng trên SIMULINK, ta chỉ có thể quan sát
được các đặc tính thời gian của hệ thống. Để có thể phân tích toàn diện một
hệ thống, ta cần có các đặc tính tần số như đặc tính BODE, đặc tính NYQUIST,
quỹ đạo nghiệm số v.v..
LTI-Viewer là một giao diện đồ hoạ cho phép quan sát đáp ứng của một hệ
thống tuyến tính trong lĩnh vực tần số cũng như thời gian mà không cần gõ lại
lệnh hay lập trình theo từng dòng lệnh như trong Control System Toolbox.
CHƯƠNG 6. GIỚI THIỆU SIMULINK
Ví dụ thực hành:
CHƯƠNG 6. GIỚI THIỆU SIMULINK
6.5. Hệ thống tuyến tính - Thư viện Continous
6.6.1. Khởi động LTI-Viewer
Để khởi động LTI-Viewer từ SIMULINK, ta vào menu Tools Linear
Analysis, khi đó hai cửa sổ mới sẽ xuất hiện:
- Cửa sổ Model_Inputs_and_Outputs chứa các điểm input và output
(Hình 6.17 - bên trái). Các điểm này được dùng để xác định điểm vào/ra trên mô
hình SIMULINK cần phân tích.
- Cửa sổ LTI Viewer (Hình 6.17 - bên phải)gồm hai phần chính:
Phần cửa sổ đồ hoạ dùng để biểu diễn các đường đặc tính.
Thanh công cụ phía dưới chỉ dẫn cách sử dụng LTI Viewer.