MATLAB ÖÙNG DUÏNG
THIEÁT KEÁ –ÑIEÀU KHIEÅN
Th.S Nguyeãn Taán Phuùc.
Email: phucnt@hcmuaf.edu.vn
Tel:0126.7102772.
Fb: gv dhnl phuctannguyen
TAØI LIEÄU HOÏC TAÄP
ÑAÙNH GIAÙ HK HEØÙ
1.SLIDE BAØI GIAÛNG . 2.SAÙCH MATLAB CÔ SÔÛ.
1.Thöïc haønh Treân lôùp : 10%. 2. kiểm tra : 10%. 2.Thi cuoái kyø : 80%. Thôøi gian : 19/7 - 10/8/2016.
NỘI DUNG
PHẦN I: MATLAB CĂN BẢN. PHẦN II: LẬP TRÌNH TRONG MATLAB. PHẦN III: GUIDE TRONG MATLAB - ỨNG DỤNG TRONG ĐIỀU KHIỂN.
PHẦN I- MATLAB CAÊN BAÛN
MATLAB CAÊN BAÛN
I. BIEÅU THÖÙC (EXPRESSION)
- toái ña 19 kyù töï coù nghóa
Bieán soá ( variables) Soá (Numbers) Toaùn töû ( Operaters) Haøm ( Functions)
Bieán (Variables)
- phaân bieät giöõa chöõ hoa vaø chöõ thöôøng. - baét ñaàu baèng moät töø theo sau laø töø hay soá hoaëc daáu (_). - bieán toøan cuïc (global) taùc duïng trong toøan chöông trình. - bieán cuïc boä (local) taùc duïng trong noäi taïi haøm (function) - moät soá bieán ñaëc bieät: pi, ans,…
Kieåm tra bieán (who vaø whos) Xoùa bieán (clear vaø clear all)
DATA TYPES
Int8,uint8,int16,int32…số nguyeân interger. Single,double: kiểu số thực. Logical: kieåu true,false. Char: kieåu kyù töï. String: kieåu kyù töï. Array: a(1),a(0),…. Ví duï: Str=‘hello world’; Str(2)=‘ e’.
DATA TYPES CONVERSION
Char(): chuyeån sang kieåu kyù töï. Int2str(): chuyeån soá sang chuoãi. Num2str(): chuyeån integer sang chuoãi Str2num(): chuoåi sang soá. Num2bin(): soá sang maõ nhò phaân. Dec2bin(): chuyeån soá sang nhò phaân Ischar(): kieåm tra phaûi kyù töï. Isinteger():kiem tra so nguyen Islogical():kiem tra bien logic.
Matlab command
Clc: xoùa maøn hình. Clear all: xoùa taát caû caùc bieán. Global: khai baùo bieán toaøn cuïc. Quit: thoaùt matlab. Who: lieät keâ taát caû bieán hieän coù Whos: lieät keâ bieán , kieåu bieán.
INPUT, OUTPUT COMMAND Disp: hieån thò ra comand matlab. Input: nhaän döõ lieäu töø command matlab. sprintf: dinh dang chuoi xuat ra man hinh. Format : dinh dang döõ lieäu . Caùc kieåu döõ lieäu format: Short,long,short e,long e,rat…
MATLAB CAÊN BAÛN
1. Soá (Numbers)
Taát caû nhöõng con soá ñeàu ñöôïc löu kieåu ñònh daïng (format) Duøng haøm format ñeå ñònh daïng kieåu soá:
>> format +; b b = + >> format rat; b b = 3/26 >> format short; b b = 0.1154 >> format long eng; b b = 115.384615384615e-003>>
>> b=3/26; >> format long; b b = 0.11538461538462 >> format short e; b b = 1.1538e-001 >> format bank; b b = 0.12 >> format short eng; b b = 115.3846e-003 >> format hex; b b = 3fbd89d89d89d89e
format (ñònh daïng)
MATLAB CAÊN BAÛN
2. Toaùn töû (operaters) (+, -, *, /, \,^,’)
Caùc bieán khoâng caàn khai baùo tröôùc. Caùc kyù töï thöôøng vaø in laø phaân bieät. Keát thuùc caâu leänh vôùi ‚;‛ khoâng hieån thò keát quûa caâu leänh. Bieán maëc nhieân ‚ans‛ . Thứ tự tính toan nhu thong thuong:nhaân chia tröôùc , coäng tröø sau..
2. Toaùn töû (operaters) (+, -, *, /, \,^,’)
To¸n tö quan hÖ ý nghÜa
< Nhá h¬n vd A
> Lín h¬n vd A>B
<= Nhá h¬n hoÆc b»ng A<=B
>= Lín h¬n hoÆc b»ng A>=B
== B»ng vd A==B
~= Kh«ng b»ng vd A~=B
To¸n tö logic
ý nghÜa
&
Vµ vd A&B
|
HoÆc vd A|B
~
§¶o vd ~A
Toaùn töû (operaters)
operators
operator Miêu tả
+ Phép cộng
*
nhân
- Trừ
.* Nhân ma trận
./
Chia phải 2 ma trận
/ chia
^ Lũy thừa
.^ Lũy thừa ma trận
‘ Tranpose
MATLAB CAÊN BAÛN
3. Haøm cô baûn (basis functions) abs, sqrt, exp, sin,…
Tên hàm
ý nghĩa
Sin
Hàm sin
Cos
Hàm cos
Tan
Hàm tan
Asin
acsin
Acos
accos
Atan
arctg
Exp
Hàm e mũ
Log
Logarit co so e
log10
Logarit co so 10
sqrt(x)
Can bac 2
‚;‛ coù nghóa laø chuyeån sang haøng keá tieáp. ‚,‛ hay ‚ ‚ phaân caùch giöõa caùc phaàn töû.
MA TRAÄN TRONG MATLAB
Cách Khai báo ma trận: A=[2 3;4 5]; B=[2 3 4;4 5 6;6 7 8].
>> t = 1:5 t = 1 2 3 4 5 >> row = A(1,:) row = 1 2 3 >> col = A(:,1) col = 1 4 7 >> 1: 0.3:2 ans = 1 1.3000 1.6000 1.9000
MA TRAÄN TRONG MATLAB
Pheùp tính
Chuù thích
+, -
Coäng hoaëc tröø hai ma traän cuøng kích thöôùc
A*B
Nhaân hai ma traän A vaø B
A/B
Chia hai ma traän (chia phaûi) A vaø B
A\B
Chia traùi hai ma traän B vaø A
A.*B
Nhaân töøng phaàn töû cuûa hai ma traän A vaø B
A./B
Chia töøng phaàn töû cuûa hai ma traän A vaø B
A.\B
Chia töøng phaàn töû cuûa hai ma traän B vaø A
.^
Muõ cho töøng phaàn töû cuûa maûng
MA TRAÄN TRONG MATLAB
>> A=[1 2 3;4 5 6;7 8 9] A = 1 2 3 4 5 6 7 8 9 >> A(2,3)=10 A = 1 2 3 4 5 10 7 8 9 >> B=A(2,1) B = 4 >> C=[-4 2 3;1 2 1;2 5 6] C = -4 2 3 1 2 1 2 5 6
>> D=[A C] D = 1 2 3 -4 2 3 4 5 10 1 2 1 7 8 9 2 5 6 >> D(5) ans = 5 >> D(4,5) ??? Index exceeds matrix dimensions. >> X=D X = 1 2 3 -4 2 3 4 5 10 1 2 1 7 8 9 2 5 6 >> X(2,6) ans = 1 >> X(2,:) ans = 4 5 10 1 2 1
ÑOÀ HOÏA TRONG MATLAB
Ñoà hoïa trong Matlab
Caây thö muïc quaûn lyù ñoái töôïng trong Matlab:
Figure
Axes Uicontrol Uimenu Uicontextmenu
Image Light Line Patch Rectangle Surface Text
ÑOÀ HOÏA TRONG MATLAB
Böôùc MATLAB code
1. Chuaån bò döõ lieäu X= 0:0.1:2*pi; Y= sin(X)=f(x).
2. Choïn cöûa soå vaø vò trí cuûa ñoái töôïng ñoà hoïa trong cöûa soå. figure(‘Name’,’Hinh sine’); subplot(2,2,1);
3. Goïi haøm veõ ñoà thò
h = plot(X,Y);
set(h, ‘LineStyle’,’- ‘,’Color’,’r’) 4. Xaùc ñònh thuoäc tính cho hình nhö kieåu ñöôøng, maøu saéc, …
5. Xaùc ñònh caùc thuoäc tính cuûa axis, axes, löôùi veõ, …
axis([-1 6 -1.2 1.2]); grid on;
xlabel(‘X’); ylabel(‘Y=SIN(X)’); title(‘Ñoà thò hình sine’);
6. Chuù thích cho ñoà thò: labels, legend, text, …
7. Xuaát keát quaû
ÑOÀ HOÏA TRONG MATLAB
Caùc leänh veõ cô baûn:
Teân haøm Moâ taû haøm
plot
Veõ döõ lieäu 2D vôùi tæ leä tuyeán tính cho caùc truïc toïa ñoä
plot3
Veõ döõ lieäu 3D vôùi tæ leä tuyeán tính cho caùc truïc toïa ñoä
line
Veõ ñöôøng thaúng ñi qua caùc ñieåm döõ lieäu
loglog
Veõ vôùi tæ leä logarithmic cho caùc truïc toïa ñoä
semilogx Veõ vôùi tæ leä logarithmic cho truïc x vaø tæ leä tuyeán tính cho
truïc y
semilogy Veõ vôùi tæ leä logarithmic cho truïc y vaø tæ leä tuyeán tính cho
truïc x
plotyy
Veõ ñoà thò vôùi truïc y ôû beân traùi vaø beân phaûi
ÑOÀ HOÏA TRONG MATLAB
Leänh plot
plot(Y)
Cuù phaùp Moâ taû
Veõ ñoà thò vôùi hoaønh ñoä laø chæ soá cuûa phaàn töû, tung ñoä laø giaù trò cuûa phaàn töû töông öùng
plot(X1,Y1,...)
plot(X1,Y1,LineSpec,...)
Veõ ñoà thò vaø ñònh tính chaát cho taát caû caùc ñöôøng thaúng
plot(...,'PropertyName',PropertyValue,...)
Veõ ñoà thò baèng caùch söû duïng caùc ñöôøng thaúng noái töøng caëp döõ lieäu X1(i) vaø Y1(i)
Veõ coù ñònh tính chaát cho caùc ñoái töôïng
h = plot(...) Traû veà giaù trò quaûn lyù ñoái töôïng veõ
ÑOÀ HOÏA TRONG MATLAB
t = 0:pi/100:2*pi; y = sin(t); y2 = sin(t-0.25); y3 = sin(t-0.5); plot(t,y,'-',t,y2,'--',t,y3,':')
Ví duï
Kí hieäu Kieåu ñöôøng -
solid line (Maëc ñònh)
dashed line
dotted line
dash-dot line
-- : -.
ÑOÀ HOÏA TRONG MATLAB
LineWidth: plot(X,Y,’LineWidth’,2)
1
3
5
Giaù trò LineWidth
Hình
ÑOÀ HOÏA TRONG MATLAB
Color: plot(X,Y,’Color’,[0.1 0.5 0.7]), plot(X,Y,’Color’,’y’)
Caùch khai baùo giaù trò maøu cho ñoái töôïng trong Matlab
o Nhaäp giaù trò maøu RGB laø vector haøng 3 phaàn töû
o Nhaäp teân cuûa maøu
8 7 6 5 4 3 2 1 0 0
2
4
6
8
10 12 14
x = 0:pi/15:4*pi; y1 = exp(2*cos(x)); y2 = exp(2*sin(x)); plot(x,y1,'-*r',x,y2,'-.og','linewidth',2)
ÑOÀ HOÏA TRONG MATLAB
Marker: plot(X,Y,’o’)
Kí hieäu
YÙ nghóa
Moät soá loaïi Marker:
MarkerEdgeColor
Kí hieäu
YÙ nghóa
Ñònh giaù trò maøu cho ñöôøng vieàn cuûa Marker
+
Daáu coäng
MarkerFaceColor
o
Hình troøn
Ñònh giaù trò maøu cho beà maët cuûa Marker
*
Daáu hoa thò
MarkerSize
.
Ñieåm
Ñònh ñoä lôùn cho Marker
x
Daáu cheùo nhau
s
Hình vuoâng
x = 0:pi/15:4*pi; y = exp(2*cos(x)); plot(x,y,'r+')
d
Hình thoi
8
^
Tam giaùc treân
7
6
v
Tam giaùc döôùi
5
>
Tam giaùc beân phaûi
4
<
Tam giaùc beân traùi
3
2
p
Sao naêm caïnh
1
h
Sao saùu caïnh
0 0
2
4
6
8
10
12
14
ÑOÀ HOÏA TRONG MATLAB
Moät soá leänh phuï trôï trong ñoà hoïa
Leänh
Giaù trò
Moâ taû
on, off
grid
Baät hay taét löôùi veõ
on, off
hold
Giöõ laïi taát caû caùc ñoái töôïng veõ
axes
Taïo heä truïc toïa ñoä
axis
[Xmin Xmax Ymin Ymax] Ñònh giaù trò giôùi haïn cho caùc truïc toïa ñoä
Xlabel, Ylabel Chuoãi kí töï
Ghi chuù caùc truïc toïa ñoä
Legend
Chuoãi kí töï
Ghi chuù caùc döõ lieäu
Title
Chuoãi kí töï
Ñònh tieâu ñeà cho hình veõ
cla
Xoaù taát caû ñoái töôïng treân axes
ÑOÀ HOÏA TRONG MATLAB
Leänh Line
Cuù phaùp
Moâ taû
line(X,Y)
Veõ ñoaïn thaúng ñi qua caùc ñieåm döõ lieäu trong maët phaúng OXY
line(X,Y,Z)
Veõ ñoaïn thaúng ñi qua caùc ñieåm döõ lieäu trong maët phaúng OXYZ
line(X,Y,Z,'PropertyName',PropertyValue,...) Ñònh giaù trò cho caùc thuoäc
tính cuûa ñoái töôïng
h = line(...)
Traû veà giaù trò cuûa bieán quaûn lyù ñoái töôïng
ÑOÀ HOÏA TRONG MATLAB
Leänh Line
clear all; clc; close all; t = 0:pi/20:2*pi; hline1 = plot(t,sin(t),'g','LineWidth',2); hline2 = line(t+.6,sin(t),'LineWidth',4,'Color',[.5 .2 .2]); set(gca,'Children',[hline1 hline2])
1
0.8
0.6
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1 0
1
2
3
4
5
6
7
PHẦN II- LAÄP TRÌNH TRONG MATLAB
LẬP TRÌNH VỚI MATLAB
Laäp trình vôùi Matlab Matlab cho pheùp laäp trình theo hai hình thöùc: SCRIPTS vaø function
Scripts
function
Laø hình thöùc ñôn giaûn nhaát cuûa M-file, noù khoâng coù thoâng soá vaøo vaø ra. Laø taäp hôïp caùc leänh vaø haøm cuûa Matlab. Taát caû caùc bieán taïo ra trong Scripts ñeàu coù theå söû duïng sau khi Scripts keát thuùc. ----------------------------------------------------------------- M-file: vidu.m x= 0:0.01:2*pi; y=sin(x); plot(x,y)
Laø Scripts tuy nhieân coù theâm ñoái soá vaøo (input arguments) vaø ñoái soá ñaàu ra (output argument). Taát caû caùc bieán hoaït ñoäng trong moät Workspace rieâng. Bieán trong function chæ laø bieán cuïc boä. ----------------------------------------------------------------- M-file: doido.m function rad = doido(do) rad=do*pi/180;
MATLAB CAÊN BAÛN
8. Laäp trình vôùi Matlab
Hình thöùc khai baùo haøm
- Töø khoaù function baét buoäc phaûi khai baùo. - Thoâng soá ñaàu ra: neáu coù nhieàu giaù trò traû veà, caùc thoâng soá naøy ñöôïc ñaët trong daáu ‚[ ]‛. Neáu khoâng coù giaù trò traû veà ta coù theå ñeå troáng hay ñeå daáu []. - Teân haøm -Thoâng soá ñaàu vaøo ñöôïc khai baùo trong daáu () - Bieán toaøn cuïc vaø ñòa phöông
Ví duï1 : laäp trình 1 haøm coäng , luu file cong.m de tinh toång 2 soá. function tong = cong(x,y) Tong = x+y; End.
Vidu 2: Lập hàm tính toán nhiều thông số đầu ra tính công , tru ,nhan, chia cho 2 so x,y Function [a,b,c,d]= pheptoan(x,y);
MATLAB CAÊN BAÛN
8. Caáu truùc ñieàu kieän
Toaùn töû YÙ nghóa
Caáu truùc ñieàu kieän: if < Nhoû hôn
>
Lôùn hôn
<= Nhoû hôn hoaëc baèng
==
Baèng nhau
if (bieåu thöùc logic) nhoùm leänh end >= Lôùn hôn hoaëc baèng
~= Khoâng baèng
nhoùm leänh 2
if (bieåu thöùc logic) nhoùm leänh 1 else end
MATLAB CAÊN BAÛN
8. Caáu truùc ñieàu kieän
Caáu truùc ñieàu kieän: if…end
nhoùm leänh 2
nhoùm leänh 3
if (bieåu thöùc logic) nhoùm leänh 1 elseif else end
Ví duï:
Tìm nghieäm phöông trình baäc 2 nhaäp vaøo a,b,c.
%tim nghiem phuong trinh bac 2 % lap trinh th.s nguyen tan phuc a=input('nhap a '); b=input('nhap b '); c=input('nhap c '); delta=b^2-4*a*c; if delta<0 disp(' vo nghiem '); elseif delta ==0 disp(' nghiem '); disp(-b/(2*a)); else disp(' nghiem 1 '); disp((-b+sqrt(delta))/2); disp(' nghiem 2 '); disp((-b-sqrt(delta))/2); end
MATLAB CAÊN BAÛN
8. Caáu truùc ñieàu kieän
Caáu truùc ñieàu kieän: switch … case
nhoùm leänh 1
nhoùm leänh 2
switch (bieåu thöùc ñieàu kieän) case (giaù trò 1 bieåu thöùc) otherwise end
disp(‘ menu ve do thi ’);
Ví duï: taïo moät menu löïa choïn
disp(‘ menu noi suy da thuc ’);
disp(‘thoat khoi chuong trinh ’);
chon = input(‘Nhap vao lua chon cua ban, chon= ’) Switch chon case 1 case 2 otherwise end
MATLAB CAÊN BAÛN
8. Caáu truùc laëp coù ñieàu kieän
Caáu truùc laëp coù ñieàu kieän: while
while (bieåu thöùc ñieàu kieän) nhoùm leänh end
a= input(‘Nhap vao gia tri a: ’) while a<=0 disp(‘a lon hon khong ’); a= input(‘Nhap vao gia tri a: ’) end
Ví duï: yeâu caàu nhaäp vaøo giaù trò cho bieán x. vieäc nhaäp chæ keát thuùc khi x coù giaù döông
Tính toång cuûa chuoãi:
% tính tong chuoi tu o den n.. n=input('nhap n '); i=0; tong=0; while (i<=n) tong=tong+1/(i^2+1); i=i+1; end disp('tong '); disp(tong);
MATLAB CAÊN BAÛN
9. Caáu truùc laëp
Caáu truùc laëp: for
for bieán = bieåu thöùc end
nhoùm leänh
1.Vieát chöông trình nhaäp soá n vaø tính toång töø 1 ñeán n.
2. Viết chương trình nhập vào n số, in ra số lớn nhất, số bé nhất.
LÖnh break : T¸c dông ®iÒu khiÓn chương tr×nh nh¶y ra khái vßng lÆp for.. hay while… gÇn nã nhÊt.
Continue: thực thi tiếp cac lệnh sau vong lặp.
Biến toàn cục : global x,y,z..có gi trị trong tất cả chương trinh. Lưu ý: các biến khai báo trong hàm chỉ có giá trị cục bộ trong hàm ..
PHẦN III- TAÏO GIAO DIEÄN TRONG MATLAB --------- GUIDE IN MATLAB
1.MỞ PHẦN MỀM Mở phần mềm, gõ lệnh sau vào command>>guide
Blank GUI (Default): Hộp thoại GUI trống không có điều khiển unicontrol
Create New GUI: Tạo một hộp thoại GUI mới:
nào cả.
* GUI With Unicontol: Hộp thoại GUI với vài unicontrol như button,…,
chương trình có thể chạy ngay.
* GUI With Axes Menu: Hộp thoại với một unicontrol axse và button,
các menu để hiển thị đồ thị.
* Modal Question Dialog: Hộp thoại đặt câu hỏi Yes, No.
Open Existing GUI: mở hộp thoại project có sẵn
• Push Button: giống như nút command button trong VB. Là các nút
bấm như nút OK,Cancel,.. Slider: Thanh trược có một con trược chạy trên đó.
Các nút điều khiển khác:
Radio Button: Nút nhỏ hình tròn để lựa chọn (Options)
Check Box, Edit Text, Static Text, Pop-up Menu, List Box, Axes, Panel,
Button Group, AtiveX Control, Toggle Button.
EDIT BOX
gán giá trị vào edit-box: Set(handles.editbox,’string’, string )
Pop-up menu
SLIDER
AXES-FIGURE
BASIC GUIDE
MATLAB IN SERVO CONTROLLERS
MATLAB IN ROBOT CONTROLLERS
MATLAB IN ROBOT CONTROLLERS
The end….