Bài giảng Matlab: Ứng dụng, thiết kế, điều khiển - Nguyễn Tấn Phúc

pdf 55 trang Gia Huy 17/05/2022 1530
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Matlab: Ứng dụng, thiết kế, điều khiển - Nguyễn Tấn Phúc", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfbai_giang_matlab_ung_dung_thiet_ke_dieu_khien_nguyen_tan_phu.pdf

Nội dung text: Bài giảng Matlab: Ứng dụng, thiết kế, điều khiển - Nguyễn Tấn Phúc

  1. 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
  2. TAØI LIEÄU HOÏC TAÄP 1.SLIDE BAØI GIAÛNG . 2.SAÙCH MATLAB CÔ SÔÛ. ÑAÙNH GIAÙ HK HEØÙ 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.
  3. 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.
  4. PHẦN I- MATLAB CAÊN BAÛN
  5. MATLAB CAÊN BAÛN I. BIEÅU THÖÙC (EXPRESSION) . Bieán soá ( variables) . Soá (Numbers) . Toaùn töû ( Operaters) . Haøm ( Functions) - toái ña 19 kyù töï coù nghóa - phaân bieät giöõa chöõ hoa vaø chöõ thöôøng. Bieán (Variables) - 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)
  6. 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’.
  7. 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.
  8. 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
  9. 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 (ñònh daïng) >> b=3/26; >> format long; b >> format +; b b = b = 0.11538461538462 + >> format short e; b >> format rat; b b = b = 1.1538e-001 3/26 >> format bank; b >> format short; b b = b = 0.12 0.1154 >> format short eng; b >> format long eng; b b = b = 115.3846e-003 115.384615384615e-003>> >> format hex; b b = 3fbd89d89d89d89e
  10. 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
  11. 2. Toaùn töû (operaters) (+, -, *, /, \,^,’) To¸n tö quan hÖ ý nghÜa Lín h¬n vd A>B = Lín h¬n hoÆc b»ng A>=B == B»ng vd A==B ~= Kh«ng b»ng vd A~=B
  12. Toaùn töû (operaters) To¸n tö logic ý nghÜa & Vµ vd A&B | HoÆc vd A|B ~ §¶o vd ~A
  13. operators operator Miêu tả + Phép cộng - Trừ * nhân .* Nhân ma trận / chia ./ Chia phải 2 ma trận ^ Lũy thừa .^ Lũy thừa ma trận ‘ Tranpose
  14. 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
  15. MA TRAÄN TRONG MATLAB Cách Khai báo ma trận: A=[2 3;4 5]; . ‚;‛ coù nghóa laø chuyeån sang haøng keá tieáp. B=[2 3 4;4 5 6;6 7 8]. . ‚,‛ hay ‚ ‚ phaân caùch giöõa caùc phaàn töû. >> 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
  16. 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
  17. MA TRAÄN TRONG MATLAB >> D=[A C] >> A=[1 2 3;4 5 6;7 8 9] D = A = 1 2 3 -4 2 3 1 2 3 4 5 10 1 2 1 4 5 6 7 8 9 2 5 6 7 8 9 >> D(5) >> A(2,3)=10 ans = A = 5 1 2 3 >> D(4,5) 4 5 10 ??? Index exceeds matrix dimensions. 7 8 9 >> X=D >> B=A(2,1) X = B = 1 2 3 -4 2 3 4 4 5 10 1 2 1 >> C=[-4 2 3;1 2 1;2 5 6] 7 8 9 2 5 6 C = >> X(2,6) -4 2 3 ans = 1 2 1 1 2 5 6 >> X(2,:) ans = 4 5 10 1 2 1
  18. Ñ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
  19. ÑOÀ HOÏA TRONG MATLAB Böôùc MATLAB code X= 0:0.1:2*pi; 1. Chuaån bò döõ lieäu Y= sin(X)=f(x). 2. Choïn cöûa soå vaø vò trí cuûa ñoái figure(‘Name’,’Hinh sine’); töôïng ñoà hoïa trong cöûa soå. subplot(2,2,1); 3. Goïi haøm veõ ñoà thò h = plot(X,Y); 4. Xaùc ñònh thuoäc tính cho hình set(h, ‘LineStyle’,’- nhö kieåu ñöôøng, maøu saéc, ‘,’Color’,’r’) 5. Xaùc ñònh caùc thuoäc tính cuûa axis, axis([-1 6 -1.2 1.2]); axes, löôùi veõ, grid on; xlabel(‘X’); 6. Chuù thích cho ñoà thò: labels, ylabel(‘Y=SIN(X)’); legend, text, title(‘Ñoà thò hình sine’); 7. Xuaát keát quaû
  20. Ñ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
  21. ÑOÀ HOÏA TRONG MATLAB Leänh plot Cuù phaùp Moâ taû Veõ ñoà thò vôùi hoaønh ñoä laø chæ soá plot(Y) cuûa phaàn töû, tung ñoä laø giaù trò cuûa phaàn töû töông öùng Veõ ñoà thò baèng caùch söû duïng caùc plot(X1,Y1, ) ñöôøng thaúng noái töøng caëp döõ lieäu X1(i) vaø Y1(i) Veõ ñoà thò vaø ñònh tính chaát cho taát plot(X1,Y1,LineSpec, ) caû caùc ñöôøng thaúng Veõ coù ñònh tính chaát cho caùc ñoái plot( ,'PropertyName',PropertyValue, ) töôïng h = plot( ) Traû veà giaù trò quaûn lyù ñoái töôïng veõ
  22. Ñ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,':') Kí hieäu Kieåu ñöôøng Ví duï solid line (Maëc - ñònh) dashed line : dotted line -. dash-dot line
  23. ÑOÀ HOÏA TRONG MATLAB  LineWidth: plot(X,Y,’LineWidth’,2) Giaù trò 1 3 5 LineWidth Hình
  24. Ñ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 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) 8 7 6 5 4 3 2 1 00 2 4 6 8 10 12 14
  25. ÑOÀ HOÏA TRONG MATLAB  Marker: plot(X,Y,’o’) Kí hieäu YÙ nghóa Moät soá loaïi Marker: Ñònh giaù trò maøu MarkerEdgeColor cho ñöôøng vieàn Kí hieäu YÙ nghóa cuûa Marker + Daáu coäng Ñònh giaù trò maøu o Hình troøn MarkerFaceColor cho beà maët cuûa Marker * Daáu hoa thò MarkerSize Ñònh ñoä lôùn cho . Ñieåm Marker x Daáu cheùo nhau x = 0:pi/15:4*pi; y = exp(2*cos(x)); s Hình vuoâng plot(x,y,'r+') d Hình thoi 8 ^ Tam giaùc treân 7 v Tam giaùc döôùi 6 > Tam giaùc beân phaûi 5 4 < Tam giaùc beân traùi 3 p Sao naêm caïnh 2 h Sao saùu caïnh 1 00 2 4 6 8 10 12 14
  26. ÑOÀ HOÏA TRONG MATLAB  Moät soá leänh phuï trôï trong ñoà hoïa Leänh Giaù trò Moâ taû grid on, off Baät hay taét löôùi veõ hold on, off 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
  27. Ñ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
  28. Ñ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
  29. PHẦN II- LAÄP TRÌNH TRONG MATLAB
  30. 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 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. Scripts 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 function trong function chæ laø bieán cuïc boä. M-file: doido.m function rad = doido(do) rad=do*pi/180;
  31. 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
  32. 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);
  33. 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 Lôùn hôn end >= Lôùn hôn hoaëc baèng == Baèng nhau ~= Khoâng baèng if (bieåu thöùc logic) nhoùm leänh 1 else nhoùm leänh 2 end
  34. MATLAB CAÊN BAÛN 8. Caáu truùc ñieàu kieän  Caáu truùc ñieàu kieän: if end if (bieåu thöùc logic) nhoùm leänh 1 elseif nhoùm leänh 2 else nhoùm leänh 3 end
  35. 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
  36. MATLAB CAÊN BAÛN 8. Caáu truùc ñieàu kieän  Caáu truùc ñieàu kieän: switch case switch (bieåu thöùc ñieàu kieän) case (giaù trò 1 bieåu thöùc) nhoùm leänh 1 otherwise nhoùm leänh 2 end Ví duï: taïo moät menu löïa choïn chon = input(‘Nhap vao lua chon cua ban, chon= ’) Switch chon case 1 disp(‘ menu ve do thi ’); case 2 disp(‘ menu noi suy da thuc ’); otherwise disp(‘thoat khoi chuong trinh ’); end
  37. 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 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 a= input(‘Nhap vao gia tri a: ’) while a<=0 disp(‘a lon hon khong ’); a= input(‘Nhap vao gia tri a: ’) end
  38. 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);
  39. 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 nhoùm leänh end 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.
  40. 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
  41. PHẦN III- TAÏO GIAO DIEÄN TRONG MATLAB GUIDE IN MATLAB
  42. 1.MỞ PHẦN MỀM Mở phần mềm, gõ lệnh sau vào command>>guide
  43. Create New GUI: Tạo một hộp thoại GUI mới:  Blank GUI (Default): Hộp thoại GUI trống không có điều khiển unicontrol 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
  44. • 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 đó. Radio Button: Nút nhỏ hình tròn để lựa chọn (Options)  Các nút điều khiển khác: Check Box, Edit Text, Static Text, Pop-up Menu, List Box, Axes, Panel, Button Group, AtiveX Control, Toggle Button.
  45. EDIT BOX gán giá trị vào edit-box: Set(handles.editbox,’string’, string )
  46. Pop-up menu
  47. SLIDER
  48. AXES-FIGURE
  49. BASIC GUIDE
  50. MATLAB IN SERVO CONTROLLERS
  51. MATLAB IN ROBOT CONTROLLERS
  52. MATLAB IN ROBOT CONTROLLERS
  53. The end .