1
MÔ HÌNH HÓA VÀ MÔ PHỎNG VỚI
MATLAB/SIMULINK
Mô hình hóa và mô phỏng thiết bị điện – dành
cho sinh viên chuyên ngành TBĐ-ĐT
Soạn bởi:
Trần Vĩnh Thái
B/m Thiết bị điện – điện tử
ĐHBK Hà nội
ĐHBK Hànội
B/m Thiết bị điện – điện tử
2
NỘI DUNG
Vai trò của mô hình hóa và mô phỏng
Mô hình toán và phương pháp số
Mô hình toán của hệ vật lý
Phương pháp số giải phương trình vi phân
Công cụ MATLAB/Simulink
MATLAB
Simulink
Phân tích, mô phỏng một số mô hình thiết bị điện với
MATLAB/Simulink
ĐHBK Hànội
B/m Thiết bị điện – điện tử
3
Yêu cầu với sinh viên
Tham dự lớp đầy đủ
Làm các bài tập về nhà
Hoàn thành bài tập lớn
Thi cuối học kỳ
ĐHBK Hànội
B/m Thiết bị điện – điện tử
4
1. Vai trò của mô hình hóa và mô phỏng
Mô hình –dạng biểu diễn đơn giản hóa của một hệ vật lý. Chương
trình này giới hạn mô hình ở dạng thức mô tả toán học, mô hình toán
.
Mô hình hóa và mô phỏng –làkỹ thuật cho phép xây dựng mô hình
của hệ vật lý và thực hiện thực nghiệm trên mô hình đó.
Môn học này
sử dụng công cụ MATLAB/Simulink để biểu diễn mô hình toán của hệ trên
máy tính số và cho phép phân tích, nghiên cứu nó
.
Vai trò của mô hình hóa và mô phỏng
Được sử dụng khi hệ vật lý không tồn tại, tốn kém và/hoặc tốn thời gian
xây dựng…
Cho phép quan sát quá trình, đáp ứng động của hệ thống thiết kế trước
khi thực nghiệm trên thiết bị thực
Là công cụ hữu hiệu với chi phí thấp cho nghiên cứu, dễ sử dụng, dễ
dàng thay đổi phương án…
ĐHBK Hànội
B/m Thiết bị điện – điện tử
5
2. Mô hình toán và phương pháp số
Phân loại mô hình toán
Mô hình tuyến tính, phi tuyến
Mô hình thông số tập trung, thông số rải
Mô hình tĩnh, động
Mô hình liên tục, gián đoạn
Mô hình xác định, bất định
Trình tự xây dựng mô hình
Xác định mục tiêu và điều kiện của bài toán
Đặt giả thiết đơn giản hóa và loại bỏ các yếu tố không quan
trọng
Xác định các tham số cho mô hình theo mục tiêu và điều kiện
Kiểm chứng mô hình về mức độ phù hợp với hệ thống vật lý
ĐHBK Hànội
B/m Thiết bị điện – điện tử
6
2. Mô hình toán và phương pháp số
Mô tả toán học thường gặp
Phương trình vi phân
Hàm truyền
Không gian trạng thái
ĐHBK Hànội
B/m Thiết bị điện – điện tử
7
2. Mô hình toán và phương pháp số
Phương trình vi phân
– Thí dụ 1: Phân tích mạch điện trên hình vẽ. Nguồn DC 1 V,
điều kiện đầu i(0) = 0 A, u
c
(0) = 0 V. Xác định quá trình quá
độ của i(t), u
c
(t) khi đóng công tắc.
wBTVN: Xây dựng mô hình toán động cơ DC kích thích độc lập.
ĐHBK Hànội
B/m Thiết bị điện – điện tử
8
2. Mô hình toán và phương pháp số
Hàm truyền
Định nghĩa: The transfer function of a linear, time-invariant, differential
equation system is defined as the ratio of the Laplace transform of the
output variable to the Laplace transform ofthe input variable, with all initial
conditions assumed to be zero.
Tiếp theo thí dụ 1 –mô tả bài toán ở dạng hàm truyền
sC
Vv
dt
di
LRi =++
sC
CC
Vv
dt
vd
LC
dt
dv
RC =++
2
2
Biểu thức:
)(
)(
)(
sV
sV
sY
S
C
=
wBTVN: Chuyển mô hình toán động cơ DC kích thích độc lập về dạng hàm truyền.
Điều kiện: Mạch từ tuyến tính, kích thích không đổi.
ĐHBK Hànội
B/m Thiết bị điện – điện tử
9
Mô tả không gian trạng thái
Dạng thức
Tiếp theo thí dụ 1 –mô tả bài toán ở dạng thức không gian trạng thái
Đặt
Từ đótìm được ma trận A, B, C, D
2. Mô hình toán và phương pháp số
wBTVN: Chuyển mô hình toán động cơ DC kích thích độc lập về mô hình không gian trạng thái.
Điều kiện: Mạch từ tuyến tính, kích thích không đổi.
ĐHBK Hànội
B/m Thiết bị điện – điện tử
11
2. Mô hình toán và phương pháp số
Phương pháp số giải phương trình vi phân
Phương pháp Euler:
Giải phương trình y’ = f(t,y) trong khoản [a,b],
với y(a) = y(0) = y
0
:
– Chia đoạn [a,b] thành n khoảng h đủ nhỏ
– Giá trị của y tại y(k) được tính theo giá trị đã biết y(k-1) và
hàm f(t
k
, y
k
) theo biểu thức:
),(.
111 −−−
+
=
kkkk
ytfhyy
với k = 1 n
ĐHBK Hànội
B/m Thiết bị điện – điện tử
12
Thí dụ về ph.pháp Euler viết trong MATLAB
ĐHBK Hànội
B/m Thiết bị điện – điện tử
13
Sai số của phương pháp Euler
w Sai số tỉ lệ với h
2
.
ĐHBK Hànội
B/m Thiết bị điện – điện tử
14
2. Mô hình toán và phương pháp số
Các phương pháp số khác
Phương pháp Runge-Kutta bậc 2 – trong MATLAB là ODE23
Phương pháp Runge-Kutta bậc 4 – trong MATLAB là ODE45
Phương pháp chuỗi Taylor
Các phương pháp Predictor-Correctors
…
wThí dụ ODE45:
ĐHBK Hànội
B/m Thiết bị điện – điện tử
15
Thí dụ: Runge-Kutta Order 4
ĐHBK Hànội
B/m Thiết bị điện – điện tử
16
3. MATLAB/Simulink
Tại sao chọn MATLAB/Simulink?
Đây là một công cụ:
Mạnh cho việc thực hiện mô phỏng các mô hình toán
Dễ học, dễ sử dụng Æ tốn ít thời gian đầu tư cho công cụ
Các công cụ khác
Dymola với ngôn ngữ Modelica
20-Sim với phương pháp Bond Graph
Maple, Mathematica, ACSL, Saber, Dynast…
Tài liệu tham khảo
MATLAB/Simulink dành cho kỹ sư điều khiển tự động – Nguyễn
Phùng Quang
…
ĐHBK Hànội
B/m Thiết bị điện – điện tử
17
MATLAB
Môi trường MATLAB, demo và help
Tạo biến trong MATLAB
Thao tác với ma trận, toán tử logic và các hàm toán học
Công cụ hiển thị
M-file
Viết chương trình trong MATLAB
Lưu biến và buổi làm việc; thư mục và đường dẫn
GUI
Giải hệ phương trình vi phân với MATLAB
…
ĐHBK Hànội
B/m Thiết bị điện – điện tử
18
Môi trường MATLAB
To get started, select "MATLAB Help" from the Help menu.
ĐHBK Hànội
B/m Thiết bị điện – điện tử
19
» a = 2;
» b = 5;
» a^b
ans =
32
» x = 5/2*pi;
» y = sin(x)
y =
1
» z = asin(y)
z =
1.5708
» a = 2;
» b = 5;
» a^b
ans =
32
» x = 5/2*pi;
» y = sin(x)
y =
1
» z = asin(y)
z =
1.5708
Tạo biến trong môi trường MATLAB
Kết quả được
gán cho “ans”
nếu không đặt
tên biến
Dấu () để truy cập
hàm
Tác dụng của dấu
“;”
MATLAB – máy tính tay
Gán các biến trong MATLAB
» -5/(4.8+5.32)^2
ans =
-0.0488
» (3+4i)*(3-4i)
ans =
25
» cos(pi/2)
ans =
6.1230e-017
» exp(acos(0.3))
ans =
3.5470
» -5/(4.8+5.32)^2
ans =
-0.0488
» (3+4i)*(3-4i)
ans =
25
» cos(pi/2)
ans =
6.1230e-017
» exp(acos(0.3))
ans =
3.5470
ĐHBK Hànội
B/m Thiết bị điện – điện tử
20
Một số lệnh tiện ích
Các lệnh tiện ích
who và whos – liệt kê các biến
clear, clear x, clear all – xóa biến
close – xóa cửa sổ đồ họa hiện hành
cd – đổi thư mục hiện hành
dir –liệt kê nội dung thư mục hiện hành
format – đặt định dạng biến lưu trong môi trường
help “tên hàm” –tra cứu nhanh
clc – xóa màn hình lệnh
…
ĐHBK Hànội
B/m Thiết bị điện – điện tử
21
Thao tác với ma trận
3 khái niệm trong đại số tuyến tính
Vô hướng – là một số hay một từ (có giá trị đơn nhất)
Véc-tơ –làmảng 1-D chứa một dãy các vô hướng, biến hoặc
biểu thức
Ma trận –làmảng n-D chứa các vô hướng, biến hoặc biểu thức
Trong MATLAB
Vô hướng – là ma trận 1x1
Véc-tơ –làma trận 1xn hoặc nx1
Ma trận nxm
ĐHBK Hànội
B/m Thiết bị điện – điện tử
22
Thao tác với ma trận
» a=[1 2;3 4]
a =
1 2
3 4
» b=[-2.8, sqrt(-7), (3+5+6)*3/4]
b =
-2.8000 0 + 2.6458i 10.5000
» b(2,5) = 23
b =
-2.8000 0 + 2.6458i 10.5000 0 0
0 0 0 0 23.0000
» a=[1 2;3 4]
a =
1 2
3 4
» b=[-2.8, sqrt(-7), (3+5+6)*3/4]
b =
-2.8000 0 + 2.6458i 10.5000
» b(2,5) = 23
b =
-2.8000 0 + 2.6458i 10.5000 0 0
0 0 0 0 23.0000
Tách dòng với
dấu(;)
Tách cột với dấu
trống / phảy(,)
Dùng dấu
ngoặc[ ]
ĐHBK Hànội
B/m Thiết bị điện – điện tử
23
Thao tác với ma trận
4101 6 2
81.29 4 25
7.2 5 7 1 11
00.54 5 56
23 83 13 0 10
1
2
Dòng (m) 3
4
5
Cột
(n)
1 2 3 4 5
1 6 11 16 21
2 7 12 17 22
3 8 13 18 23
4 9 14 19 24
510152025
A =
A (2,4)
A (17)
Ma trận:
Vô hướng: 1-by-1 array
Véc tơ: m-by-1 array
1-by-n array
Ma trận: m-by-n array
ĐHBK Hànội
B/m Thiết bị điện – điện tử
24
Thao tác với ma trận
» w=[1 2;3 4] + 5
w =
6 7
8 9
» x = 1:5
x =
1 2 3 4 5
» y = 2:-0.5:0
y =
2.0000 1.5000 1.0000 0.5000 0
» z = rand(2,4)
z =
0.9501 0.6068 0.8913 0.4565
0.2311 0.4860 0.7621 0.0185
» w=[1 2;3 4] + 5
w =
6 7
8 9
» x = 1:5
x =
1 2 3 4 5
» y = 2:-0.5:0
y =
2.0000 1.5000 1.0000 0.5000 0
» z = rand(2,4)
z =
0.9501 0.6068 0.8913 0.4565
0.2311 0.4860 0.7621 0.0185
Cộng vô hướng
Tạo dãy trình tự:
dùng dấu(:)
Các hàm tiện ích tạo
ma trận
ĐHBK Hànội
B/m Thiết bị điện – điện tử
25
Thao tác với ma trận
Xóa dòng, cột của ma trận
» A=[1 5 9;4 3 2.5; 0.1 10 3i+1]
A =
1.0000 5.0000 9.0000
4.0000 3.0000 2.5000
0.1000 10.0000 1.0000+3.0000i
» A(:,2)=[]
A =
1.0000 9.0000
4.0000 2.5000
0.1000 1.0000 + 3.0000i
» A(2,2)=[]
??? Indexed empty matrix assignment is not allowed.
» A=[1 5 9;4 3 2.5; 0.1 10 3i+1]
A =
1.0000 5.0000 9.0000
4.0000 3.0000 2.5000
0.1000 10.0000 1.0000+3.0000i
» A(:,2)=[]
A =
1.0000 9.0000
4.0000 2.5000
0.1000 1.0000 + 3.0000i
» A(2,2)=[]
??? Indexed empty matrix assignment is not allowed.
ĐHBK Hànội
B/m Thiết bị điện – điện tử
26
Thao tác với ma trận
Truy cập các thành phần trong ma trận
4101 6 2
81.29 4 25
7.2 5 7 1 11
00.54 5 56
23 83 13 0 10
1
2
3
4
5
1 2 3 4 5
1 6 11 16 21
2 7 12 17 22
3 8 13 18 23
4 9 14 19 24
510152025
A =
A(3,1)
A(3)
A(1:5,5)
A(:,5)
A(21:25)
A(4:5,2:3)
A([9 14;10 15])
A(1:end,end)
A(:,end)
A(21:end)’
ĐHBK Hànội
B/m Thiết bị điện – điện tử
27
Thao tác với ma trận
Nhân chia ma trận
» a = [1 2 3 4; 5 6 7 8];
» b = ones(4,3);
» c = a*b
c =
10 10 10
26 26 26
» a = [1 2 3 4; 5 6 7 8];
» b = ones(4,3);
» c = a*b
c =
10 10 10
26 26 26
[2x4]
[4x3]
[2x4]*[4x3] [2x3]
a(2nd row).b(3rd column)
» a = [1 2 3 4; 5 6 7 8];
» b = [1:4; 1:4];
» c = a.*b
c =
1 4 9 16
5 12 21 32
» a = [1 2 3 4; 5 6 7 8];
» b = [1:4; 1:4];
» c = a.*b
c =
1 4 9 16
5 12 21 32
c(2,4) = a(2,4)*b(2,4)
ĐHBK Hànội
B/m Thiết bị điện – điện tử
28
Thao tác với ma trận
Các hàm tiện ích
zeros –tạo ma trận rỗng
ones –tạo ma trận 1
eye –tạo ma trận đơn vị
rand –tạo ma trận các phần tử ngẫu nhiên
diag –tạo ma trận đường chéo
size – hàm trả về kích thước của ma trận
fliplr – đảo cột ma trận trái phải
flipud – đảo hàng ma trận trên dưới
rot90 – xoay ma trận 90 độ (ngược chiều kim đồng hồ)
transpose (‘) –chuyển vị ma trận
cross & dot – nhân ma trận
det – định thức ma trận
inv – nghich đảo ma trận
rank –hạng ma trận…
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎣
⎡
100
010
001
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎣
⎡
300
020
001
ĐHBK Hànội
B/m Thiết bị điện – điện tử
29
Các toán tử logic
» Mass = [-2 10 NaN 30 -11 Inf 31];
» each_pos = Mass>=0
each_pos =
0 1 0 1 0 1 1
» all_pos = all(Mass>=0)
all_pos =
0
» all_pos = any(Mass>=0)
all_pos =
1
» pos_fin = (Mass>=0)&(isfinite(Mass))
pos_fin =
0 1 0 1 0 0 1
» Mass = [-2 10 NaN 30 -11 Inf 31];
» each_pos = Mass>=0
each_pos =
0 1 0 1 0 1 1
» all_pos = all(Mass>=0)
all_pos =
0
» all_pos = any(Mass>=0)
all_pos =
1
» pos_fin = (Mass>=0)&(isfinite(Mass))
pos_fin =
0 1 0 1 0 0 1
= = equal to
> greater than
< less than
>= Greater or equal
<= less or equal
~ not
& and
| or
isfinite(), etc. . . .
all(), any()
find
1= TRUE
0= FALSE
w Lưu ý:
ĐHBK Hànội
B/m Thiết bị điện – điện tử
30
Một số hàm toán học
Các hàm toán học
abs, sign – hàm trả về trị tuyệt đối và dấu
sin, cos, asin, acos… – hàm lượng giác
exp, log, log10 – hàm mũ e, log tự nhiên, log hệ 10
ceil, floor, fix, round – các hàm làm tròn số
sqrt – hàm căn bậc hai
gcd – ước số chung lớn nhất
lcm –bội số chung nhỏ nhất
real, img – hàm trả về phần thực, phần ảo của số phức
rem, mod – các hàm lấy phần nguyên và phần dư của phép chia
max, min, means – các hàm tìm max, min và trị trung bình
sort – hàm sắp xếp
…
ĐHBK Hànội
B/m Thiết bị điện – điện tử
31
Công cụ hiển thị - Visualizing data
2-D Plotting
Hàm plot() – cú pháp
Thí dụ sử dụng hàm plot()
plot(x1, y1, 'clm1', x2, y2, 'clm2', )
plot(x1, y1, 'clm1', x2, y2, 'clm2', )
x=[0:0.1:2*pi];
y=sin(x);
z=cos(x);
plot(x,y,x,z,'linewidth',2)
title('Sample Plot','fontsize',14);
xlabel('X values','fontsize',14);
ylabel('Y values','fontsize',14);
legend('Y data','Z data')
grid on
x=[0:0.1:2*pi];
y=sin(x);
z=cos(x);
plot(x,y,x,z,'linewidth',2)
title('Sample Plot','fontsize',14);
xlabel('X values','fontsize',14);
ylabel('Y values','fontsize',14);
legend('Y data','Z data')
grid on
ĐHBK Hànội
B/m Thiết bị điện – điện tử
32
Công cụ hiển thị - Visualizing data
Title
Ylabel
Xlabel
Grid
Legend
w Sử dụng TEX cho
phép hiển thị ký tự Hy
Lạp, các ký tự toán
học…
ĐHBK Hànội
B/m Thiết bị điện – điện tử
33
Công cụ hiển thị - Visualizing data
subplot
Cú pháp
»subplot(2,2,1);
» …
»subplot(2,2,2)
»
»subplot(2,2,3)
»
»subplot(2,2,4)
»
»subplot(2,2,1);
» …
»subplot(2,2,2)
»
»subplot(2,2,3)
»
»subplot(2,2,4)
»
subplot(rows,cols,index)
subplot(rows,cols,index)
w Vẽ nhiều đồ
thị trên cùng cửa
sổ
ĐHBK Hànội
B/m Thiết bị điện – điện tử
34
Công cụ hiển thị - Visualizing data
3-D plotting
x = 0:0.1:2;
y = 0:0.1:2;
[xx, yy] = meshgrid(x,y);
zz=sin(xx.^2+yy.^2);
surf(xx,yy,zz)
xlabel('X axes')
ylabel('Y axes')
x = 0:0.1:2;
y = 0:0.1:2;
[xx, yy] = meshgrid(x,y);
zz=sin(xx.^2+yy.^2);
surf(xx,yy,zz)
xlabel('X axes')
ylabel('Y axes')
ĐHBK Hànội
B/m Thiết bị điện – điện tử
35
Công cụ hiển thị - Visualizing data
Các dạng vẽ contour và 3-D
w contourf
w contour3
w plot3
w waterfall
w mesh
w surf
ĐHBK Hànội
B/m Thiết bị điện – điện tử
36
Công cụ hiển thị - Visualizing data
Một số thí dụ hiển thị khác
w bar
w bar3h
w hist
w area
w pie3
w rose
ĐHBK Hànội
B/m Thiết bị điện – điện tử
37
M-files
Script files
Là một tập lệnh lưu trong tệp tin m-file (tệp tin có đuôi .m). Tiện
lợi hơn việc phải gõ từng lệnh vào dấu nhắc MATLAB (>>).
Các biến tạo ra khi chạy m-file được lưu trữ trong Workspace của
MATLAB
Function files
Cho phép người dùng tạo hàm riêng của mình
Tất cả các biến bên trong hàm có tính chất local (Muốn biến có tính
chất global, phải dùng từ khóa global khi khai báo biến)
Thông tin đưa vào hàm dưới dạng thông số
MATLAB hỗ trợ nhiều tính năng cho hàm Æ xem thêm help
function
ĐHBK Hànội
B/m Thiết bị điện – điện tử
38
M-files
Cửa sổ soạn thảo M-file: Editor/Debugger
Select
Workspace
Set Auto-
Breakpoints
tips
ĐHBK Hànội
B/m Thiết bị điện – điện tử
39
M-files
Function file
function y = mean (x)
% MEAN Average or mean value.
% For vectors, MEAN(x) returns the mean
value.
% For matrices, MEAN(x) is a row vector
% containing the mean value of each column.
[m,n] = size(x);
if m == 1
m = n;
end
y = sum(x)/m;
Tham số ra
Tham số vào
Tên hàm (phải trùng với tên file)
Các dòng này sẽ
xuất hiện khi gõ
lệnh help mean
Nội dung hàm
ĐHBK Hànội
B/m Thiết bị điện – điện tử
40
Viết chương trình trong MATLAB
Các điều khiển chương trình
Lệnh điều kiện if
Vòng lặp while
if ((attendance >= 0.90) & (grade_average >= 60))
pass = 1;
end;
if ((attendance >= 0.90) & (grade_average >= 60))
pass = 1;
end;
eps = 1;
while (1+eps) > 1
eps = eps/2;
end
eps = eps*2
eps = 1;
while (1+eps) > 1
eps = eps/2;
end
eps = eps*2
ĐHBK Hànội
B/m Thiết bị điện – điện tử
41
Viết chương trình trong MATLAB
Vòng lặp for
Lệnh điều kiện switch
a = zeros(k,k) % Preallocate matrix
for m = 1:k
for n = 1:k
a(m,n) = 1/(m+n -1);
end
end
a = zeros(k,k) % Preallocate matrix
for m = 1:k
for n = 1:k
a(m,n) = 1/(m+n -1);
end
end
method = 'Bilinear';
switch lower(method)
case {'linear','bilinear'}
disp('Method is linear')
case 'cubic'
disp('Method is cubic')
otherwise
disp('Unknown method.')
end
method = 'Bilinear';
switch lower(method)
case {'linear','bilinear'}
disp('Method is linear')
case 'cubic'
disp('Method is cubic')
otherwise
disp('Unknown method.')
end
ĐHBK Hànội
B/m Thiết bị điện – điện tử
42
Viết chương trình trong MATLAB
Kiểu dữ liệu
Numerical arrays
Multidimentional arrays
Structures and Cell arrays
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
Page N
Page 1
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
1 1 1 1
1 2 3 4
1 3 6 10
1 4 10 20
ĐHBK Hànội
B/m Thiết bị điện – điện tử
43
Lưu biến và buổi làm việc
Lưu các biến trong Workspace
Dùng lệnh save và load
Lưu buổi làm việc
Dùng lệnh diary
load fname
load fname x y z
load fname -ascii
load fname -mat
load fname
load fname x y z
load fname -ascii
load fname -mat
save fname
save fname x y z
save fname -ascii
save fname -mat
save fname
save fname x y z
save fname -ascii
save fname -mat
diary
diary fname
diary (‘fname’)
diary on/off
diary
diary fname
diary (‘fname’)
diary on/off
ĐHBK Hànội
B/m Thiết bị điện – điện tử
44
Xuất/nhập dữ liệu
Cho tệp tin BINARY
Lệnh fopen, fclose, fread, fwrite, fseek:
Cho tệp tin TEXT
Lệnh textread
Lệnh dlmread
» fid= fopen('mydata.bin' , 'wb');
» fwrite (fid,eye(5) , 'int32');
» fclose (fid);
» fid= fopen('mydata.bin' , 'rb');
» M= fread(fid, [5 5], 'int32')
» fclose (fid);
» fid= fopen('mydata.bin' , 'wb');
» fwrite (fid,eye(5) , 'int32');
» fclose (fid);
» fid= fopen('mydata.bin' , 'rb');
» M= fread(fid, [5 5], 'int32')
» fclose (fid);
»[A1…An]=textread(filename,format,N)
»[A1…An]=textread(filename,format,N)
» M = dlmread(filename,delimiter,range)
» M = dlmread(filename,delimiter,range)
ĐHBK Hànội
B/m Thiết bị điện – điện tử
45
GUI
Graphics objects
Root
object
UIMenu
objects
Axes object
Figure
object
Surface
object
Line
objects
Text
objects
UIControl
objects
Axes object
ĐHBK Hànội
B/m Thiết bị điện – điện tử
46
GUI
Làm việc với object’s handle
Tạo cùng với lệnh
Các hàm tiện ích
– 0 – root object handle
– gcf – get current figure handle
– gca – get current axis handle
– gco – get current object handle
Hàm findobj
handle = plot(x_data, y_data, )
h_obj = findobj(h_parent, 'Property', 'Value', )
Default = 0 (root object)
ĐHBK Hànội
B/m Thiết bị điện – điện tử
47
GUI
Thay đổi thuộc tính đối tượng
Lấy thuộc tính của đối tượng với hàm get
Đặt thuộc tính cho đối tượng với hàm set
Thay đổi thuộc tính đối tượng với Property Editor
get(h_object)
set(h_object)
set(h_object,'PropertyName','New_Value', )
ĐHBK Hànội
B/m Thiết bị điện – điện tử
48
GUIDE
Push ButtonsRadio Buttons
Frames
Checkbox
Slider
Edit text
static text
Axes
w MATLAB
hỗ trợ việc
tạo giao diện
người dùng.
ĐHBK Hànội
B/m Thiết bị điện – điện tử
49
GUIDE
Tạo giao diện với GUIDE
Guide Editor
Property Inspector
Result Figure
ĐHBK Hànội
B/m Thiết bị điện – điện tử
50
GUIDE
Làm việc với m-file
Thí dụ tạo GUI và lập trình với m-file
handles.a = get(handles.slider_a,'Value');
set(handles.text_a,'String',
num2str(handles.a));
% Update handles structure
guidata(hObject, handles);
ĐHBK Hànội
B/m Thiết bị điện – điện tử
51
Giải phương trình vi phân trong MATLAB
Dùng hàm ODE23 và ODE45
Trở lại thí dụ 1:
Chuyển về dạng phương trình trạng thái