Download as pdf
Download as pdf
You are on page 1of 485
NGUYEN PHUNG QUANG TA cL DANH CHO KY SU DIEU KHIEN TU DONG Torgue her, Speed (PM) a NHA XUAT BAN KHOA HOC VA KY THUAT Fo7s 2-048 Nqguyén Phiing Quang MATLAB & Simulink. danh cho ky su diéu khién tu dong NHA XUAT BAN KHOA HOC VA KY THUAT HA NOI - 2004 Léi ndi dau Déi véi ky su diéu khién - ty déng héa ndi riéng va nhiing ngudi nghién citu khoa hoc — ky thuat néi chung, m6 phéng 18 cng cu quan trong cho phép khao sat cdc d6i tugng, hé théng hay qua trinh ky thuat - vat ly, ma khéng nhat thiét phai co déi tug: hay hé thOng thuc. Dugc trang bi mot céng cu mé phéng manh va cé hiéu biét vé cdc phuong phdp mé hinh héa, ngudi, ky su sé co kha nang rit ngin thdi gian va gidm chi phi nghién citu ~ phat trién san phim mot cach dang ké. Diéu nay dc biét c6 ¥ nghia khi san pham 1a cdc hé théng thiét bi ky thuat phitc hgp vdi gia tri kinh té lén. Cac khdi niém mé phéng Off-Line, Software-in- the-Loop, Hardware-in-the-Loop (hay Real Time Simulation: mé phong thoi gian thyc) va Prototyping, da thé hién rd nét cdc bude cia qua trinh phat trién san phdm véi su hé trd cuia may tinh. Trong nhiéu nam qua, ngudi bién soan sdch nay da sit dung phan mém ind phéng MATLAB & Simulink trong hoat dong nghién citu — phat trién thuc tién va giang day cia minh. Dac biét, khi diéu kién thi nghiém tai trudng dai hoc nuéc ta cdn rat thiéu thén, phan mém trén da gép phan hitu ich trong qua trinh dao tao cac ky su diéu khién - ty dong héa. Tuy nhién, viéc thiéu mét tai ligu tham khao thich hgp da han ché hiéu qua dao tao. V6i MATLAB & Simulink ta 6 trong tay mot céng cu mé phéng manh kém theo tai liu dudi dang files .pdf v6 cing chi tiét va phong phti. Nhuge diém chinh cita cdc tai ligu dé 1a: 1. Chiing khéng hé truyén dat cho ngudi doc kién thitc vé phuong phap mé hinh hoa; 2. Ching qua chi tiét, dén mic tan man, va vi vay da lam mat khong it thdi gian ctia ngudi hoc. Nhu céu vé mot tai liéu bing tiéng Viét, khdc phuc duge hai nhuge diém dé, la nhu cdu bite xe cua qua trinh dao tao, khién tac gia dat quyét tam bién soan cuén sach nay. Cuén sach bao gém ba phan chinh: 1. Phan co sé vé MATLAB va mét vai Toolbox quan trong. Phan nay gom cae chudng 1 — 5. 2. Phan gidi thiéu Simulink va cdc th vién di kém. Phan nay gém cdc chuong 6 - 9. 3. Phan gidi thigu Motion Control Blockset, céng cu khao sat cic hé thong diéu khién chuyén dong. Phan nay gém cae chugng 10 ~ 12. Phan 1va 2 duge bién soan chi yéu dya trén nén giao. trinh vé MATLAB (tai liéu [1)) clita dai hoc Miinchen (CHLB Ditc). Phan 3 bao gém cdc két qua nghién citu cia ban than tac gia, cia déng nghiép (tai liéu [9]) va cai sinh vién tai dai hoc Bach Khoa Ha Néi. N6i dung dy kién ban dau cia séch cn bao gém hai Toolbox quan trong 1a Real-Time Workshop, Stateflow Blockset. Tuy nhién, dé gidi han kich cd sAch va thdi gian bién soan (trong khi sinh vién dang trong dgi tai liéu hoc) nén ngudi viét tam ngiing lai 6 khéi lugng 12 chugng. Cac ndi dung con thiéu sé duge bé sung 4 lan tai ban sau nay. C4n phai khang dinh rang MATLAB khéng phai la mét ngén ngit ap trinh, mac di phan mém nay ciing cé cdc kha nang cia mot ngén ngit l4p trinh bac cao; MATLAB & Simulink trudc hét 14 mét céng cy toan sé, véi thé manh tinh toan va mé phéng hé théng. Dat myc tiéu han ché vao d@i tugng ban doc chinh la sinh vién va ky su nganh diéu khién - tut déng héa, cudn sach thé hién ro thé manh trén cha bé phan mém. Khi bién sogn, ngudi viét cd ging trinh bay cac van dé mét cach dé hiéu va tiing bude déu c6 minh hoa béi vi dy di kém. Dé bao dam tinh chinh xac, nguéi viét tu tay minh thuc hién lai tat ca cdc vi du (st dung MATLAB phién ban 6.0/ rel. 12, Simulink phién ban 4.0). Tac gid cdm dn Dipl.-Ing. (Uni.) J. Meyer (Dresden, CHLB Dttc) da cho phép sit dung cée mé hinh cla minh. Xin cim dn TS. Tran Thi Thu Hung, ban dai cua tae gid, ngudi da luén déng vién va tao diéu kién dé tac gid hoan thanh sch. Cam on chi Nguyén Thi Ngoc Khué, Nha xuat ban Khoa hoc va Ky thuat, da hgp tac va tao diéu kign dé sich nhanh chéng ra mat kan doc. Xin nh&n manh lan cuéi dac diém bién soan cla cuén sach: Dé nhanh chéng 6 séch phyc vy cho sinh vién (46i tugng ban dec chinh), tac gia da bién soan chi yéu dua trén cdc tai ligu ca nhiéu tac gid xudt ban 6 nude ngoai. Trit mot s6 két qua cia cdc nghién ctu img dung cu thé, cudn sdch néi chung khéng mang dic diém cng trinh khoa hoc cua ca nhan nguii bién soan. Tuy nhién, hy vong da cung cp cho ban doc, cho ngudi hoc mét tai liéu tham khao cé ich. Da da duge viét kha cdn than, séch khé tranh khéi con nhiing sai sot. Moi 1di gop ¥, nhan xét hay dé xudt bd sung nhim hoan thién sdch, xin ban doc gitt vé Nha xuat ban Khoa hoc va Ky thuat, hay vé Phong thi nghiém trong diém vé Ty dng héa — Trung dai hoe Bach khoa Ha Ndi, xin chan thanh cdm dn. Ha Noi, hé Quy Mai 2003 Tae gia Ai Muc luc 2.2.1 2.2.2 2.2.3 2.3 2.3.1 2.3.2 24 Loi néi dau MATLAB VA CAC TOOLBOX Co sé vé MATLAB Nhiing bude di dau tién véi MATLAB Man hinh MATLAB : Tién ich tr¢ gitip (Help) cha MATLAB Cac bién Cac ham ton Vector va ma tran Tinh ton véi vector va ma tran Cau tric va truéng Cau trée Trung Quan ly bién Cac phép so sanh va phép tinh logic Ré nhanh va vong lap Lénh ré nhanh if va switch Vong lap stt dung for va while Gian doan bang cont inue va break Cac Scripts va céc ham cha MATLAB Cac Scripts cia MATLAB Céc ham cia MATLAB ‘Tom tat ndi dung chuong 1 Xuat va nhap dif ligu trén man hinh Diéu khién xuét ra man hinh Déi thoai cha MATLAB véi ngudi sit dung Van ban (Text) trong MATLAB Déi thoai khi nhap van ban Xudt theo dinh dang Nhap va xudt dé ligu Cat vao hode goi dif liéu tt File Cat c6é dinh dang vao File van ban Hé diéu hanh va quan ly File Trang Biéu dién bang dé hoa Cita s6 Figure — cd sd ctia dé hoa MATLAB ‘Truc-va dién ky tu cho truc Dé haa 2 chiéu (2-D Graphics) Cc lénh vé (Plot Commands) Vi du: Khau quan tinh bac nhat PT,, va khau ty 16 ~ vi phan PD Dé hoa 3 chiéu (3-D Graphics) C&c lénh Plots Phéi canh (Perspective) trong dé hoa 3-D Vi du vé dé hoa 3-D c6 phéi canh Nhap, xuat va in dé hoa Giao dién dé hoa Layout (dién mao) ciia GUI Nhap va xuat ky ty, s6'liéu ra GUI Nhép sé liéu tif thanh trugt (Slider) Nh§p di Héu tay chon (Popup Menu, List Box, Radio Button and Check Box) Cac phuong ph&p tao GUI ‘Tém tat néi dung chudng 2 Control System Toolbox: Céng cu khao sat - thiét ké he théng diéu khién M6 hinh hoa cac hé tuyén tinh — ding (hé LTD M6 hinh truyén dat Mé hinh diém khéng - diém cuc M6 hinh trang thai Mé hinh dit liéu dc tinh tan si M6 hinh gian doan theo théi gian ‘Thdi gian tré trong cdc hé tuyén tinh ~ ditng (hé LTD. Nguyén tac sit dung mé hinh LT! Dac diém cia mé hinh LTT ‘Truy cap nbanh dif liéu cia mé hinh Trinh ty wu tién cia mé hinh LTI Tinh ké thita cua mé hinh LTT Dao loai cho mé hinh LTi Cac phép tinh sé hee Lya chon, thay déi va ghép néi mé hinh LTI Chuyén déi gitta hai hé lién tuc va gian doan vé théi gian Khao sat mé hinh LTI Cae dic diém téng quat Khao sat dgng hoe cha mé hin Dap ting cua hé trén mién thdi gian Dap ting cia hé trén mién tan so 30 30 32 34 34 36 38 38 39 39 41 43, 43 44 AT 49 53 62 65 65 66 68 7 2 74 76 79 79 83 83 84 85 85 87 92 96 96 98 104 109 3.3.5 3.3.6 3.4 3.4.1 3.4.2 3.4.3 3.4.4 3.4.5 3.5.1 3.5.2 3.5.3 3.5.4 3.6 41 4.2 4.3 4.3.1 4.3.2 44 4.5 4.6 47 48 SL 5.2 6.2.1 5.2.2 5.3 5.4 5.4.1 5.4.2 M6 hinh gidm bac Cae phugng phap mé ta trén khong gian trang thai ‘Thiét ké vong diéu chinh ‘Thiét ké theo phudng phap quy dao diém eye Thiét ké theo phugng thite déi thoai gitta ngudi va PC Diéu khién va quan sat trang thai Thiét ké theo phudng phap gan cuc ‘Thiét ké theo tiéu chuan tich phan téi wu Cac van dé khi tinh toan sé Khai niém 1d; KhAi niém diéu héa mé hinh Tinh én dinh sé hoc Danh gia mé hinh LT! theo quan diém tinh sé Tom tat ngi dung chugng 3 Optimization Jootbox: Céng cy tinh ton tim téi uu Inline Objects Diéu khién thuat toan Tim diém kh6ng Ham scalar Ham vector va hé phuong tinh Tim cuc tiéu cho ham phi tuyén Tim cyc tiéu khi 6 diéu kign phu Phuong phap binh phuong Sai phan bé nhat Tim bé tham sé t6i uu cho mé hinh SIMULINK Tom tat ngi dung chugng 4 Signal Processing Toolbox: Céng cu xi ly tin higu Phuong ph4p ni suy (Interpolation) Bién déi Fourier gian doan Phuong phap Averaging Phuong phap tao ctfa sé sé Tigu Ham tudng quan (Correlation Functions) Loc s6 (Digital Filter) Bé loc FIR va ham cita sé B6 loc IIR Loc tuong ty (Analog Filter) Tom tat ndi dung chuong 5 SIMULINK VA CAC THU VIEN Co sé vé SIMULINK Khéi dong SIMULINK Tao mdi va soan thao luu dé tin hiéu 119 122 126 127 131 132 134 140 147 147 148 149 150 150 153 153 155 157 157 161 166 170 ATT 185 189 191 191 194 196 198 200 205 206 209 211 212 213 213 216 se 6.3 6.3.1 6.3.2 6.4 6.4.1 6.4.2 6.5 66 6.6.1 6.6.2 6.6.3 6.6.4 6.6.5 6.7 6.7.1 6.7.2 6.7.3 6.74 68 TA 7.2 7.3 TA 75 7.6 IT 78 8.1 8.2 8.3 8.4 84.1 8.4.2 8.5 9.1 O.t 9.1.2 Iv ‘Tin hiéu va cdc loai dit ligu Lam viée véi tin higu Lam viée véi cdc loai s6liéu SOURCES va SINKS SOURCES SINKS Math Chudn bi mé phéng: Khai bao tham sé va phuong phap tich phan Khdi dgng va ngiing mé phéng Xu ly 16i Tap hgp cac tham sé trong Script cha MATLAB Vi du In mé hinh SIMULINK Hé théng con (Subsystem) Tao hé théng con Thy vién Signals & Subsystems Kich hoat 06 diéu kién cac hé thong con Danh dau céc hé con (Mask Subsystems) Tom tat ni dung chudng 6 C&c hé théng tuyén tinh va phi tuyén Thu vién Continuous Tuyén tinh héa Xée dinh diém cin bing Thu vién Nonlinear Tom tat ndi dung chugng 7 Cac hé théng trich mau (hé gién doan) Cae khai niém téng quan Tham sé mé phéng Thu vién Discrete Hé cé chu ky trich m&u hén hgp va hé lai H6 c6 chu ky hén hgp Hé lai ‘Tom t4t ndi dung chuong 8 Phan tich va téng hgp vong diéu chinh Déng cd mét chiéu kich thich déc lap Khai bao lap tri ban dau M6 hinh SIMULINK 217 217 220 220 220 224 230 233 241 242 243 243 246 246 (246 247 251 254 256 257 257 261 263 265 268 271 272 281 283 283 284 286 287 287 288 290 291 291 292 293 9.2 9.2.1 9.2.2 9.2.3 9.3 9.3.1 9.3.2 9.4 9.4.1 9.4.2 9.5 9.6 PHANG 10 10.1 10.2 10.3 10.4 10.5 10.6 10.7 10.8 11 111 poy 11.3 114 11.5 12 12.1 12.2 12.2.1 12.2.2 12.2.3 12.3 Khéo sat déng hoc cia déi tuong Khao sat bang SIMULINK Khao sat bang MATLAB su dung m6 hinh tuyén tinh héa Khao sat mé hinh LI qua déi thoai vai LTI-Viewer Diéu chinh véi nhiéu ving phan cp (Cascade Control) Diéu chinh déng phan tng Diéu chinh téc d6 quay Quan sat trang thai Khau quan sat Luenberger Khau quan sat nbiéw (QS phu tai) Diéu khién trang thai stt dung khau quan sat trang thai Tom tat ndi dung chuong 9 MOTION CONTROL BLOCKSET: CONG CY KHAO SAT CAC HE THONG DIEU KHIEN CHUYEN DONG Thu vién m6 hinh may dién quay Khai quat vé Motion Control Blockset May dién mét chiéu kich thich adc lap May dién khdng déng bé xoay chiéu ba pha May dién déng bé ba pha kich thich vinh citu May dién déng bé ba pha kich thich déc lap May dién khéng déng b6 nguén kép May dién ti khang kiéu dong ngét ‘Tom tat noi dung chugng 10 n mé hinh thiét bi bién déi (dién ti cong suat) M6 hinh edu chinh htu 6 xung co khién cdt pha M6 hinh nghich Iutu bam xung nguén ap M6 hinh nghich liu nguén dong nuéi MDDB M6 hinh thiét bj bién déi truc tiép nuéi MDDB va MDDB Tom tt néi dung chuong 11 Thu vién mé hinh phan co va vi dy tng dung cla Motion Control Blockset Thu vién mé hinh céc phan tit truyén dong ca hoc Vai vi du ting dung M6 phong mét trac chuyén dong cia tay may sit dung MDDB M6 phéng hé thdng phat dién chay site gid sit dung MDDB-RDQ M6 phéng hé truyén déng dj bé theo phutong php “Direct Torque Control” stt dung Logic ma Tom tat ndi dung chugng 12 oe 294 295 298 300 301 303 306 308 310 313 318 319 319 321 326 343, 351 36] 365 374 375 376 379 389 397 399 401 401 404 404 409 419 467 1 abi 11.2 11.3 VI Tai ligu tham khao Tai ligu tham khdo chung Cac tai ligu dudi dang .pdf-Files Cac luan van, dé an tét nghiép tai DHBK Ha Noi 4a gop phan xay dung Motion Control Blockset Danh muc tir tra cou 469 469 470 470 473 1 Cosévé MATLAB MATLAB 1a mét bé chugng trinh phan mém Idn cia linh vue toan sd. Tén bd. chung trinh chinh 1a chit viét tat tit MATrix LABoratory, thé hién dinh huéng chinh cia chung trinh 1a cdc phép tinh vector va ma tran. Phan cét ldi cha chugng trinh bao gdm mét sé ham toan, cdc chttc nang nhap/xudt cing nhu cdc kha nang diéu khién chu trinh ma nhé dé ta cé thé dung nén cac Scripts. Thém vao ph4n cét Idi, c6 thé mua bé sung c&c Toolbox! (b6 céng cu) véi pham vi chtic nang chuyén dung ma ngudi st dung can. Tai ligu nay sé chi gidi thiéu han ché mét sé Toolbox lién quan téi Diéu khién - Tu déng héa nhu: Control System Toolbox, Signal Processing Toolbox, Optimization Toolbox, Stateflow Blockset, Power System Blockset, Real-Time Workshop va SIMULINK. SIMULINK 1a mét Toolbox cé vai trd dac biét quan trong: Vai trd cha mot céng cu manh phuc vu mé hinh héa va mé phéng cdc hé thong Ky thudat — Vat ly tren cd sé sd dé c&u tric dang khéi. Cing véi SIMULINK, Stateflow Blockset tao cho ta kha nang mé hinh héa va mé phéng cdc automat trang { thai hitu han. Cudi ting chuong, muc sé c6 phan téng két lai tat ca cdc lénh quan trong nhét, gitp ban doc hé théng héa lai ndi dung ciia chudng, myc 46. Cing cin phai quy uéc truéc: Cac bién sé luén duge viét nghiéng va cdc tham sé duge viet trong ngoac vudng [ ]. Phan ma cha MATLAB ciing nhu cc sé liéu nhap/xudt duge phan biét nh dang chi ddnh may. 1.1. Nhimng budc di dau tién vai MATLAB 1.1.1 Man hinh MATLAB Sau khi khdi déng maélab ta thu dugc man hinh MATLAB, méi trudng tich hop véi nhiing cita sé chinh nhu hinh 1.1. Dé c6 man hinh d6, ta én lugt chon menu: View, Desktop Layout, Five Panel. Cita sé lénh Command Windows @: Day 1a cita sé chinh cla MATLAB. Tai day ta thyc hién toan bé viéc nhap dif liéu va xust két qua tinh toan, Daéu nhap nhay >> bdo hiéu chuong trinh san sang hoat dong: ' Chu ¥: Ngudi bién soan sach chi trugng sit dung nguyén tix géc. Nghia dich trong ngo&c chi c6 gia tri tham khao. 1 Co 6 vé MATLAB 1000 nhdp di liga duge két thuc bing dong tac nhin phim ENTER. : “nhan, chia thue hién tritéc cong, tro va thé tu uu t la dau ngoac vin nhu binh thudng. Sé c6 gid tri !én thudng dud Ame ma {ed thé wide EH). C6 thé két thie chutong trinh bang cach déng man hinh MATLAB, hoac goi lénh it, hode nhfin 06 hop phim Ctrl+a. Idiots fanae Ge @ims-anmayt ae Piece temo hopeanicacion + bani: eA re i T Aspontee De fe Yor Tot De Buabow Wik nie Lae fJijoda eves Hink LI) Man hink MATLAB Cita s6 soan thao Editor @: Nhé chuong trinh soan thao cha MATLAB ta cd thao chudng trinh cin phi c6, phue vu xit ly fing bude néi dung ehudng trish, hay dé phat hién 101. Cita sé qué kh Command History @: Tat ca cée lénh da sti dung trong Command Windaws @ duge liu gitt va hién thj tai day. Co ché igp lai Jonh ot bang céch nhay chu 8, Ciing ¢6 thé cat, sao hoe xda ci nhém Jénh hose ting lénh riéng re. Cita 36 moi tritang cing tie Workspace Browser @: Tat ca céc bign, cac bam t6n tai trong mdi trudng edng tac déu duge hién thj tai cita sé nay vai ddy Li Nhing bude di dau tien voi MATLAB, 3 du théng tin nhut: tén, logi bién/iam, kich 66 tinh theo Bytes vA loai dit ligu. Ngoai ra con c6 thé eft vao b6 nhé cae dit lieu dé, hotic st dung chute nang Array Editors (soan thao ming) dé thay déi e&e bién Gita 56 Launch Pad @: Cia sé nay cho phép ngutai sit dung truy cap nhanh che eéng cy eda MATLAB, phan Help (tr9 gitip) hoiic Online Documents (tai liéu truc tuyén), md Demos (chuong tvink trinh dién). Ctta s6 thet muc hi¢n tai Current Directory Browser @: Nhd ciia 36 nay, nguidi sii dung ¢6 thé nhanh ching han biét, chuyén déi the mye hién tai cia mdi trudng céng tac, md File, tao thu myc moi. Trén day chi thuan ttiy JA vi du vé m6t kha nang tao man hinh cong tac. Nhi menu View, ngudi sit dung cé thé thay ddi link hogt man hinh MATLAB cho phi: hdp véi théi quen va nhu cu sti dyng cia ban than. 14.2 Tién ich tr¢ gidp (Help) cla MATLAB ™ Tién ich Help cita MATLAB 1a v6 cang phong phu. Tay theo nhu céu, hote goi help [command] dé xem noi dung hi trg cia lénh command trie tigp trén Command Windows, hoac sit dung cdng cu truy cap Help (hinh 1.2). ox Ble ES Vw Go We) Wir He Trap ag | meni © ALC sexcad set | rae coo | Sa frome | > sewcnngn FaTeT 3] Teel [| sewate fe) | atusiogat se PaniBIorice) #0 Roeare Woes = Lopes | | { i | | | | syne | | fear ava Fees “no tosteinneperaes elements an ye te coma ales camplecaro | regave ria, ih mayieseioundmpaded rote fused wanton | lSrvuirkRepoa Geneainiat Retesses laxrvan | {Y= aog)X tive he nabal logan tthe slemerts af x Far camsiexornesabve tae Zune 2 «x +s, the comploetoganintsiuned keeping 2 sassien to ei 0 Aogtel = Logtabsie) + atacanziyoe) { Poeun te Ueanee MssagerLog File 25 Properies | | | ma | — pages certarie war og Hinh 12° Cita sé truy céip Help cia MATLAB (goi dor Lag 4 1 Co sd vé MATLAB Co thé goi cita sé 4 hinh 1.2 bing cach goi trén menu, goi lénh he 1lpwin hay doc true tiép trén ctta sé Command Windows. Bang lénh lookfor searchstring ta c6 thé tim chudi ky ty searchstring trong dong ddu cia moi MATLAB Files trong thu muc MATLAB: >>help log LOG =—- Natural logarithm. LOG(X) is the natural logarithm of the elements of X. Complex results are produced if X is not positive. See also LOG2, LOG10, EXP, LOGM. Overloaded methods help sym/log.m x >> Cac lénh lién quan tdi tién ich Help dude tap hgp trong bang sau: Help ich Help truc tuyén ctia MATLAB trong ctta sd) lgnh Command Workspace helpwin [command] __ Tién ich Help tryc tuyén cia MATLAB trong cita sd truy cap Help doc [command] Tu ligu tryc tuyén cha MATLAB trong ctfa sé truy cap Help lookfor searchstring Tim chudi kf ty searchstring trong déng dau tién cia moi MATLAB Files trong thu mye MATLAB help [command] 1.1.3 Cac bién Théng thudng, két qua cia c4c bién duge gan cho ans. St dung dau = ta co thé dinh nghia mét bién, déng thdi gan gid trj cho bién do. Khi nhap tén cua mét bién ma khéng gan gia tri, ta thu duge gia tri hién tai cia bién, Tat cd cdc bién déu la bién global trong Workspace. Tén cia bién 6 thé chita tdi 32 chit cai, gach ngang thap () cing nhu chit s6. Chit viét hoa to va chit viét nhé déu duge phan Viée nhap gia tri cé thé dude thyc hign thanh mét chudi lénh trong cing mot. dong, chi cach nhau béi dau (). Néu st dung d&u phdy () dé tach céc lénh, khi ay cac gia tri sé duge xuat ra man hinh: L.A Nhiing bude di dau tién v6i MATLAB 5 a >> variable 1 = 25; variable 2 = 10; \ 22 variable 1 ) variable_1 = 25 / >>a = variable 1 + variable 2, A = variable_1 / variable 2 35 2.5000 Mat sé'tén bién nhu: pi, i, j vA inf dA duge MATLAB ding dé chi cac hing sf hay ky hiéu, vay ta phai tranh sit dung chting. Déi vdi cdc phép tinh bat dinh (vi du: 0/0), trén man hinh sé hién két qua NaN (Not a Number). eps cho ta biét céip chinh x4c tudng déi khi biéu dién s6 véi dau phdy dong (vi dy: eps = 2,2204e-016): >>1/ 0 - % Inf: infinite (v6 cing) Warning: Divide by zero. ans = Inf >>0 / 0 % NaN: not-defined (b&t dinh) Warning: Divide by zero. ans = NaN Cac ky hiéu = Gan gid tri cho bién 2.7 Cac phép tinh : Nhap gid,tri (con git vai trd dau cach khi nhAp nhiéu gia trj trong cing mét dong) : Dau cach khi xuat nhiéu gia tri trong cong mét don; eps Céip chinh xac tung déi khi sit dung gia tri dau phay déng iy Toan ti ao inf V6 cing («) NaN Not a Number Pi Hang s6 x 1.1.4 Cac ham toaén Chugng trinh MATLAB cé sin rat nhiéu ham todn tap hgp trong bang sau day. Dé xem ky hon, ban doc cé thé si dung cac lénh help el fun hode help datafun, T&t cA cac ham trong bang déu c6 kha nang sit dung tinh vdi vector. 6 1 Co si vé MATLAB Cac ham toAn sqrt(x) Can bac hai rem(x,y) Sé du cha phép chia xhy exp(z) Ham mic sée. round(x) Lam trén sé log(x) Logarithm ty nhién ceil@) Lam trén lén log10(x) Logarithm cd sé thap phan floor(x) Lam trdn xudng abs(x) Gia tri tuyét déi sum(v) Téng cac phan tit vector signix) Ham dau prod(v) Tich cdc phan tt vector real(x) Phan thuc min(v) Phan ttt vector bé nhat imag(x) Phan ao max(v) Phan tit vector lén nhat phase(x) Gdc pha cha sé phtte mean(v) Gia tri trung binh céng Cac ham lugng giac sin(x) Ham sin atan() Ham aretg +90° cos(x) Ham cos atan2(x,y) Ham arctg +180° tan(x) Ham tg sine(x) Ham sin(ax)(a0) 41.2. Vector va ma tran MATLAB cé mét sé lénh dac biét dé khai bdo hode xit ly vector va ma tran. C4ch don gidn nhat dé khai bao, tao nén vector hodc ma tran 1a nhap true tié] Khi nhap truc tiép, cae phan tit cua mét hang duge cach bdi dau phy hoae tri cach bé tréng', cac hang dude cach bdi dau (;) hodc ngat dong. >>my_vector = [1 2 3] my_vector = 1 2 3 >>my_matrix = [my_vector; 5 6 7] my_matrix = 1 2 3 5 6 7 Vector 6 cdc phan tit tiép dién vdi mét bude nhét dinh, c6 thé duge nhap mét cach don gidn nhé toan tit (:) nhu sau (start: increment: destination)”. Néu chi nhap start va destination, MATLAB sé ty dang dat increment 1a +1. Ciing c6 thé nhap cdc vector tuyén tinh cing nhu vector cé phan hang logarithm bang cach ding lénh linspace(start, destination, number) va logspace. Déi véi logspace, start va destination duge nhap bdi sé mi thap phan, vi du: thay vi nhap 100 (= 10?) ta chi can nhap 2: ‘ Trong moi trudng hgp khéc MATLAB sé bé qua vj trf cach bé tréng ® (xudt phat:(buéc:]dich) ® $6 lugng phn tit cha vector 1.2 Vector va ma tran 7 >> long = 1:8 long = >> deep = 10:-2:0 deep = 10 8 6 4 2 0 >> longer = linspace (1,19, 10) longer = e235 7 9 1 16 15 17 19 >> increase = logspace(1,2,5) increase = 10.0000 17.7828 31.6228 56.2341 100.0000 Bang cdc ham ones(line, column) va zeros(line, column) ta tao cac ma tran c6 phan tit 1a 1 hodc 0. Ham eye(line) tao ma tran don vi, ma tran toan phuong vdi cdc phan tit 1 thudc dutng chéo, tat ca cdc phan ttt cén lai la 0. Kich cd cha ma tran hoan ton phy thuéc nguéi nhap: >> two_three = ones(2, 3) two_three = a 1 1 Fe - eS - Viéc truy cap thing | phan tit cia vector hoae ma tran dude thuc hién bang cach khai bao chi sé cia phan tif, trong d6 cAn luu ¥ rang: Chi so bé nhat lal chit khéng phai la 0. Dac biét, khi cdn xuat ting hang hay titng cét, c6 thé sit dung toan ti (:) mét cach rt Igi hai. Néu d&u-() ding mét minh, diéu ay c6 nghia 1a: Phai xudt moi phan tit thugc hang hay cét >> my_matrix (2,3) ans = : 7 >>my_matrix(2,:) ans = 56 MATLAB cé mét lénh r&t hitu ich, phuc vu tao ma tran véi chite nang tin hiéu thi, d6 1A rand(m, n). Khi goi, ta thu duge ma tran m hang, n cét véi phan tit mang céc gia tri ngdu nhién: 8 4_Co sé vé MATLAB >> chance = rand(2,3) chance = 0.9501 0.6068 0.8913 0.2311 0.4860 0.7621 Khai bao vector va ma tran [x1 22. 5x8 x4} Nhfp gia tri cho vector va ma tran start:increment:destination Toan tit (:) linspace (start, destination, number) Khai bao tuy€n tinh cho vector logspace (start, destination, number) Khai bao logarithm cho vector eye (line) Khai b4o ma tran don vi ones (line, column) Khai bao ma tran vdi cae phan tit 1 zeras (line, column) Khai béo ma tran véi cic phan tho : rand (line, column) Khai bao ma tran vdi cdc phan tir nhan gid tri ngdu nhién 1.2.1 Tinh tean v6i vector va ma tran Nhiéu phép tinh 06 thé duge ap dung cho vector va ma tran. Vi dy: Phép nhan véi ky higu (*) duge ding dé tinh tich cua vector hofe ma tran. Vide chuyén vi ciia vector vA ma tran dugc thuc hién nha lénh transpose hoae ("). Néu vector, ma tran 1a phifc, ta ding thém lénh ctranspose hoac (*) dé tim gia tri phic lién hgp. Déi voi c&c gia tri thy, hai lénh trén cho ra két qua nhy nhau: >> two three * my matrix! ans = 6 18 6 1B Néu nhu mét trong cdc phép tinh * / * cAn duge thuc hién cho ting phan tit eda vector hoge ma tran, ta sé phai dat thém vao trudc ky higu cha phép tinh d6 ky hiéu (.). Phép tinh déi vdi cae bién vé huéng luén dude thyc hién cho ting phan ti mét: >> two_three ./ my matrix ans = 1.0000 0.5000 90,3333 0.2000 9.1667 0.1429 Phép tinh trén cing cé hiéu luc ca khi ma tran cé cdc phan tit phife: >> complex = (1+i 1-47 2 3) contp Le: 1.2 Vector vA ma tran 9 1.0000 + 1.0000i 1.0000 - 1.0000: 2.0000 3.0000 >> complex * complex ans 2.0000 5.0000 - 3.00001 8.0000 + 2.00001 11.0000 - 2.00001 >> complex .* complex ans = 0 + 2.00001 0 - 2.00004 4.0000 9.0000 Lénh diff(vector [n]) tinh vector sai phan. Bang lénh conv(vector_1, vector_2) ta chap hai vector vector_1 va vector_2. Néu hai vector cdn chap 6 phan tt la cac hé sé cha hai da thttc, két qua thu dude sé ting vdi céc hé sd sau khi nhan hai da thie dé véi nhau: >> diff (my_vector) ans = 1 Hai lénh inv va det ding ¢é nghich déo ma tran toan phuong va tinh dinh thtte cia ma tran. Gid tri riéng cba ma tran matrix duge tinh béi Iénh eig(matrix) va hang béi rank(matrix): + p>matrix = [1 2; 4 9] matrix = 12 4 - >> rank (matrix) ans = ra >> eig(matrix) ans = 0.1010 9.8990 >> det (matrix) ans = 1 10 1_Co sé vé MATLAB Tinh toan véi vector va ma tran oe Cac phép tinh vdi ting phan tit transpose (matrix) hodc matrix.’ Chuyén vi ma tran matrix— . : ctranspose (mairix) hoac matrix’ Chuayén vi ma tran matrix cé phan tit phic lign hgp inv (matrix) Dao ma tran 7 det (matrix) Tinh dinh thitc cua ma tran eig (matrix) Tinh cdc gid tri riéng caa ma tran rank (matrix) XAc dinh hang cha ma tran aiff (vector {n]) Tinh vector sai phan conv (vector_1, vector_2) Chap vector (nhan da thitc) 1.3 Cau tric va truéng 1.3.1 Cau trac Dé thuan tién cho viée quan l¥ va st dung,'ta c6 thé tap hgp nhiéu bién lai trong mét cdu trac. Trong dé méi mang c6 mét tén riéng (mot chudi ky ty string') dat giita hai d&u (’ ’) cd kém theo gia tri. cau tric dude tao nén bdi lénh struct(name_l’, value_l, ’name_2’, value_2, ...): >>my_structure = struct('data', my_matrix, ‘size’, [2 3]); Vige truy cap vao dif ligu duge thu hién véi défu cach (.): >>my_structure(2).data = my_matrix.*(-1); ? >> my_structure (2) .data(1,:) ans = 1.0000 0.5000 0.3333 Cau trite mée vong Cac cu tric dugng nhién ciing cé thé duge tao nén méc vong véi nhau. Vi du sai day minh hoa kh nang dé: Ta khai bao m@t edu trac c6 tén 1a componist véi mang dau tién cé tén 1A name, dude gan gia tri 14 chuéi ky tu ‘Johann Sebastian Bach’. Mét cu tric thit 2 c6 tén datum vdi 3 mang Day, Month va Year dé cat git ngay, thang va nam sinh. Sau d6 ta gan céu trac datum vao mang born cua cau tric componist: * Xem thém muc 2.2 vé van dé strings 1.3 Oflu trite va trutng uu >> componist = struct ('name','Johann Sebastian Bach') componist name: ‘Johann Sebastian Bach' >>datum.Day = 21; >>datum.Month = 'March'; >>datum.Year = 1685; >> componist .born = datum; >> componist componist = name: "Johann Sebastian Bach' born: [1x1 struct] Ta gan cho mang name cia cfu tric componist gid tri méi 1a chudi ky ty *Wolgang Amadeus Mozart’. Cac gia tri cha mang born duge gan truc tiép: >> componist (2).name = "Wolfgang Amadeus Mozart’; >> componist (2) .born.Day = 27; >> componist (2).born.Month = ‘January’; >> componist (2) .born.Year = 1756; >> componist (2) ans = name: ‘Wolfgang Amadeus Mozart! born: [1x1 struct] >> componist (2) .born ans = Day: 27 . Month: ‘January! Year: 1756 Cau tric componist lic nay mang dac diém cau true cia cc vector, va vi vay co thé xit ly cae phan tit cla cu tric dé nbu 1a cdc vector. Trongvi dy vita néu, cde vector dé chinh 1a hai mang name va born: >> componist componist = 1x2 struct array with fields: name born 12 1 Co sé vé MATLAB 1.3.2 Trutng Téng quat 4 mét mite cao hon cau tic 1a trudng (Cell Array). D6 chinh 1a cdc Array (mang nhiéu chiéu), chtta Cell (¢ bao) véi di ligu thude cde loai va kich c@ kh&c nhau. Ta c6 thé tgo ra Cell Array bang lénh ce11, hoac don gian bang cach ghép cae phan tit bén trong dau ngoae {}. Ting phn tit cua Cell Array c6 thé dude truy c4p nhu céc vector, ma tran thang thuéng hodc nhu cae Array nhiéu chiéu, chi cdn luu ¥ rang: Thay vi sit dung dau ngoac tron () ta sit dung dau ngoaec méc {}. Gia su ta tao mét Cell Array réng cé tén my_ce11 nhy sau: >>my_cell = cell (2,3) my cell = 0 tt i) ( is) 01 Bay gid ta lan lugt gan cho ttmg mang cia my_cell cdc gid tri sau day, trong d6 cé ca cdc phan tit cau tric componist (1) va componist (2) 6 muc 1.3.1: >>my_cell({1,1} = 'The first Cell (1,1) contains a text'; >>my_cell(1,2} = 10; >>my_cell{1,3} = [1 2; 3 41; >>my_cell{2,1) = componist (1); >>my_cell(2,2} = componist (2)5 >>my_cell(2,3) = date; Khi nhap tén cia Cell Array trén man hinh hién Jén dau di cau tric cha nd. Co thé biét ngi dung (hay gid tri) cia mét hay nhiéu Cell khi ta nhap céc chi so cha Cell: >>my_cell my_cell = {1x36 char } [ 10} (2x2 double] {Axl struct] {1x1 struct] *42-Bpr-2002! >> my_cell my cell = (1x36 char ] C 10] (2x2 double] {Axl struct} {ixl struct] "12-Apr-2002" >>my_cell{2,3} ans = 12-Apr-2002 1.4 Quan ly bién 13 >> my_cell{2,1:2} ans = name: ‘Johann Sebastian Bach! born: [1x1 struct] ans = name: ‘Wolfgang Amadeus Mozart! born: [1x1 struct} >>my_cell(2,2}.born,Month ans = January ‘C&u trae (Structure) va trudng (Cell Array) struct(nl’, vl’, 'n2’, 'v2, ...) Khai béo edu trie structure.name Truy cap vao phan tit name my_cell = (t Tao Cell Array réng cell(n) Tao nxn Cell Array cell(m, n) Tao m xn Cell Array 1.4 Quanly bién Kich cd cda vector hay ma tran duge xdc dinh béi \énh size(variable). Déi vdi vector cdn c6 thé ding lénb length(variable), va khi sit dyng lénh dé cho ma tran ta sé thu dude gid tri cla vector mang kich cd én nhat, Ngoai ra, mét bién cé thé c6 kich cf 1a 0, néu n6 da dude tao nén bai lenh'variable = []. >> length (my_matrix) ans = 3 >> size (my_matrix) ans = 2 3 Bang lénh who ta c6 thé kiém tra dugc moi bién dang tén tai trong Workspace nhé danh myc hign trén man hinh. Bing whos ta cdn biét thém cac thong tin vé kich cd va nhu cdu bé nhé cia bién. Bang lénh clear [variable_1 variable_2 ... | ta c6 thé x6a c6 chur dich mt s@ bién nhat dinh, néu chi goi clear ta sé xéa toan bé bién trong Workspace. 14 1_Co sé vé MATLAB >> whos Name bbe I Bytes Class ans 1x2 16 double array complex 2x2 64 double array (complex) componist 1x2 1320 struct array datum 1x1 398 struct array deep 1x6 48 double array increase pi) 40 double array long 1x8 64 double array longer 1x10 80 double array my_cell 2x3 2070 cell array my_matrix 243 48 double array my structure 1x2 456 struct array my_vector 1x3 24 double array two_three 2x3 48 double array Grand total is 276 elements using 4676 bytes Co thé st dung cita sé Workspace Browser (hinh 1.1, goi qua menu Show Workspace hoac bang lénh workspace) dé xem théng tin vé cac bién, cing c6 thé xem bing lénh help elmat. size (variable) length (variable) clear clear [variable_1 variable_2} who whos Quan ly bién Kich cé cia bién Chiéu dai cia vector, kich cd lén nhat trong ma tran X6a tat ca bién Chi x6a c&c bién trong ngoac [ } Danh muc céc bién trong Workspace Danh myc chi tiét cdc bién trong Workspace, c6 kém theo tén, kich cd, dung Iuigng choan b6 nhé va loai di liéu 1.5 Cac phép so sanh va phép tinh logic Cac phép tinh logic 06 thé duge sit dung cho tat 4 cae 86. Khi tihh, cae gid tri kha 0 ting vdi logic true va gid trj 0 ting véi logic false. Khi xuat gia tri lén man hinh ta sé chi thu duge cac 6.0 hode 1. MATLAB cung c&p day ¢a cdc phép so sanh va tinh logic VA (AND), HOAC (OR), PHU DINH (NOT) va HOAC LOAI TRU (exclusive OR), théng thudng biéu dién bang mét ky higu hay dau ngo&e don. Vi dy phép a VA b: a & b, hode and(a, b). Cae phép tinh duge thye hién theo trinh ty: Trude hét 1a cdc biéu 1.5 Cac phép so sanh va phép tinh logic 15 thitc toan, tiép theo 1a biéu thie logic. Tuy nhién, khi c6 cdm giac khéng chéc chan, ban doc nén ding cach viét véi dau ngoac don. >> (4>5-2 & 4<=5) | ~test ans = a Vi du tiép theo cung céip cho ta bang két qua khi st dung cac phép tinh logic AND, OR, exclusive OR, NOT, NAND va NOR déi véi hai sé nhij phan a va b. eae ae eee eee! eel ae Ne ae >> logtab = [a b a&b alb xor(a,b) ~a ~(aé&b) ~(alb)) logtab = 00 000 1 O28 01 0 i 0 0 a 1 0 i 0 a ef 7 a 0 0 0 0 : M6t lénh rat hitu fch 1A exist (variable) gitip kiém tra xem trong Workspace c6 tén tai bién hay ham nao tén 1a variable hay khong: Néu khéng, ta thu duge két qua lA 6 0, néu két gua 1a s6 khac 0, d6 chinh 1a sé néi lén ban chat cha variable. Vi dy: 1 n6i ring variable la bién trong Workspace, 2 néi ring variable lax mét MATLAB File trong thu myc MATLAB, 7 néi rang variable 1a mét thu muc' wy... C6 thé xem danh myc céc lénh nh help ops. Phép so sanh Phép tinh logic eq(a,b) bang = not(a,b) Negation (NOT) ~= ne(a,b) khae 7 and(a,b) AND < 1t(a,b) be hon ; or(a,b) OR <= le(a,b) — bé hon hoac bing xor(a,b) exclusive OR > gt(a,b) lénhon ' Sy ton tai? >= gela,b) lénhon hogc bang | exist(x) Tim su tén tai chax * C6 thé xem danh mye chi tiét 8 phén Help cla exist 16 1_Co sé vé MATLAB 1.6 R@ nhanh va vong lap 1.6.1 Lénh ré nhanh if va switch Bang cdc phép so sénh va logic 6 muc trudc, ta c6 thé dua ra dudge cae quyét dinh, phan biét cdc trudng hgp. Dé lam diéu d6, MATLAB cé cc lénh sau day: © if term command je1seif term command ...] [else command] end * switch term case term command [...] [otherwise command] end >>test = 5; >> if test<=2; a=2, elseif test<=5; a=5, else a=10, end; az = >> switch test case 2; a=2, case {3 4 5}; a=5, otherwise a=10, end; az 5 ‘Trong cA hai trudng hgp trén, cdc lénh con duge ngn cach béi dau () va déu (). Trong cac Scripts, thuang ta hay viét méi lénh con trong mét dong riéng. Ngoai ra, ta cing cé thé viét nhiéu c&u tric if va switch méc vong, dan xen Jan nhau. 1.6.2. Vong lap st dung for va while Bang vong lap ta cé thé thyc hién lap lai nhiéu lan mét sé lénh nhat dinh: « for variable = term command end © while term command end : Trong ca hai trudng hgp, lénh break déu c6 tac dung két thtic vong lap. >> for k: >>n fee >>while 1, n=n+1; m=n*2, if m>10, break; end; end m= 20, k*2, end; 4 m= 9 m= 16 1.6 Ré nhanh va vong lap 17 Trong vi du trén vong lap for da khong hé dude thyc hién vi pham vi 1:0 cia k la pham vi réng va diéu kién nging dude kiém tra truéc. Ngudc lai, cing trong vi dy dé vong lap while da dude thyc hién it nhat 1 lan, vi diéu kién ngiing chi duc kiém tra sau cdng. Ngoai ra, vong while cén hai lénh end dé két thiic. 1.6.3 Gian doan bing continue va break Hai lénh hitu ich r&t hay duge stt dung dé diéu khién chu trinh tinh toan la continue va break. Trong ving lap for hay while, khi goi continue ngay lap tite chu trinh tinh chuyén sang budc lp (iteration step) ké tiép, moi lenh chua thy hién cia vong lap (thuge vé buéc lap hign tai) sé bi bé qua. Lénh break con manh hon: Ngiing vong lap dang tinh. Lénh break c6 tae dung ca trong c&c c&u tric ré nhénh ding if, switch. Néu break duge stt dung ngoai vong for, while trong pham vi cia mét script file hay function cia MATLAB, khi ay script file va function sé bi ngimg tai vi tri cba break. Vi dy sau sé minh hoa céc ngi dung vita dé cap @@n trong myc nay véi ndi dung: Can kiém tra xem trong cac sé nguyén thuée khoang 3 ~ 7, s6 nado la sé nguyén t6. Viéc kiém tra dude thuc hién 6 mach vong bén ngoai. >> for m = 3:1:7, Posen eases if -mod(m,n) ~= 0, continue, end fprintf(' %2d is not a prime number!\n', m) break end %n if n == m1, fprintf('!! %2d is a prime number!\n', m) end % if end & m Mach vong trong 6 nhiém vy: Lan lugt chia sé cdn kiém tra m cho tit cd cae s6 trong khoang tit 2 dén (m-1), sau d6 kiém tra xem s6 du mod(m, n) cha phép chia c6 khae 0 hay khéng. Néu sé du bing 0, khi dy m chia hét cho n va lénh continue khéng duge goi, lénh fprint £ xuat thong bao lén man hinh. Néu so dut khéc 0, khi &y m khéng chia hét cho n va lénh continue cé higu lye, lénh fprintf va break bi bé qua dé chuyén sang kiém tra vong lap mdi vdi n lén hon. Néu m khéng chia hét cho cic 9 trong khoang ti 2 dén (m-1), ma chi chia hét cho 1 va ban than m, khi &y m la sé nguyén té. Viée kiém tra n == m-1 1a can thiét, vi néu m khéng phai la sé nguyén té, va vi vay vong lap phia trong da due réi bé bdi lénh break dé tiép tue cdc Iénh thuge ving lap phia ngoai. * Lenh fprintf duge gidi thigu ky hon 6 muc 2.3 Tiwana ve, 18) 18 1_Casé vé MATLAB MATLAB dua ra két qua trén man hinh nhu sau: is a prime number! is not a prime number! is a prime number! is not a prime number! is a prime number! YAO Bw Dé xem tat ca cac lénh tao kha nang diéu khién chu trinh tinh toan, ban doc hay goi help lang. Ré nhanh, vong lap va diéu khién chu trinh tinh if..,felseif...]lelse..],end Lénh if switch...,case...[otherwise..],end Lénh switch for variable = term , command , end Vong lap for while term command end Vong lap while continue Lap tic chuyén sang butée tiép theo cia ving lap break Lap tite két thc ving Kip 1.7. Cac Scripts va cac ham cia MATLAB 1.7.4 Cac Scripts cha MATLAB Bén canh kha nang nhap lénh tryc tigp, ta cé thé viét va c&t nhiéu chudi Iénh trong cdc scripts cua MATLAB dui dang file voi ky tt ASCH (n-file). Mat script dugc khai bao tén khéng cé dudi .m. Dé soan thio cac file dé ta cé thé sit dung trinh soan thao cia MATLAB bang cach goi menu File/New/M-File hoac File/Open. Ciing cé thé goi truc tiép nhé ntit nhan trén cita so MATLAB. Gia sit ban doc chia cai dat trinh soan thao dé, c6 thé sit dung bat ky trinh soan thao ASCII nao khac cing duge. Hinh 1.3 minh hoa vi dy file pwm.m, c6 nhigm vy tinh toan diéu ché dién Ap hinb sin. File pwm.m gitt vai trd cla mot ham chic nang, dudc mét m-file khae c6 tén 1a tutor8.m goi. Trong vi du trén ta cé thé thay rd phan thuyét minh (mo tA bang Idi) cac dong lénh déu duge cach ly bai dau %, nghia 1a: Moi ky tu nam bén phai dau % tho dén hét dong déu bi MATLAB bé qua. Vi mét déng lénh cé thé tré nén qua dai, ngudi stt dyng co thé xudng dong (chua két thtic) bang dau ... 1.7 Cac Scripts va cdc ham cla MATLAB 19 le ES Yow Tet Debug Breakpais Web. Yndow Heb Os eS|smeoclAn| O2/ 20 QG| um Function Veut=puatte,fe,a,0) $ Ramecion to compute @ sinusoidal-PUll voltage vavertor for TUTORS. 8 tx > Reterence frequency (£20). 4 te > Careiee frequency (fo>4). . Progres assuaes thet feant£, shere n is on integer number. 4 a > Moduiecion (Genel): Mag. Rectrence Mag, Carrier bot 3 Thee fee = stooruceyen rte at tect, Merength(e): cottiereceiangstite,t(1}): Hinh 1.3 Trinh soan thao cia MATLAB vdi vi dy file PWM.M 1.7.2 Cac ham cha MATLAB Mét dang dac biét cia m-files la cac ham cla MATLAB (cdc function). Khi goi mét function ta 6 thé chuyén giao dit ligu cho function hay nhan dit ligu do function dé tra lai, Ngo&i ra, m6t function cling cé thé duge cac function khac hay script goi, vA mét script ciing c6 thé duge cdc scripts goi. Cac bién trong pham vi mét function 1a bién local (cuc b6). Cac bién global (toan cue, c6 gia tri sit dung chung) duge dinh nghia béi lénh global variable... Lénh dinh nghia dé phai duge goi tryc tiép tix Command Windows cha MATLAB, hay tit mét script, va cing c6 thé dinh nghia trong pham vi mét function. Trong pham vi function ta cé thé sit dung hai bién nargin va nargout dé xéc dinh sé ludng dit ligu duge chuyén giao hay nhan tré lai. Ham trong vi du sau duge ding dé tinh gia tri trung binh, cat trong m-file nao d6 va cé dang nhu sau: function [arithm, geom] = average value (x) arithm = mean (x); % arithmetic average value geom = prod(x)*(1/length(x)); % geometric average value 20 1 Co sé vé MATLAB Bang viéc goi average_value(test) ta sé chi nhan duge dit ligu thi nhat, vi vay viée goi dé nhan day dui dit ligu cn sé duge thyc hign nhu sau: >> test 177 >> [A, G] =average_value (test) A = 4 Ge edie Néu mét MATLAB script hay mét MATLAB function lan dau tién duge goi, MATLAB sé dich ra ma ao (Pseudo-Code'), la ma sé duge kich hoat dé thyc hién nhiém vu dat ra cho script hay cla function. Néu vé sau khong cé su thay déi gi trong m-file, qua trinh dich sé khong x4y ra lan thit hai. Bang lénh clear functions ta cé thé xéa cudng bite c&c ham da dich, déng théi git nguyén cac m-files. Cac Scripts va céc ham % Dau cach phan thuyét minh véi lénh function [out, name (in, ...) Dinh nghia ham eda MATLAB nargin XAc dinh s6 lugng dit ligu vao nargout XAc dinh s6 lugng dé liéu ra clear function Xoa cc ham da dich 41.8 Tom tat ndi dung chuong 1 Nham giap ban doc hé thong héa duge néi dung, sau méi chuong sé c6 phan tom tat cdc van dé da dude giai quyét tai chutong 46. Cac van dé da duge tra ldi & chuong 1 la: 1. Lam thé nao dé khéi dong MATLAB ? Workspace la gi? Lam thé nao dé dinh nghia mét bién ? Cac quy dinh phai tuan theo khi dat tén bién ? Y nghia cua bién ans ? Lam thé nao dé the hién cdc phép tinh cong, tri, nhan, chia va lay thita ? Lam thé nao dé khai bao mt sé phttc ? Lam thé nao dé khai bao mét vector ? 9. Lam thé nao dé khai bao mét ma tran ? 10. Lam thé nao dé truy cap tdi tan ting phan tu cla vector hay ma tran ? or pew ‘cite! > C6 thé tao Pseude-Code bing lénh pcode, sau dé cAt duéi dang p-file 1.8 Tom tat ni dung chugng 1 21 . Nhiing lénh nao ¢6 tac dung tao ra: Ma tran véi moi phan ti Ja 1 hodc 0, ma tran ddn vi, ma tran ngdu nhién ? 12. Dau () diing true cdc dau cha phép toan cé tae dung gi khi tinh véi vector hodc vdi ma tran ? 13. Cac dac diém cha c&u tric struct 1a gi? 14. Lam thé nao dé khai bao mét struct ? 15. Lam thé nao dé truy cap vao mot struct ? 16. Lam thé nao dé hién thi cac bién trong Workspace ? 17. Lam thé nao 4é x6a cic bién ? 18. C6 nhiing phép so sanh gi trong MATLAB ? 19. C6 nhiing phép tinh logic nao trong MATLAB ? 20. Cé nhiing kha nang ré nhanh nao trong MATLAB ? 21. Cé nhig dang vong lap nao trong MATLAB ? 22, Su khéc nhau giita script va ham function trong MATLAB ? 23. Lam thé nao dé tao ra va sit dung mét function ? 24. Sit dung tién ich trg giép Help khi cdn tra ciiu mét lénh nhu thé nao? = 2 Xuat va nhap dif liéu trén man hinh Tat ca cac lénh gidi tl trong chudng nay cé tac dung diéu khién man hinh, phuc vu xuat va nhap dit ligu theo phugng thtic déi thoai vdi ngudi sit dung, cing nhu xudt va nhap khdu dit liéu. N6i dung quan trong thit hai 1a van dé biéu dién bing dé thi, cing nhu viée xu&t va nhap khdu dé hoa thuéc cac chudn (format) kh&c nhau. 2.4 Diéu khién xuat ra man hinh Vé mat ca phap, cdc lénh diéu khién xudt ra man hinh MATLAB khé gidng vdi cac lénh tudng tu cla UNIX. Ching trudc hét duge st dung vao muc dich kiém tra, phat hién léi chugng trinh, hay dé tim hiéu mét sé méi lién quan nhat dinh, Néu cn thye.hign vige xudt ra man hinh theo ting trang mét, ta c6 1énh more, Bang more on ta déng va more off ta ngit ché dé xudt ra theo ting trang, more thay déi trang thai va more(n) hién thi n dong cita mét trang. Viée diéu khién gidng nhu trong hé diéu hanh UNIX: Néu lugng xudt ra dai hon mét trang, khi ay phim Return cé tac dung nhich lén ting dong, phim tréng hién thi trang ké tiép va phim chi Q sé ngiing viéc xuat. Bang echo ta cé thé hién thi tat cd cde lénh d& dug thuc hién sau khi goi mét script hay mét function. Lénh echo on cé6 tac dung dong, echo off cé tac dung ngat ché do hién thi Iénh cita script. Lénh echo function on sé hién thi cac lénh (xem vi du sau day: sit dung ham average_value(x) 6 muc 1.7.2) do ham cé tén function goi, echo ho&e echo function sé chuyén man hinh sang trang thai khac. >> echo average value on >> [A, G] = average_value(1:2:7) arithm = mean (x); > arithmetic average value geom = prod(x)*(1/length(x)); % geometric average value —s 4 Ge 3.2011 Ddi khi, dé phuc vu céng tac luu trit va xit ly sau nay ta réit cdin cd? dif liéw da nhap hodc xudt tai Command Windows duéi dang File. Dé ghi tat ca dong 24 2 Xudt va nhap dif ligu trén man hinh thai nh4p / xuat (kh6ng ké dé hoa) qua ban phim vao File véi dinh dang ASCIT ta sit dung lénh diary(file’)'. Néu da tén tai File, cdc dong thai mdi sé duge ghi ndi tiép thém vao duéi. Lénh diary on kich hoat ghi, diary off nging va diary sé chuyén déi gitta hai ché d : C6 thé tam ngitng ché dé xudt man hinh bang |énh pause, ché do tam nguing dé sé bi hiy bé néu xéy ra dong tac nhan phim méi bat ky. Lénh pause(n) cé tac dung tam ngiing trong n gidy, pauses off vé hiéu héa tat ca cac lénh pause tiép theo va pause on lai cho phép pause cé tac dung tré Jai. Trong vi dy sau day, cit sau mdi ving lap b6 dém lai duige xudt ra man hinh va doi khoang thdi gian (tinh bang giay) ting vdi ndi dung bd dém. Cuéi cing ta thoat khéi trang thai tam ngitng bang mét dong thai ban phim. >> for i=1:2:6, disp(i), pause(i),end ,disp('Ende'),pause 1 i 5 Ende >> Ngoai ra con cé mét lénh rat hitu ich la clc (Clear Command Windows) c6 tac dung x6a tat cd céc nhap / xuat trén Command Windows va dua Cursor vé dong dau tién cia tia sé. Diéu khién xuat ra man hinh more Xuat timg trang mot ra man hinh echo Hién thi cdc lénh da goi trong Scripts (m-File) va Functions diary (‘file’) ‘Cat cdc thao tac xudt ra man hinh trong File c6 tén ‘file’ pause ‘Tam ngitng xudt ra man hinh cle X6a moi luu giit vé thao tac nhap / xuat ra man hinh 2.2 Di thoai cla MATLAB véi ngudi str dung Cac déi thoai véi MATLAB, edn thiét khi nhap / xuat vin ban (Text) va di ligu (Data), duge thuc hign nhé céc Iénh mé ta trong muc nay. Trude hét ta hay xem xét viée xu ly van ban trong MATLAB. * én cita File chudn 1a ‘diary’. Bang lénh get (0, ‘DiaryFile’) ta cé thé héi xem File ghi hign tai e6 tén gi 2.2 Déi thoai cla MATLAB véi ngudi sit dung 25 2.2.1 Van ban (Text) trong MATLAB Cae doan van ban (cdc chudi ky ty, Strings) thudng duge bao trong pham vi hai déu méc trén cao va cé thé dude gan cho cac bién theo kiéu: string = ’text’. Cae bién String duge c&t dudi dang vector va c6 thé tap hgp lai bang cach viét (text1’,text2’]. Néu mét Script c6 chudi ky ty vdi ngi dung kéo dai nhiéu dong, chudi ky tu dé phai duge két thtic sau méi dong, nhdm loai tri kha nang dau ngt dong ... duge MATLAB coi la mét phan tit cha chudi ky tu dé. >>text = ['This is',' ','a Text'] text = eee eee ene, >>whos text Name Size Bytes Class text 1x14 28 char array Grand total is 14 elements using 28 bytes 2.2.2 D6i thoai khi nhap van ban Viéc héi tim s6 liéu duge thuc hién bdi lénh variable = input (string). Chudi ky tu ’string’duge xudt ra man hinh va déng thdi gan cho bién cé tén ‘variable’. Néu trong dit li¢u hoi ta khong tim sé ligu ma tim chudi ky ty, khi ay lénh c6 dang string = input (string,’ s’ ) . Trong khi thuc hién lénh, c6 thé sit dung mét 86 ky hiéu dac biét nhu dau ng&t xudng dong \n, d&u moc trén cao ‘*! va gach nghiéng chéo \\*. Sau day la vi dy vé mét Script cé khtic déi thoai nhap van ban: price = input ({‘What does the exchange rate \n’, ‘look like today ? ae currency = input (’DEM\\EUR ? 7, st)s Sau khi goi Script va nhap sé ligu cha nim 2001, vi dy ta c6 thé nhan két qua nhu sau. What does the exchange rate look like today ? 1.93 DEM\EUR ? DEM ’ Khi thuc hign ta thu duge trén man hinh duy nhat mot du ® Khi thuc hién ta thu duge trén man hinh duy nhat mot dau \ 26 2 Xudt va nhap dif ligu trén man hinh 2.2.3 Xuat theo Khi xuat sé liéu hay chuéi ky tu ra man hinh ta déu c6 thé dat dinh dang cho viée xuat. Lénh disp (string) cé tac dung xuat chudi ky tu. Lénh nay co thé sii dung cho chuéi ky tg chita vain ban d6ng, trong dé cdc chit sé phai duge bién thanh chudi ky tu nhé lénh num2str (variable [, format]). DG vdi sé vector ta cé thé lap dinh dang xudt nhd‘ string = sprinté£ (string, variable) , sau dé xuat bang lénh disp. Khi stt dung hai lénh num2str vA sprintf, cl phap lap dinh dang vé co ban cing gidng nhu ngdn ngi lap trinh C (xem thém thong tin bang Iéph help sprint£). Tat cA cdc bién phai duge khai bao chung trong mét ma tran duy nhat, va méi cGt 14 mot bo tham sé xuat. Ta hay tiép tuc vi du 6 muc trudc: disp({’However ’,num2str(price, '%0.2f’), '’, currency, ‘ is already very expensive ! ']); oo. % Dong bd tréng pause % Tam ngung display = sprintf (‘Two Euros cost 82.2f $s. ', ... price*2, currency); disp (display) ; once_more = sprintf(‘%4d Euros cost %2.2f. \n', (3:5; (3:5) *price]); disp (once_more) ; Két qua thu duge la: However 1.93 DEM is already very expensive |! Two Euros cost 3.86 DEM. 3 Euros cost 5.79 DEM, 7 9 4 Euros cost 7.72 DEM. 5 Euros cost 9.65 DEM. Bén canh céc kha nang vila dugc gidi thigu, MATLAB con tao. diéu kién xay dung céc giao dign véi ngudi sit dung bang dé hoa (GUT'), mé ta 6 myc 2.9. D6i thoai khi nhap vin ban variable input (string) Héi tim s6 lieu cha bién string input (string, 's') Hdi tim chudi ky ty num2stxr (variable[,format]) — Bién mét sé thanh chudi ky tu disp (string) Xuat chudi ky ty ra man hinh string = sprint (string, variable) Tao dinh dang cho chudi ky ty ' GUI: Graphical User Interface 2.3 Nhap va xuat di ligu 27 Ky hiéu dac biét Dinh dang oo a2a So nguyén (vi du: 21) \n Neat xuéng dong \\ Gach nghiéng trai 46.3 ol ee dong (vi du: ae Dau méc don trén cao es Chudi ky ty 2.3 Nhap va xuat dir ligu 2.3.1. Cat vao hoac goi dit ligu tir Fille Tay su lua chon, c6 thé thong qua File dé nhap hodc xudt dit ligu dudi dang ma ASCII hoge ma nhi phan. Dé c&t hoc goi dit ligu ta ding mét trong hai lénh load file_name (variable_1 variable_2 ...] va save filename [variable_1 variable_2 ...}. Gid sk tén File da duge cat trong bién ky tu string, khi dy ta chi can viét ngdn gon load (string) vA save (string, (variable_1, variable_2 ...)). Néu sau load ta viét tén mt File khéng cé6 duéi (phan sau dau chém .), khi dy MATLAB sé chon mét File véi dinh dang di ligu theo ma nhj phan (cdc File e6 dudi MAT). Mot File MAT bao gid ciing c&t ddy di cac gia tri va tén cia bi Dé goi sé ligu 6 dang ma ASCII, ta phai viét tén day dd cha File, tte 1a phai cd ca phan dudi, Cac sé ligu thude cing mét dong phai duge viét cach nhau nhd phim trong hoc phim Tab (khéng ding dau phy). Mdi dong phai chtta nhiéu phan tit (duge phép chén ca thuyét minh). Khi goi (doc dit ligu), cde gid tri sé dude gan cho bién c6 tén trang véi tén cita File. >> test_vector = [0:0.1:10]'; % Column vector >> test_matrix = [test_vector cos(test_vector)]; % Matrix >> save test % Save into file test.mat >> clear % Clear Workspace >> load test % Load from file test.mat >> who % Display Workspace Your variables are: test_matrix test_vector Khi cin céit 6 dang ma ASCII ta sé phai bé sung vao déng lénh save thém khéa -ascii. Trong trudng hgp nay, tén cla cdc bién sé khéng duge cat kém theo va gia tri cla céc bién duge ghi tudn ty néi dudi nhau vao File. Do khong ct tén cua céc bién, sau nay khi goi ra, MATLAB sé khong cé kha nang phan logi cae gia tri theo bién nita. 28 2 Xuat va nhap dé ligu trén man hinh, >> save test.txt -ascii test_matrix % Save into file test.txt >> clear Clear Workspace >> load test.txt % Load from file test.txt >> who % Display Workspace ea your variables are: test Néu khi goi hodc cat ta khéng viét cu thé tén cac bién, khi ay MATLAB sé goi tat cd cdc bién di duge c&t trong MAT-File, hoac c&t vac MAT-File moi bién dang ton tai trong Workspace. 2.3.2 Cat 6 dinh dang vao File van ban Khi xudt mét File van ban ta cing c6 thé sit dung lénh fprintf véi ca phap ging nhu cia sprintf. Tuy vay, bing fprintf ta chi c6 thé xii ly sO thuc, dé xit ly sO phitc, ta phai chuyén sé sang thanh phan thuc va do riéng ré. Dé mé va déng mét File xudt, ta cé cac lénh id = fopen(file.extension, 'w') va fclose(id), trong d6 id phuc vu nhan dang File da mé. Gia sit File vi dy 6 hai mue 2.2.2 vA 2.2.3 c6 tén exchange.txt (véi ndi dung vé ty gid quy déi) , viée xut File dé sé nhu sau: >> exchange _id = fopen(’exchange.txt!,/w!); >> fprintf (exchange_id, '$4d Euros cost %2.2f.\n’, = [3:57 (3:5) *price]); >> felose (exchange_id); Dé xem théng tin chi tiét vé cac Iénh phue vy viée truy cap File ta sit dung lénh help iofun. Nhap va xuat khau dw liéu load file (variable... } Doc tii MAT-File save file (variable...) Cat vao MAT-File load file.extension (variable... } Doc tit ASCII-File save file.extension -ascii [variable...] Cat vio ASCII-File fprintf (f_id,string,variable) Ghi vao ASCII-File fLid= — fopen (file.extension,' w’ ) MG File fclose (fid) Dong File 2.4 Hé diéu hanh va quan ly File 29 2.4 Hé diéu hanh va quan ly File Thong thuéng, dé MATLAB tim duge cac Scripts hay dit liéu, bat budc céc Files lién quan phai nim tai thu myc (Folder, Directory) hién tai. Sau day ban doc sé lam quen véi mét s6 lénh dya trén co sd cc hé diéu hanh phé bién, cho phép tim thay File trong khu ring day dac céc thu_muc. Néu ta dat ddu cham than ! 6 ddu cia mét dong, khi &y MATLAB sé chuyén giao toan bé phn cén lai cia dong cho hé diéu hanh dudi dang c4c lénh. Mot lénh twong déi manh (nhung cing kha réc réi khi sit dung) 1A lénh eval (string). eval c6 tic dung kich hoat cac Iénh ma MATLAB da trao cho hé diéu hanh. Vi du sau day tao nén thu myc test_directory, gn cho bién cia trac (bign loai struct) directory tén cha thu myc va sau dé lai x6a thu muc dé di. >>mkdir ('test_directory') >> directory = dir ('test_direc*') directory = name: 'test_directory' date: '20-Apr-2002 14:36:16! 0 isdir: 1 BE ‘All changes take effect Immediate ee rine |) Sener E eae | eowmsaoises.| Oe arasmrneannes cunacrzy Ictarchinbucns ¢natiab) ; move Top J [Caetareninouens emataoyarves- simu Cy cterenimouens (malianyives-simu2 Move Uo |" — |Cyctarchimbuchs (matlab)arives-simut acne |CAMATLABR1 2iquangidrivesigui xc wartaoe Aqvangielectrc machinenransforme ‘Move Down |) CAMATLABR 1 2iquangielectric machinerytsynchronoy ————_ __ |Geawartaprtzquangtetectrc machinertsm in pows ‘verobeton|~ [Sjeauriagnttaumtonste machrenregeie | Hinh 2.1 Cita sé truy cdp thu muc (Path Browser) cia MATLAB “ Save Close Revert Default Ngoai ra, ban doc c6 thé di theo menu View / SetPath hay truc tiép goi pathtool tit Command Windows dé tdi duge cita s:’ truy cap thu muc Path 30 2 Xuait va nhap dit ligu trén man hinh Browser (hinh 2.1). Trong cita s6 dé, c6 thé nhan nut Add Folder dé tao thém thu muc méi, Dé xem chi tiét ban doc hay goi help general. Goi tir hé diéu hanh va quan ly File pwd Hién thj thu myc hién tai dir (...1 Hién thi néi dung cia thu muc [...] TS td Hién thi ndi dung cia thu mucl.... ced directory Chuyén thu muc mkdir directory Tao thy muc méi copyfile source destination Sao chép (copy) file delete file Xéa file ! commando Goi lénh ti hé digu hanh 2.5 Biéu dién bang dé hoa Khi khdi lugng dit ligu J6n, vigc xudt ra man hinh duéi dang sé sé ft c6 ¥ nghia. Viée biéu dién ching dudi dang 46 hoa tré nén quan trong va 1a déi tugng cia muc nay. Truéc hét ta dé cap dén céc lénh lién quan véi gan nhu moi qua trinh xuat ra man hinh duéi dang dé hoa, nhu céc lénh tao nén, truy cap vao méi trudng va vao ting phan ti cua dé hoa, vi du: téi truc hay viée dat tén va thi nguyén cho truc. Trong hai muc tiép theo 2.6, 2.7 ban doc sé lam quen vdi cdc kha nang tao dé thi 2 - 3 chiéu ti tap cdc dif liéu da cd, minh hoa qua vi du cy thé. Muc 2.8 gidi thiéu kha nang nhap / xudt va in cdc loai dé hoa. 2.5.1 Cita sé Figure - co s6 cua dé hoa MATLAB Hinh 2.2 Cita sé Figure cia RAAIAPD - Bebb. ellie Khuén khé cia moi thao tac xudt dé hoa trén nén MATLAB 1a Figure’. Cé thé tao-ra ctta sé nhu hinh 2.2 bang cach goi lénh figure va mdi Figure sé ty dong duge danh sé. >> figure >> gck ans = 1 * Figure: ¢6 nghia 1A “hinh“ 2.5 Biéu dién bang dé hoa 31 C6 thé goi mét Figure da co sé bing lénh figure (number). Sé cua Figure (thyc chat 14 handle chit khéng phai number) sé hién thi néu ta goi gcf (Get handle to Current Figure). Trong cac mit nhan nam duéi thanh menu ta cdn biét chite nang cia cae nuit sau: nit * mé trinh Property Editor (soan thao die tinh, hinh 2.4), nuit & cho phép ta viét Text vao hinh, nut 7 va “ cho phép ta vé thém cae nét c6 ho&e khéng co mii tén, © va ® kich hoat chic nang Zoom (dan, co hinh), cén ° sé giup ta xoay dé hoa, dac biét 14 dé hoa 3 chiéu. Bang Jénh subplot (row, column, counter), c6 thé chia déu mét Figure thanh nhiéu Subplots (dé hoa con) duge counter (bo dém) danh sé 6 phia trén bén trai. Néu viée danh sé chi céin mét chit sé, ching sé dude viét tudn tu khong can dau phay hay dau cach (hinh 2.5). C6 thé x6a néi dung ciia mét Figure bing lénh cl£ (clear current figure), va lénh delete figure(number) sé xéa chinh Figure. Tuong tu, lénh close(number) sé dong Figure mang sé number con Iénh close all sé déng tat cd cdc Figures dang mé. Root Figure axes | {Ulcontro!] [UImenu] [Uicontextmenu | image| [Light] [tine] [Patch] [Rectangle] [Surface] [Text Hinh 2.3 Céu tric phan cép cia mét déi tugng dé hoa Mét doi tugng dé hoa cé c&u tric phan c&ip duge mé ta 6 hinh’2.3. C6 thé xem dac diém cha mét Figure (handle FigureHandle) bing lénh get, véi lénh set! ta lai e6 thé lap dac diém cho Figure. get (FigureHandle,' FigureProperty’ ) set (FigureHandle,, ' FigureProperty’ , PropertyValue) Vigc lap trinh dé hoa trong MATLAB luén phy thugc vao déi tugng cy thé va vo cing phong phu. Mt céng cy lam nhe bét cng viée 1a trinh soan thdo dic tinh dé hoa (Property Editor) véi cita sé gidi thigu 6 hinh 2.4. 1 Lap (xac dinh) dac diém cho Figure: set (0, ‘ DefaultFigureProperty’ , PropertyValue) 32. 2 Xuiit va nhap di liéu trén man hinh Cae Ca Eres Senos) 6/0) ome | tue | Rensarng | nt | Bacigroun cor fORODOSOER acu bar [Datautagare mena wons ipa Figura copy shoes. a seins to apoiy a globa change o your igure and is contons bua copying ant change tomptata| Agpivirplate] estore naue 0K Cancel | __Aspiy_ | immeciae spp Fea Hinh 2.4 Cita sé’ Property Editor cia MATLAB Vi kha nang phuc vu xi ly dé hoa cla Property Editor kha phong phi, vust khuén khé cia muc nay, dé nghi ban doc tra citu chi tiét tinh nang va ¥ nghia cia ting muc, ting mat nhan d phan tro giup truc tuyén (Online Help). Téng quan vé dé hoa figure [ (number) ] Tao mdi (hay mé) Figure subplot (row, column, counter) Tao subplot get H6i s6 cla Figure hién tai colt Xéa ndi dung cia Figure get (Handle, ‘ Property’ ) Xem dac tinh cua Figure set (Handle, ‘Property’, Value) Lap dac tinh cho Figure delete (figurer (number) ) X6a Figure mang sé number close (number) Dong Figure mang sé number close all Dong tat ca Figure 2.5.2 Truc va dién ky ty cho truc Viéc phan chia thang bac cha true thudng duge MATLAB ty dong thyc hién. Tuy nbién, ta c6 thé phan chia thi céng trong trung hop hai chiéu (2 bang lénh axis ([x_min,x_max,y_min,y_max]) va trong trudng hgp ba chiéu (3-D) bang lénh axis ([x_min,x_max,y_min,y_max,z_min,z_max]). Lénh axis (‘auto’) sé trao quyén chia truc lai cho MATLAB, Lénh grid on sé tao ra mét Iwdi toa dé ting véi cach chia truc da xc dinh (muc 2.6.2 gidi thiéu thém vé cach thay déi luéi toa 44). Déi véi dé hoa 3-D ta cé thém lénh box on dé tao khung bao cho 3-D-Plot. 2.5 Biéu dién bing dé hoa 33. Dé dién ky ty vao mét dé hoa ta cé nhiéu kha nang khdc nhau: Dang xlabel (string), ylabel (string), zlabel (string) dé dién tén cho truc; dang title (string) dé dién tén cho Figure. Ngoai ra ta con c6 thé viét cdc ky tu lén cao, tut thap hay cac ky ty Hy Lap theo cach viet! MTX, vj dy ta viét lenh: ylabel(‘\alpha_a_u_t_o [m/s*2]’),tasé thu duge aulm/s*). Bang lénh legend (string_1, string_2,..., [position]) ta cé thé dién thém mt s6 Idi ghi cha vao dé hoa. Vi tri ciia cac 1éi ghi cht duge x4c dinh béi sé ghi trong [position], véi ¥ nghia: 1...4 sé dat 1di ghi chu vao 4 géc, 0 dat tu dong va -1 dt vao bén phai, canh dé hoa. Lénh text (x_value, y_value, string) cho phép ta dién mét doan van ban véi néi dung string vao toa dé bat ky x_value, y_value trong dé hoa. Dé c6 thé quan sdt ky hon mét mang nao dé trong dé hoa, ta sit dung lénh zoom on dé » dang chust cat va co dan mang dé (hoae nhé4n vao nuit tuong ting trong cita sé Figure, xem hinh 2.5). Ngoai ra, ctta sé Figure con cé mot vai mit cho phép dang chuét dién doan van ban, vé thém nét hodc mii tén, va md Property Editor. Cé thé xem thém théng tin chi tiét vé xudt dé hoa ra man hinh bing cAch goi help graph2d,help graph3d va help specgraph. Dé hoa: Cae truc axis ([x_min,x_max,y_min,y_max}) Chia true 2-D axis ((x_min,x_max,y_min,y_max,z_min,z_max]) Chia truc 3-D axis (‘auto’) Ty dng chia truc grid [on | off} Tao ludi toa do zoom [on | off} Cat va co din mang D6 hoa: Dién ky ty xlabel (string) Dién tén truc x ylabel (string) Dién tén truc y z2label (string) Dién tén trucz title (string) Dién tén Figure text (x_value, y_value, string) Dién van ban legend (string_1, string_2, ..., [position] ) Dién loi ghi chu 4 myc 2.2) khong 6 gia tri tai day 34 2 Xudt va nkedp dit ligu trén man hinh 2.6 6 hoa 2 chiéu (2-D Graphics) 2.6.1. Cac lénh vé (Plot Commands) Lénh plot (x_value,y_value...{,plotstyle]) vé dé thi néi cac diém cho bdi cap gia tri x_value, y_valwe. Thong thudng cdc diém do dude néi bdi mot nét lién. Néu ta nap luan phién nhiéu vector x/y, ta sé thu duge nhiéu nét néi doc 14p v6i nhau. Néu thiéu x_value, khi ay cac gid tri cia y_value sé duge vé theo thi ty chi s6 ciia ching. Néu y_value 1a cAc gia tri phitc, khi 4y dé thi vé véi hai truc do va truc thu. Lénh stars cling duge viét vi ci phap tudng tu nhung sé tao ra dé thi cé dang bac thang (xem cac tin hiéu trich m4u, vi dy d muc 8.4). Chuéi ky ty plotstyle cu tao béi hai thanh phan: Thanh phan tha nhat 1A mét chit cai dé chon mau va thanh phn thit hai 1a chudi ky higu dac trung cho dang ch&m / gach néi tao nén nét dé thi. Vi du: ‘ r--" sé tao nén dé thi dang nét ditt va cé6 mau dé (ding lénh help plot dé xem thém chi tiét). Mau Nét va diém k Den r DS - Nétlién + © Cham tron b Xanhlam m Dosim -- Nét ditt Chaim sao c Xam y Vang : Nétgachchém + Dé&ucéng g Xanhlacdy w Trang . Nét cham x Dau nhan Méi lan goi méi lénh plot, céc dé thj d& c6 trong Figure (hoac trong Subplot) hign tai sé bi x6a. Cé thé ngain chan diéu d6 bang cach goi lénh hold on sau lénh plot ddu tién, Dé hoa d hinh 2.5 duge tao nén bdi vi dy ké tiép. ee Tow aalya 2 7ia a0 Hinh 2.5 Dé hoa MATLAB cé chita hai Subplots 2.6 Dé hoa 2 chiéu (2-D Graphics) 35 >> figures >> subplot (121); >> plot ([-5:0.1:5], cos((-5:0.1:5)*pi), ‘k:'); >> hold on; >> fplot ('2*sin(x)", [-5 5], 'k--")3 >> subplot (122); >>t = (0:20) *0.9*pi; >> plot (cos(t), sinit)); Lénh fplot (function, range) trong vi du trén minh hoa kha nang vé true tiép cac ham tung minh (explicit). Ngoai ra, MATLAB cén tao diéu kién vé cdc ham khéng tudng minh (implicit) mét cach dé dang nhd lénh ezplot (function_1, {function_2, ] range). >> subplot (121); >> ezplot ('x*2 - y*2 -2')7 >> subplot (122); >> axis ((-0.15,0.25,-0.22,0.15])7 >> ezplot (‘sin(3*t) * cos{t) / (ttpi)', ... "sin(3*t) * sin(t) / (ttpi)', (0, 4*pil)i eyes ene ye asin(9 1) 2050) / (Wa), y 5in($4) sind) /sLes) e 2 : ‘ Bi, GOs Oo OOe TOT OIE 02-025 re Hinh 2.6 Ham implicit (bén trai) va ham explicit (bén phdi: dé thi cé tham s6) vé bing lénh ezplot Hai lénh semilogx va semilogy cing cé ci phap gidng nhu plot vdi diém khéc duy nhat: Hai true x va y duge chia thang logarithm. Lénh loglog c6 tac dung chia déng thii ca hai truc x va y theo thang logarithm. 36 2 Xuait va ahdp di ligu trén man hin Dé hoa: Cac lénh vé do hoa 2-D plot ((x_value, ]y_value... |, plotstyle}) Vé dé thitron stairs ((x_value, |y_value...[,plotstyle}) Vé dé thi bac thang loglog (x_value,y_value... (, plotstyle}) Vé hai truc logarithm semilogx (x_value,y_vaiue...(,plotstyle}) Vé true x logarithm semi logy (x_value,y_value...{,plotstyle)) Vé trucy logarithm fplot (function, range} Vé ham explicit ezplot (function (x,y) (,range]) ‘Vé ham implicit ezplot (function_1, [function_2,][,range}) Vé ham implicit c6 tham so hold [on | off] Bao vé cdc dé thi da vé 2.6.2 Vidu: Khau quan tinh bac nhdt PT, va khau ty lé-vi phan PD Sau day Ja mét vi du sé tao nén dé thj 6 hinh 2.7. Vi du tink ham dic tink tan sO cla khau quan tinh bac‘nhat PT, va khau ty 1é-vi phan PD vdi hing sé thdi gian T' trén mién anh Laplace, sau dé vé dé thj cha ham vita tinh duge. 1 PT: H(s)= 775) PD: H(s)=14sT ‘Truéc khi theo déi vi du, xin liu ¥ ban doc: Bang lénh set ta thay déi thang chia cia hai truce. Lénh gca (Get handle to Current Axis) truy cap truc tiép tdi truc cla titng Subplots dé thay déi tham sé ytick va yticklabel. Toan van doan Jénh sau day duge edt vao File 06 tén 18 Fig02_07.m, sau khi goi trong Command Windows ta thu duge dé thi 6 hinh 2.7. T = 0.04; % Time constant PT1 [s] omeg = logspace (0,3,100); % Vector frequency[rad/s] frequency response =(T*}*omegatl).*(-1); % Frequency response PTL amplitude_response =abs (frequency response); % Amplitude response phase_response = angle(frequency_response); % Phase response figure (3); % Make figure 3 oi % Clear all old plots subplot (121); % Subplot; Amplitude loglog (omega, amplitude_response, ‘b-'); hold on; loglog (omega, amplitude_response.*(-1), ‘r--'); %PD: invers grid on; title (‘Transfer Functions); xlabel ('\omega [rad s*~*1]"'); ylabel (‘Amplitude {dB]'}; ~ legend ('PT1-Element', 'PD-Element', 2); text (1/T, 0:03, '| Time Codstant'); axis ({1 le3 0.01 1001); % Visible range skala = -40:20:40 % Desired axis scale 2.6 Dé hoa 2 chiéu (2-D Graphics) 37 set (gca, 'ytick', 10.*(skala/20)); % Set axis scale (dB) set (gca, 'yticklabel', skala); % Set label subplot (122); % Subplot: Phase semilogx (omega, phase_response*180/pi, *b-'); hold on; - semilogx (omega, ~phase_response*180/pi, 'r--'); & PD: invers grid on; xlabel ('\omega [rad s*-*1]"); ylabel (‘Phase [Degree]'); axis ({1 1e3 -90 901); % Visible range skala = -90:30:90; % Desired axis scale set (gca, 'ytick', skala); % Set axis. scale (Degree) set (gca, 'yticklabel', skala); * Set label Transfer Functions 90 Sa Hinh 2.7 Vi du vé diic tinh tan sicua khéu PTI (nét lién) vé khau PD (née ditt) Ban doc cAn biét: Ham diac tinh tan sé con cé thé duge tinh va biéu dién nha hai lénh bode va t£ (chugng 3). ee ee >>pd = tf ((0.04 1}, [1]); >>bode (ptl,'b-',pd, 'r--"} Nhé lénh t¢ ta cé thé tao nén ham truyén dat duéi dang phan thttc (c6 da thitc mau va tit sé). Sau d6, lénh bode ghip ta vé dé thi BODE (hinh 2.8: nia trén la dé thi bién, nta dudi 1A 46 thi pha logarithm). 38 2 Xudt va nhap dé ligu wen man hich Hinh 2.8 Dé thi BODE 2.7 Dé hoa 3 chiéu (3-D Graphics} Dé bidu dién, minh hea eae quan hé nhidu chidu ta thudng sit dung dé hoa . Mue nay mé ta m§t s6 lénh co ban phue vu muye dich dé, Riéng cae 1onb ky ty va chia thang cho truc hoan ton gidng véi dé hoa 2-D. 2.7.1 Cac lénh Plots Hinh 2.9 Dé hoa 3-D v2 bang Wah plots Lénh plot 3 o6 tac dung tuong ty nhu lénh plot, diem khac duy nhat la plot3 cé thim vector sé ligu thi ba danh cho trucz. Vi du ta cd thé tao duge dé hos nhu é hinh 2.9 khi goi udi lénh sau day: >>phi = (0:100) / 100*2*p4; >> plot3(sin(2*phi), cos "pty: 2.7 Dé hoa 8 chiéu (3-D Graphics) Dé biéu dién cdc ham 2 chiéu duédi dang mat trong khéng gian ta sit dung lénh surf (x_value,y_value,z_value [, eolor]}). Néu x_value, y_value, z_value la cac ma t1 6 sd hang va sé ct giéng nhau, khi dy cac diém cia dé hoa sé duge vé va ni nn thanh mat. Néu céc diém c6 mét khodng cach déu din vé phia hai truc x va y, khi dy value va y_value 06 thé chi la vector. Trong trudng hgp nay, céc gid tri x_value duge chuan theo edt va. y_value chudn theo hang ciia ma tran z_value. Hai lénh mesh va waterfall c6 ct phap giéng nhu surf, nhung Iai tao ra mat liéi khong dién ddy-va dé hoa kiéu thac nude. Nguge lai, contour lai vé nén cae dudng “dang mic“ (duéng ni cdc diém cé cing z_value). Ngoai ra ta cdn c6 thé thém mét ma tran color dé xac dinh mau cho dé hoa. Méi phan ti cua color tng vi mét phan tit cla z_value. Cac gid tri mau sé dude su dung trong mOt bang mau, va ta co thé thay déi bang dé nhd lénh colormap (name). Néu khéng khai béo ma tran mau, MATLAB sé ty déng gan color = z_value. Dai mau c6 thé duge co dan thang nh Iénh caxis (color_min, color_max). Ban doc cé thé tim hiéu ky hon vé céc bang mu cé sin cia MATLAB bing c&ch goi help graph3d. 2.7.2 Phéi canh (Perspective) trong dé hoa 3-D C6 thé dang lénh view (horizontal, vertical) dé phéi canh cho dé hoa 3 chiéu bang cach khai céc géc theo phudng nam ngang (horizontal) va phuong thang diing (vertical) tinh bing a6 (°, Degree). Géc chudn cho truéc 1a (-37.5", 30°). Ta c6 thé quan sat céc kha n&ng biéu dién khdc nhau minh hoa é hinh 2.10. Ngoai ra, cling c6 thé tao dung hay thay déi phéi canh bang cach nhay va kéo tha chuét, sau khi dé-goi lénh rotate3d. anh 2.7.3 Vi du vé dé hga 3-D cé phi Trong vi du sau day, lénh meshgrid cé tac dung tqo nén hai ma tran X va Y tit hai vector x va y, c6 hang va cét ting véi x va y. TY dé MATLAB tinh duge ma tran Z. Toan b6 vf du bao gém chuéi lénh (c&t duéi dang File c6 ten Fig02_10.m) sau day (hinh 2.10): = 0:0.05:2; y = -1:0.2:17 x " (X,¥] = meshgrid(x, y); %Produce matrix over the range of x, y Z = (¥+1).* cos(2*pi*X.*2) + (¥-1).* sin(2*pi*x.*2) / 5; figure 40 2 Xudt va nhap dit héu trén man binh subplot (221); surf (X, Y, 2)7 view (-40, 30); title ("surf (X, ¥, Z); view (-40, 30);')7 subplot (222); mesh (X, Y, 2)7 view (-20, 30); title (‘mesh (x, ¥, 2); wiew (-20, 30); ')7 xlabel (‘grid off; box oni'); grid off; box on; subplot (223); waterfall (X, Y, 2); view (-20, 10); title (‘waterfall (X, Y, Z); view (-20, 10);")7 subplot (224); contour (X, Y, 2+ title (‘contour (X, Y¥, Zi"); ‘surf (X, Y, mesh (X, Y, 2); view (-20, 30); Sih rh x seth i se Wo grid off; box on; contour (X, Y, Z); Hinh 2.10 Vi du vé cdc phuong phdp biéu dién khée nhau adi vdi dit ligu 3-D 2.8 Nhap, xudt va in dé hoa 41 Dé hoa 3-D [X,Y] =meshgrid (x_vector, y_vector) plot3 (x_value,y_value,z_value. ..[, plotstyle1) surf (x_value,y_value,z_value...(, color)) mesh (x_value, y_value,z_value...[, color]) waterfali (x_value,y_value,z_value contour (x_value, y_value,z_value. box [on | off) rotate3d [on | off] view (horizontal, vertical) zlabel (string) Dat mau colormap (name) caxis (color_min, color_max) 2.8 Nhap, xuat va in dé hoa Ma tran toa d6 Vé 3-D (diém / nét) Vé 3-D (mat) Vé 3-D (luéi) Vé 3-D (thac nuéc) Vé 2-D (nét ding mt) Déng / ngt box Tao phéi canh nhi Mouse Dat géc phéi canh Dién ky tu cho trucz Chon mdu Co dan thang mau Néu cdn phai gin mot File dé hoa ¢6 sfin (vi dy: File anh) vao khuén hinh cla Figure, ta cé thé st dung hai lénh variable image (variable) . SirToe he Gok Yew Insat Todt Wed Heb Josaerarsipas = mi Hinh 2.11 File dnh dite gan vao khu6n hinh ctia Figure = imread (file, fmt) va 42 2 Xudt va nh4p dit ligu trén man hinh Bang lénh imread ta gan File dé hoa véi dinh dang fmt cho bién variable. Néu variable nhan hinh anh chi bao gm gam mau xam, variable sé 1a mét bién 2 chiéu, Néu dé la anh mau RGB, variable sé 1A mdt mang (Array) 3 chiéu. Dinh dang ctia dé hoa duge khai bao bdi fmt!. Lénh image (variable) sé xuat dé hoa méi gan cho variable ra man hinh Figure. Theo cach vita mé ta, nhiing dong lénh sau day sé tao ra mét Figure (hinh 2.11) ¢6 chtfa anh vdi dinh dang Jpg cha Truong dai hoc Bach Khoa Ha N6i hanoi_uni.jpg. >> example = imread('hanoi_uni.jpg', 'jpeg'): >> image (example) Dé hoa Figure cla MATLAB cing c6 thé duge xudt sang cac dinh dang khac. Lénh print -fnumber sé in Figure mang s6 number ra may in. Lénh print -fnumber option file sé xu&t Figure thanh File véi cdc dinh dang dé hoa khac. Vi du: bmp (Windows bitmap), emf (Enhanced metafile), eps (EPS level 1), 3pg (JPEG image), pcx (Paintbrush 24-bit) hay tit (TIFF image, compressed). Dé biét chi tiét ban doc hay goilénh heip print. Dé minh hoa, sau khi da tao ra duge dé hoa Figurel phu hinh 2.11, lic nay c6 thé viét -fnumber = -£1, ban doc hay lan lugt thtt chudi lénh sau day: >> print -£1; % Print to standard printer >>print -f1 -dmeta 'picture'; % Convert to picture.emf >>print -f1 -depsc 'picture'; % Convert to picture.eps Néu can phai luu lai dé sau nay xit ly, ban doc c6 thé cat cdc dé hoa da thu dude thanh File véi dinh dang fig cha MATLAB. Dé c&t, hoac ta di theo menu File / Save as, hoaec goi lénh saveas (handle, ' file‘ {,format|). Lénh saveas cat handle (Figure hién tai, cé thé ding gcf dé héi) thanh tép c6 tén file vdi mét trong cac dinh dang: ’£ig’ (File nhi phan), 'n’ (gém mot File fig va mot File Script, la File s® goi File £ig). Ngoai ra, o6 thé ding lénh print dé ct voi cdc dinh dang khac nhu da mé ta 6 trén. Dé hoa: Nhap, xuat va in print -fnumber In dé hoa ra may in print -fnumber -dfmt file Cat dé hga ra file véi dinh dang fmt saveas (handle, ‘file,’ fig’) Cat dé hoa dudi dinh dang MATLAB variable = imread (file, fmt) Gan cho variable dé hoa cat duéi dinh dang fit trong file image (variable) Xuat 46 hoa thuéc variable ra man binh inh dang: bmp’ Windows Bitmap, 'ico’ Windows Icon Resources, ’jpg’ hoftc "jpeg’ Joint Photographic Expert Group, ’pex’ Windows Paintbrush, ‘tif’ hodc:'tiff’ Tagged Image File Format. 2.9-Gitio dién dé hoa 43 2.9 Giao dién dé hoa Dé tién dung va thoai mai, ta c6 thé tao nén mot giao dién dé hoa’ (GUI) gitta ngudi s¥ dung va MATLAB. Giao dién dé 1a mét dé hoa giao luu tich cuc (interactive), duge xay dyng tuong tu nhu mét hop déi thoai (Diaglog Box). ‘Trong giao dién dé, ta cé thé xuat di liéu dudi ca hai dang: Van ban va dé hoa. Dé tao GUI, hoac ta tao theo phusng thitc tha céng, hoac ta tan dung cdc céng cu dé hoa do MATLAB cung cap. Muc 2.9 sé gidi thiéu ca hai phuong thitc. Tuy nhién, phan trd gitip tét nh&t cho chi dé tao GUI van 1a cuén sé tay vdi ndi dung v6 cling phong phui va chi tiét, dugc céip kém theo dia CD cai MATLAB. 2.9.1. Layout (dign mao) cla GUI Dé tao nén hay xit ly Layout cia GUI, ta vao lénh guide dé goi trinh soan thao GUIDE va thu duge mét Layout réng nhu hinh 2.12. Br fle EG Layok Took Hep oem ealee dela i ~ fe lof: [ele telat (slele |__| Hinh 2.12 Trinh GUIDE mé ctta sé soan thdo GUI, bat dau béng mét Layout réng * Graphical User Interface 44 2 Xudt va nhap dit ligu trén man hinh Tuy nhién, ta sé quay tré lai vi guide sau, vi chi khi dé ta mdi thyc su hiéu rd: guide da lam thay cho ta nhitng viéc phién toai nhu thé nao. Cho dén nay ta di lAm quen véi mét sé lénh nhu input, disp hay fprintf, phuc vu viéc nhap / xudt ky tu va sé ligu lén MATLAB Command Windows. Viéc tao GUI chinh 1A nhim tao nén mét cong cy dé hoa, phuc vy nhap / xu&t mot cach tryc giac, rat thuan tién. Hon thé nia, ta cdn c6 thé ding GUI dé giam sat cac qua trinh, hién thi c&c dc tinh ela déi tugng. 2.9.2. Nhap va xuat ky ty, s6 ligu ra GUI Ta hay thit goi chudi cdc lénh sau day véi tae dung nhap gid tri nhiét 49 do bang d6 Fahrenheit, sau d6 quy déi tuong duong sang d6 C (Celsius). >> f= input('Enter temperature (degrees K): been gt cee "Saas Vas >>fprintf(1, "Temperature (degrees C) is: %g\n', ¢)i ve Ba dng lénh trén day da thyc h * Nhap gid tri déu vao cac thao tac © Thy hién tinh quy déi tugng duong * Xudt gid tri quy déi ra man hinh. Vay ta hay thit tim cach cai déng lénh trén, sao cho ching thuc hién trong khuén khé cua mét khung dé hoa nao dé. Tao khung hinh déu tién Dé tao ra hai khung hinh chit nhat trong cia so Figure hién tai’ vdi mau nén xdm, ban doc hay ln lugt vao chuéi lénh sau day. set(gcf, 'DefaultUicontrolUnit', "Normalized') framel_ = uicontrol(gef, ‘Style’, ‘Frame’, "Position', [0.1 0.1 0.8 0.3]); frame2_ = uicontrol (gcf, "Style', ‘Frame’, ‘Position’, [0.1 0.6 set (framel_, 'BackgroundColor', {0.50 0.50 0.501); set (frame2_, 'BackgroundColor', [0.50 0.50 0.50}); " Néu hién tai khong cé Figure nao dang duge mé, MATLAB sé tu déng tao Figure méi 2.9 Giao dién dé hoa 45 Hai khung (Frames) dé ¢6 géc tréi phia dudi dat d hai toa dg (0.1 0.1) va (0.1 0.6), cling c6 chiéu cao 0.3 don vi va bé rong 1A 0.8 don vj. Tai day can phai liu ¥ ban doc: Don vi duge tinh bang % cla kich cd ngoai cata Figure. Vay ta co thé dién dat lai cho dé hiéu nhu sau: © Khung thir nhat 06 géc trai phia dudi tai diém 6 toa dé ting voi 10% chiéu ngang va 10% chiéu cao cla khung ngoai Figure. © Khung thié hai c6 géc trai phia dudi tai diém c6 toa dé ting voi 10% chiéu ngang va 60% chiéu cao cla khung ngoai Figure. ¢ Ca hai khung cé chiéu cao bang 30% chiéu cao, va bé ngang bing 80% bé ngang cia khung ngoai Figure. Ding Iénh edit va text dé nhap /xuat ky ty va 86 ligu Trén day ta da sti dung lénh uicontro!l dé tao va xae dinh vi tri eda hai khung hinh. Doan lénh sau day sit dyng wicontrol dé vist chudi ky te “Fahrenheit® (chuéi Text) lén khung bén trén. text_f_ = uicontrol(gcf, 'style', 'Text', 'string', ‘Fahrenheit: -', ‘position’, 10.3 0.7 0.2 0.05), 'HorizontalAlignment', 'Left'); Chui ky tu “Fahrenheit* duge dit vao dung vj tri dén trai cha 0 cé Position ghi trong doan chuong trinh trén. Doan sau day sit dung Edit dé viét chudi ky tu “68.0" vac vi tri bén canh ca “Fahrenheit. Chudi ky tu dé c6 vi tri dén phai trong 6 (Position Box). edit_f£_ = uicontrol(gcf, "style', 'Edit', "string', '68.0', ‘position’, [0.6 0.7 0.1 0.05], 'HorizontalAlignment', ‘Right’, "Callback", 'fe_calc' ); Do su dung Edit, chudi ky ty “68.0" 1a chudi c6 thé viét lai dude (editable) truc tiép trén GUI. Sau khi nhén nut (Enterl, gid tri mdi viét lai duge tiép nhan va MATLAB sé goi lénh viét trong phan Callback; fc_calc. Cudi cing, ta con phai dang uicontrol dé tao ra hai ch ky tu “Celsius* va “20.0% trong khung bén dudi. i Text, hién thi text_cl_ = vicontrol(gef, ‘style’, ‘Text', 'string', ‘Celsius: ', 46 _ _ 2 Xuat va nap dit lidu én man hinh ‘Position’, (0.3 0.3 0.2 0.05), + ‘HorizontalAlignmenct’, "Left')> text ¢2_ = uicontrol{gct, ‘style’, Text", *String', *20.0', ‘Position’, (0.6 0.3 9.1 0,05], ‘HorizontalAlignment', ‘Right'); Sau khi da lan lugt vao tilt ci ede chudi lénh trén ta sé thu duge két qua nhu hinh 2.18. Dé thudn ign, ban doc nén viet cde Iénh dé trong mdt Script (a- File), vi du: Fig02_13.n. . Figure No. 1 Fle Edt View Inset Tools Widow Help . Hinh 2.18 Vidy GUI phue vu tinh quy toi tis Fahrenheit (F) sang Celsius (°C) Ty d6ng cap nhat gia tri Jen GUI Dé hoan thién vi dy GUI 6 hinh 2.13, ta cdn phai thue hi¢n chuvag trinh vdi nhigém vy tinh quy déi tix °K sang °C va tu ding dién két qua tinh vao 6 bén canh 6 mang ky-ty “Celsivs“, Doan chuong trinh phuc va vao muc dich “Callback” (hoan tra gid tri) dé duge eat dudi tin fe_calem 2.9 Ciao dign dé hoa. 47 £ = getiedit_f_, 'String'); f = str2num(£)7 c= (f = 32)*5/9; © = numastr(c)7 set (text_c2_, 'String', ¢); Doan Script trén da nhan gia trj do Iénh uicontrol ‘Edit’ dec vao dudi dang String va sau dé lan lugt: ¢ — bién déi ty String sang dang sé (lénh str2num), ¢ tinh quy déi tit nhiét da Fahrenheit sang Celsius, ¢ bién déi tu sé sang String (iénh num2str) va ¢ xuat két qua dudi dang String ra GUI nhé text_c2_. 2.9.3 Nhap sé liéu tu thanh trugt (Slider) Ngoai cach nhap sé ligu tu ban phim, ta cé thé nhap s6 ligu tix mot thanh trugt. Ban doc hay hinh dung ra vai trd cla mét bién trd, thudng duge sit dung dé (vi dy) thay déi gid trj dat (gi trj chi dao) cha mét vong diéu chink tugng tu. Chu y; MATLAB chi hé trg viée xdy dung c&c Slider thea phugng nam ngang (horizontal) chit khong hé trg tao Slider theo phuong thang ding (vertical). Dé tao Slider (hinh 2.14), ban doc hay nhap chudi lénh: Slider_f_ = uicontrol (gcf, ‘style’, ‘slider', ‘int, 32.0, "Max", 212.0, ‘value', 68.0, ‘position’, [0.60.8 0.2 0.05], ‘callback’, 'fc_slider_£; fc_cale'); Vi du trén cho thay: Callback cé6 thé goi mét chudi cdc Iénh MATLAB, viét cach bdi dau cham than hofe dau phay. Chudi Cal lback goi fe_slider_f'm: £ = getislider_€_, 'Value'); £ = numdstr(f)7 set(edit_f_, 'String', f); véi tac dung nhap gia tri nhiét d6 git tai ‘value’ cia slider_f_f, vao vi tri bén canh 6 ky ty “Fahrenheit. Sau d6, Callback goi tiép fe_cale.m dé tinh quy déi gia tri nhiét 46 va gan vao vi tri canh 6 ky tu “Celsius". 48 2 Xudt va nhap dit ligu tron man hinh Tuy nhién, dé 6 thé cap nhat duge gid tri mdi, do ngudi sz dung trugt Slider gay nen, ta phai thay déi lai chudi lénh Callback cha Edit uicontxoi nhut sau: set(edit_f£, ... ‘Caliback', ‘fe edit fe_cale’); Trong a6, fo_edit_fim: f = get(edit_f_, ‘String'); £ = str2aum(Z)7 set (slider f_, 'Value’, f); c6 nhiém vu cap nhat gia tri gilt tai /Value’ cha slider ££, di sau do fc_eale,m lam nét phn viée edn Ig: Tinh quy ddi va gan vao vj tri canh 6 ky ty “Colsi Ta day tré di, ca hai khung (Frames) cita GUI hogt dong hoan toan déng bd voi nhaw. By coe ple Etsy” freer Hinh 2.14 Quy doi tit Fahrenheit ('F) sang Celsius CC), nhGp gid tri béng thanh trugt (Slider) 2.9 Giao dign dé hoa 49 2.9.4 Nhap difligu tay chon (Popup Menu, List Box, Radio Button and Check Box) Ngoai kha nang nhap di liéu cd dinh theo kiéu ky ty (String) hay kiéu sé, ta hoan toan cé thé thuc hién viée nhap tdy chon ti mét danh muc nao do. Dé minh hga, ta tam théi rdi bd GUI dé quay vé véi Command Windows va thuc hién chudi lénh sau day: f = input (‘Enter temperature (degrees F): ‘); raf + 459.7; Cia (t 32) 8 5 19; k = c + 273.15; choise = input({/Enter 1 for Rankine,’, * 2 for Celsius,’, . ‘3 for Kelvin: *¢ Vd: if choise == fprintf£(1, ' Temperature (degrees R) is: %g\n', x); elseif choise == 2 fprintf(1, ‘ Temperature (degrees C) is: %g\n’, c); elseif choise == 3 fprintf(1, ’ Temperature (degrees K) is: %g\n’, k); end Gia st ban doc c&t chudi lénh dé trong mét File cé tén 1a test.m véi gia tri nh4p cla nhiét d6 c6 don vj la °F (46 Fahrenheit), gid tri xudt lén man hinh c6 thé duge biéu dién véi ddn vi °R (46 Rankine), °C (dé Celsius) hodc °K (dé Kelvin). Khi goi test.m ta thu duge két qua: >> test Enter temperature (degrees F): 26 Enter 1 for Rankine, 2 for Celsius, 3 for Kelvin: 1 Temperature (degrees R) is: 485.7 ‘Trong vi du trén: Khi dugc hai ta da chon nhiét do ddu vao 1a 26°F, va chon dich quy déi 1a °R. Tuy nhién, cng cu GUI cla MATLAB cho phép ta thyc hién su lyva chon cach nh4p di liéu vao mét cach thuén lgi hon thé. Tiép tuc vi du tinh quy déi va xudt gid tri nhiét 46, muc nay gidi thiéu vdi ban dgc bén phugng an nhap tay chon sau day: * Phuong 4n menu (Popup Menu). * Phuong an hép danh muc (List Box). * Phuong an mit chon (Radio Button) © Phuong an hép héi dp (Check Box). 50 : 2 Xuat va nhap dv ligu trén min hink Phuong an Popup Menu . Ta hay xa bd ky ty “Celsius* trong lénh text_c1__va thay vao dé kha nang lua chon theo Popup Menu (hinh 2.15) nhut sau delete (text_cl_); uicontrol (gi ‘style’, *Popupmertu', ‘string’, ‘Rankine |Celsiusikelvin’, 'value', Be ‘position’, {0.3.9.3 0.2 0.05), ‘Callback’, 'fc_popup_c; fe_cale2'); ToL f-[oTx] Ele Edi View neat Tools finda Hep Hinh 2.15 Quy déi te Fahrenheit CR) sang dan vj tty chon: Phutong én Popup Menu Hinh 2.15 14 két qua thu duge sau khi ta bé xung chudi lénh trén. Khi kfch chudt vaio Popup Menu, 06 ba kha ning hta chon sé xudit hién, tidp tue nhay chudt vito mét trong ba kha ning d6, Popup Menu s0 bién mat chi edn lai don vi duge chon. Khir ding chudt kéo thanh trugt 6 Frame phia trén, ta sé c6 git tri quy déi sang don vi duge chon hién thi é phia dudi. Trong doan chuang trinh trén ban doc hay luu gia tri dat sin la 2. Khi Callback goi fe_popup_e. §: Then chét la ‘Value! vai 2.9 Giao dién dé hoa 51 choise = get (popup_c_, ‘Value'); gia tri cla bién choise duge dua tdi ‘Value’. Sau dé Callback goi tiép fe_calc2.m dé xem k&t qua chon dude cat trong choise. £ = get(edit_f_, 'String'); f£ = str2num(f); r= £ + 459.7; C= (fc o2)2 5 / 07 k = + 273.15; if choise elseif choise = elseif choise end Se ke t = num2str(t); set (text_c2_, 'String', t); Cén luu ¥ rang, dé dat dugc két qua nhu hinh 2.15, ta cén phai bao cho Edit va Slider uicontrols biét dé sit dung fe_cale2.m (trutéc kia hai Iénh a6 dang fe_cale.m) bing cach bé sung thém cdc dong sau: set (edit_f, "Callback', 'fc_edit_f; fc_calc2'); set (slider f, ... ‘Callback’, 'fc_slider_f; fc_calc2'); Chi _¥: Bang c4ch thay ‘Popupmenu’ uicontrol béi ‘Listbox’ uicontrol ban doc sé cé duge phuong an List Box (hép danh myc). Diém khac duy nbét 1a; Néu sau khi chon, Popup Menu chi chita mét phan tit, thi List Box cé thé chita déng thdi trong danh muc nhiéu phan ti hon, duy nhat phy thudc vao chiéu cao tai vi tri (‘ Position’ property). Phuong an Radio Button (nut chon) Ta hay ding lénh delete (popup_c_) dé x6a uicontrol tao Popup Menu “RankinelCelsius/Kelvin* va thém vao dé ba uicontrol tao ba mut chon thit nguyén nhiét d6 sau day: delete (popup_c_); strings = ['Rankine'; 'Celsius'; 'Kelvine']; show = [ 0 fi 1 7 0 lt ys (3 : 2 7 1 1*0.075 + 0.075; 52 2 Nudt va phép di ligu trén min hinh, for a=1:3 radio_¢ (i) = uviceatrol(gcf, "stylet, ‘Radiobutton’ , ‘string’, strings ti), 'Value', show(il, ‘position’, [0.3 ysi) 0.2 0.051, ‘Callback’, 'Ec_radie_c; fe_cale2'}; end Ket qua thu dude sé nhu hinh 2.16 sau day. Néu ta ding chudt nhay vao mét trong ba mit, MATLAB sé didn gia tri vao nut d6, sau dé goi chudi Callback yéi cae lénh da dinh, CAn luu § JA ta chi sti dyng mét chuéi Callback chung cho c& ba aut. Trude hot Cailback goi fe_radio_c.m dé nbn biét xem ntit nao (1, 2 hay 3) duge chon, sau dé edt gia tri duge chon vao bién choice. 2.9 Giao dign dé hoa 53 for i=1:3 if gcbo == radio _¢ (i) choice = i; set (radio_¢ (i), ‘Value’, 1); else set(radio_c_(i), 'Value', 0); end; end; Doan Script trén 1a mét vong lap, so sanh sé (handle) Callback do thu duge (gia tri do ham gcbo tra lai) véi sé (handle) cha méirmit. Nut nao cé sé tring sé duge dong (turned on, ‘Value’ = 1), mit nao khac sé sé bi ngat (turned off, ‘Value’ = 0). Cuéi cing, Callback goi fe_cale2.m dé thuc hién viéc tinh quy déi da duge chon va hién thi két qua. 2.9.5 Cac phuong phap tao GUI Thong qua mét vi du cu thé xuyén suét cdc muc 2.9.1 — 2.9.4, ban doc da lam quen véi cach tao GUI, da thay duge kha nang phong phi cita cac céng cu do MATLAB cung cap. Tuy nhién, vi dy a6 méi cho thy cach tao GUI theo phutong ph&p thi cdng. Cén cé thé tao GUI mét cach don gian hon nita bang cac cong cu dé hoa. Trén cd sd vi du tinh déi tién “Exchange of Funds“ (duge trich tit tai liéu tham khao), mye nay hé théng héa hai phudng php, gitip ban doc cé mot cach nhin’so sénh, thuan tién khi can phai Iya chon. a) Phuong phap tao GUI bang cong cu d6 hoa Ta da biét: Khi vao lénh guide ta sé goi trinh dé hoa GUIDE dé soan thao Layout, két qua du tién 1a Layout réng 6 hinh 2.12. Viée déu tién phai lam la mé Menue Tools/Application Options dé xac dinh: © Ligu ta chi muén tao GUI dudi dang file c6 dinh dang .fig, @ hay déng thdi tao ca script (m-file). Trong vi du sau day ta sé chon Option nay. Sau khi da hoan thién, dé str dung GUIDE ta chi viée nhap tén cia m-file dé 4 ctta ss Command Windows, hoac kich hoat 6 Menue Tools/Activate Figure. Tiép theo, ta lan lugt sti dung chuét dé gap cac phan tu cha GUI ti thy vién nam phia bén trai cha Layout réng (hinh 2.12) va nha vao cae vi tri ta m\ CO thé str dung chuét dé co dan, thay déi kich thude cua Layout va cla cc phan tit thude Layout. Cac kich thuée da x4c dinh trén Layout cing sé 14 kich thuéc xuat hién trén GUI sau nay (hinh 2.17). Cac phan ttt cha Layout duge quan ly theo mét cdu tric cé phan cap, trong &6 dé hoa cua GUI ding é cp cao nh&t. Cé thé kiém tra cau tric dé bing cach mé cita sé Tools!Object Browser (hinh 2.18; hinh é gitta, bén trai). 2 Kuat va nhap di li¢u trén min hin MGi phan tit ciia etta sé Layout déu clin phai co nhiing dac diém (tham sé) nhat dinh. Dé soan thas cc tham sé ay, ta sti dung Property Inspector (hinh 2.18: hinh phai), goi bang mot trong cac ech: Nhay chudt kép vao phan ti, dang lénh S/9|e IE /3i0 ere a? o Exchange of Funds a) Ta al me Exchange of Funds [=a gute (INSAS = Beaaple eet OOF hay qua Menue Tools!Property Inspector. Hinh 2.17 Trén: Chon va xe dink ich thude cba cde phar eda GUT Fanti [ronan Elrowat f- Forepoiracel == Hanataveney so Freres zl, Cvamereignnen — SJewine mentie jo |-useacoe 00 = was 16 eo7s405s019 ahem roton a ee Hinh 2.18 Sit dung Property Inspector dé soan thao tham s6 cho cde phan td cla GUI 2.9 Giao dign dé hoa 55 Hinh 2.18 minh hoa kha nang soan thao tham sé cho phan tit Popup Menue dang dé chon nuée itc, Phap, ¥ hay Ao): Chon dac diém ’ string’ cla Popup Menue dé mé cita sé soan thao, sau dé viét tén cdc nude vao cita sé (ainh 2.18: hinb duéi). Tuy nhién, ‘ string’ chi la m6t trong nhiéu dic diém can duge xac dinh cia phan tt Popup Menue. Bang sau day tap hgp mét s6 dac diém (tham 86) quan trong cia phan tit va cdc gid tri dic trung dat sin. Cac tham sé xac dinh dic diém cha GUI Parent handle Phan tu c&p trén Position Left, below, width, height| Vi tri (choang cach, kich cd) Units points’ Don vi xac dinh vj tri BackgroundColor [red, green, blue] Mau nén Style ‘pushbutton’ Dién tich chon *togglebutton’ Dién tich chon ‘ checkbox’ Vang cia hép héi dap ‘radiobutton’ Vang cia nuit chon " popupmenue’ Danh muc chon ‘text’ Vang cia ky tu (Text) redit’ Ving nhap ky tu oo oeee Thanh trugt ‘frame’ Khung c6 mau String ’string’ Ky tu duge bién thi (string_1’; ’string_2'] Cae phan tit cha danh muc (/ popupmenue’ ) Value number Tich cuc = 1, phan tit duge chon tit danh mye Tag string Nhan dé nhan dang phan ti Callback ‘string’ Goi ham Moi phan tit déu c6 thé nhan néi dung hay gia tri cho sin truéc, va trong qua trinh sit dung do goi ham (Callback) ndi dung hay gid tri d6 6 thé bj thay adi. Vay 18 ching da c6 sin chute naing xuét di ligu. Mgt ving ‘edit’ c6 cd hai chic nang nhap va xudt (nhap va hién thi ky ty). ‘Timg phan tit — tay theo thit ty gapitha ching — c6 thé bi xép chéng lén nhau. Dac biét cac pl tii’ frame’ cdn duge tao du tién dé tranh chting che lap cac phan tt khac. Sau nay, ta c6 thé thay trinh ty dé bang cach déi thit tu cla cdc chudi lénh tuong ting trong m-file. Ngoai ra, dé thu duge mét Layout dep mat, ta c6 thé sti dung cong cu Menue LayoutiAlign Objects dé giéng thang hang cdc phan tit caa GUI. Tham s6 Value chifa gid tri hién tai ca phén ti: 56 2 Xudt va nhap di ligu trén man hinh + Phan tit ‘pushbutton’: Gia tri dé cho biét, dién tich cha nit nhén 6 dude chon (=1) hay khéng (=0). Hoac déi tuong nao trong danh muc (danh sé tht ty 1, 2, 3, ...) dude chon, + Phan tit ‘edit’ (nhap ky ty): Cho biét gid tri ciia sé duge nhap. Néu dit liéu duge hap 1a chudi ky ty, gid trj sé 1a mot ma tran rong. * Phan tit ‘popupmenue’: Do dic diém chon mang tinh duy nhat nén . khong tén tai cae gia tri khée nhau. ¢ Cc phan tit con lai: Gid tri duge cung c&p nhé thao tac goi ham. Vi du “Exchange of Funds“ é hinh 2.17 minh hga két qua tao GUI, giao dién phuc va tink quy déi tién ca cde nude Ditc (DEM), Phap (FRF), ¥ (TL) va Ao (ATS) sang dong tién chung EUR cia chau Au va ngusc Iai. Vi du duge bién soan lai dya trén m4u waehrung_guide.m va waehrung_guide.fig cla trang Web wiw.eat.ei.tum.de/lehre/ssm. Sau khi bién soan, hai Files méi 6 tén monetary_guide.m va monetary guide. fig. Chute nang cda GUI Chtc nang that sy cia phan ti thuéc GUI ndm 4n trong cdc tham sd cla callback. Méi khi kich hoat phan tit (nhay chudt hay nh4p dit liéu), cdc lénh sé duge chuyén cho MATLAB dudi dang chudi ky tu va dude thuc hién. Néu ta sit dung m-file (goi la Application M-File, viét tat: AMF), trén ctta sé Property Inspector, tai vi tri nhap déng lénh cha Callback ta c6: monetary_guide(’Value_Land_Callback’ , gebo, 1], guidata (gcbo)) Néu ta viét mot gia tri nao d6 vao ving nhap gianh cho ding tién riéng cha nuéc duge chon, sau dé nhaén nut Enter, khi &y ham monetary_guide (tén cua ham AMF) sé dude kich hoat. Trong cu trac cha monetary_guide, ham con Value_Land_Callback da duge dinh nghia nhu sau: function varargout * Value_Land_Callback(h, eventdata, handles, varargin) set (handles .Vaiue_Land, ‘Value! , str2num(get (handles .Value_Land, String! }1) Trang ham trén, bing lénh set, gi tri l4y ti ving nhap ky tu duge gan cho handles.Value_Land. Trude dé, gia tri dy da duge doc tit vang ‘String’ cla handles .Value_Land va d& duge MATLAB dang ham st r2num dao thanh mét gia tri s& hoc. Noi chung, méi dé hoa GUI déu duge MATLAB nhan biét nhd mot chi sé, gan cho bién handles 4 ddu cha ham AMF. Khi cat Layout cia GUI, MATLAB sé ty d6ng tao ra phan dau (phan dinh nghia) cia AMF. Ta sé chi phai dién bang tay phan néi dung caia ham . Trong vi du trén, phan dé nhu sau: function varargout = monetary guide (varargin) % MONETARY GUIDE Application M-file for monetary guide. fig 2.9 Giao dign dé hoa 57 % FIG = MONETARY GUIDE launch monetary_guide GUI. % MONETARY GUIDE('callback_name', ...) invoke the named callback. % Last Modified by GUIDE v2.0 21-Jan-2003 16:25:51 if nargin == 0 % LAUNCH GUI fig = openfig(mfilename, 'reuse'); % Use system color scheme for figure: set (fig, 'Color', get (0, 'defaultUicontrolBackgroundColor')); % Generate a structure of handles to pass to callbacks, and % store it. handles = guihandles (fig); guidata(fig, handles); if nargout > 0 varargout(1) = fig; end global Factor; % Factor global define Factor = 1.95583 ; % Default for Factor set (handles.Monetary,'String','DEM'); % Default for Monetary elseif ischar(varargin{1}) % INVOKE NAMED SUBFUNCTION OR CALLBACK try [varargout{l:nargout}] = feval (varargin{:}); % FEVAL switchyard catch disp(lasterr); end end Phdn dinh nghia nim 4 ddu cita ham AMF d6 duge tao nén hoan toan ty dng. Ngudi thiét ké GUI duy nhét chi phai dién bing tay ba dong sau: global Factor; % Factor global define Factor = 1.95583 ; % Default for Factor set (handles.Monetary, 'String','DEM'); % Default for Monetary Khi goi GUI, ba dang lénh dé cé tac dung lap trj cho bién Factor va xdc dinh dé 1a bién c6 tac dung global trong pham vi cla monetary_guide, cho phép cdc ham con sit dung Factor mét cach dé dang. Sau dé, cac gid tri ca hé sd quy déi gitta déng tién chung Euro va déng tién riéng cha quéc gia duge dat 58 2 Xudt va nhap di liu trén man hinh vao Mark cia CHLB Dic: 1.95583 va ‘DEM’. Trude d6, ving danh myc chon tuong ting ‘Germany’ da duge dat gia tri 1A ‘1’ tai déng ‘value’ cia cita sé Property Inspector. Tuy nhién, ta cing c6 thé thyc hién tha céng thao tac 46 bang cach viét thém dong lénh set (handles.Land, ‘Value’, 1). Phan déu cd Application M-File (AMF) Qua vi dy trén ta thay, do lénh if, phdan dau cia ham monetary_guide da bj chia thanh hai phan nhu sau: ¢ Phan thit nhat sé dude thuc hién, néu khéng c6 trao tham sé khi goi monetary guide. D6 chinh la ln goi GUI dau tién: Dé hoa duge mé ra, chi sO handles duge cat vao bién fig, mau cia dé hga duge lap, GUI dude gan cho bién handles va cc théng sé cia GUI duge xac lap. ¢ Phan thit hai duge thuc hién khi GUI da duge kich hoat va chi duge goi: Hoac khi mit chon bj nhan, hoac khi danh myc chon hoat déng, hoae khi goi m6t ham con xéc dinh 6 ving CallBack. Cc ham con ctla Application M-File Phan ham con c6 chita cac ham cho phép thye hién cac thao tac theo yéu cdu. Vi du: Thay déi ky tu nhap (Style ‘ edit), thay déi danh muc chon (Style ‘popupmenue’), hay goi ham con riéng trong ham monetary _guide nhw Land_Callback cia danh muc dé chon nude. oo function varargout = Land_Callbackih, eventdata, handles, varargin) global Factor switch get (handles.Land, 'Value') , case 1, Factor = 1.95583; set (handles Monetary, *String','DEM'); case 2, Factor = 6.55957; set (handles.Monetary, String’, " FRE"); case 3, Factor = 1936.27; set (handles.Monetary, ‘String’, 'ITL'); case 4, Factor = 13,7603; set (handles.Monetary, 'String', ‘ATS'); ena; Ae function varargout = Value_Land_Callback(h, eventdata, handles, varargin) set (handles. Value_Land, 'Value', str2num (get (nandles.Value_Land, 'String'))}) ee function varargout value Euro Callback(h, eventdata, handles, varargin) set (handles. Value_Euro, ‘Value’, str2num(get (handles. Value Buro, *String'))) a-- function varargout = Euro2land_Callback(h, eventdata, handles, varargin) global Factor set (handles, Value_Land, 'Value', get (handles.Value_Euro, 'value') *Factor) 2.9 Giao dign dé hoa 59 set (handles. Value_Land, 'String', num2str (get (handles. Value_Land, 'Value'))) function varargout * Land2Euro_Callback(h, eventdata, handles, varargin) * global Factor set (handles. Vaiue_Evro, 'Value', get (handles. Value_Land, 'value') /Factor) set (handles .Value Euro, 'Strina'num2str inet (handles Nalue Barn, Salvot\ay Mi lan, khi thém mét phan tit (c6 kha nang thyc hign mét thao tac nao dé) vao Layout cha GUI, MATLAB sé ty dong bé sung thém mét ham con mang tén TagName_Caliback. Trong dé TagName 1a ky hiéu gianh cho thao tac, viét & dong Tag cia cita sé Property Inspector. Théng thudng, MATLAB dat tén cho céc ham con dé nhu: checkbox1_Callback, popupmenu3_Callback wv... va lan lugt danh sé (néu cé nhiéu ham con cing loai) ching theo tha ty tang dan, Vi du: function varargout = checkbox1_Callback(h, eventdata, handles, varargin) % Stub for Callback of the uicontrol handles.checkbox1. disp('checkboxl Callback not implemented yet.') Néu ngudi thiét ké GUI mudn dat tén khac, ngudi dé sé phai chi déng dat tén trén dong Tag truéc khi cat (save) GUI. N&u da 18 e&t rdi, ta khong chi phai thay déi Tag trong Property Inspector, ma con phai déng thdi thay thu cong tén ham con trong AMF. b) Phuong phap thi: céng tao GUI" Dé cé thé truy cap vao tham sé cha méi phan tu (object) cia GUI, phan ti d6 phai cé kha nang duge MATLAB nhan biét mdt cach chinh xéc. Cé thé bao dam kha nang nhan biét nhd dae diém Tag. Lénh findobj (’ Tag’, string) sé hién thi chi sé nhan biét (goi lA handles) cua phan tu cé tén string. Vige truy cap doc néi dung duge thuc hign bdi lénh variable = get(handle,’Parameter’). Tuong ty, cé thé ghi bang Ilénh set (handle,’ Parameter’). Dé ghi / doc sO ligu vao c&e ving ‘text’, . ‘edit’, ta phai dung cdc lénh scanf, sprint f hodc num2str. Khi djnh tao GUI theo phudng phap thu cong, ngudi thiét ké nén xdc dinh truéc pham vi tinh nang dy dinh cing nhu vé phac bé cuc cla Layout. Thao tac mang tinh chudn bi nay sé lam don gidn céng vie sau nay rat nhiéu. Bang lénh handle = figure (‘paramater’value, ...) ta tao mat cia sé rdng. Sau nay, gid tri handle sé duge ding dé sap xép trat tu cdc phan tt con (goi 1a Childs) cua Layout. hO = figure('units', 'points', ... "Position", [100° 100 300 100); 60 2 Xust va nhap dif ligu trén man hinh Cac phan tit con duge tao bdi handle = uicontrol (‘paramater’ value, ...). Lénh dé cho phép ta quy dinh dac diém céa phan tit con, va méi dae diém sé « tuge khai bao trén mét dong riéng, xudng dong béi dau ... Trinh tu khai bao dac * diém khong co y nghia quan trong. Vi du: Dogan ma MATLAB cita 6 bén trai inh 2.37 c6 thé c6 dang sau: hl = uicontrol('Parent',n0, ... % Ving nhaép ky ty ‘Units','points', ... 'Position', [20 13 60 15], ‘BackgroundColor’, [1 1 1], "string’,' 1.00%, 'Tag', Value _Euro', ... % Nhan biét phan vir ‘style', ‘edit'); Cac tham sé Callback sé duge nhap theo cach tuong tu. Bdi vi cac lénh cla MATLAB déu dude viét dudi dang ky tu, dé dé phan biét: Moi ky tu trong pham vi mot lénh déu phai duge gi gon bén trong dau ngoac kép '' giéng nhu trong vi dy sau day: hl = uicontrol('Parent',hO, ... "Callback", ['Land=get (findobj(''Tag'', ''Land''),''value'! Bang sau day téng bgp cac Iénh do MATLAB cung cap dé tao GUI tha cong. Cac lenh tao GUI handle= figure ('parameter’ value, ...) Tao cita sé réng handle= uicontrol (/parameter’ value, ...) Tao phan tk GUI uimenu (‘parameter’ value, ...) To menu cla GUI handle= findobj (/ Tag! , string) ‘Tim chi s6 handle variable = get (handle,’ parameter’ ) Doc tham so set (handle, parameter’ , value) Ghi tham sé num2str (variable, format} ) Dao sé —> Ky tu sprint (string, variable) Xudt ky tu sscanf (string, format) Doc ky tu Sau day Ja ma MATLAB ciia vi du “giao dién tinh quy déi tién“, thiét ké theo phvigng phap tha céng. Phan ma in ra day chi bao gdm nhiing tham sé can thiét nhat. nO = figure('Units',‘points', ... % Tham sé cua Layout 'Position', {100 100 300 100], ‘NumberTitle', "off", ... % Khéng cé "Figure" & déng tén ‘Name', ‘AUTOLAB - Example for manual made GUI', % Dong tén cha Layout ‘MenuBar', 'none'); % Khong cén Menu ? 2.9 Giao dién dé hoa RL = uicontrol('Parent',hO, ... 9% Vi ‘Units','points', ... "Position', {0 70 300 30], ..- 'FontSize',24, ... ‘String’, ‘Exchange of Funds', ... ‘style’, 'text'); % Chon nyéc Factor 1.95583; 88. Monetary = 'DEM'; % 8 hl = uicontrol('Parent',;hO, ... 9% T. ‘Units', ‘points’, "Position', [190 40 90 15], ‘BackgroundColor',[1 1 1), --. "String', ['Germany';'France ';'Ita: "Callback", ['Land=get (findobj("'Tag'', 61 fang Text at truee at trudge '20 Popup Menu ? ly ‘;'Austria’), “'Land''),''value''); ‘switch Land case 1,Factor = 1.95583; Monetary = ''DEM' ' case 2,Factor = 6.55957; Monetary = ''FRF''; ' case 3,Factor = 1936.27; Monetary = ''ITL''s",... , case 4,Factor = 13.7603; Monetary = ''ATS'' send; "set (findobj(''Tag'',''Monetary''), ''String’’, Monetary)i'l, ‘Tag’, 'Land', ... % Nhan biét phan ta ‘style’, 'popupmenu', ... "value', 1); % Dat trusc: Germany % Gid tri da tinh quy déi sang Euro hl wicontrol ('Parent',h0, "Units', ‘points’, 'Position', (20 13 60 15], ‘BackgroundColor’, (1 1 1], ‘string',' 1.00", 'Tag’, 'Value_Euro', "style", 'edit'); BV aN hl = uicontrol('Parent',h0, ‘units', ‘points’, ‘Position’, [80 13 30 15], ‘string’, 'EUR', ‘style’, 'text'); vy % Gia trj nhap bang déng tién quéc gia hl = uicontrol('Parent',h0, .. ‘Units', 'points', "Position', {190 13 60 15], Bho av fang nhap dit liéu han biét phan tt ang nhap Text ang nhap dir liéu 62 2 Xudit va nhap du ligu trén man hinh *Background¢olor', (1 1 1], "string','* 0.00', % Dat trusc ‘Tag', 'Valde_Land', ... & Nhan biét phdén ck "style", 'edit'); hl = uicontrol('Parent',h0, % vung Text (xKudt) ‘units', 'points', Position’, {250 13 30 15}, ‘String’, ‘DEM', ... % Dat trude 'Tag', 'Monetary', ... % Nhan biét phdn to ‘stylet, 'text'); % Tinh quy di hl = vicontrol('Parent',h0, ... % Ving chia ky hieu ‘Units', points’, "Position", [130 36 40 20], ‘Callback", ['Value_Euro=sscanf (get (findobj(‘'fag'', ''Value_Euro''),',..+ Giseringu eee ct "value_Land = sprintf£(''s8.2£'', Value Euro*Factor);', ‘set (£indobj(**Tag'*,‘*value_Land''),*'String**, Value Land); ‘set (findobj(''Tag'', ''Monetary''),''String'',Monetary)'], "style", 'pushbutton', 'String', 'se=>"); hl = uicontrol('Parent',h0, ‘Units', 'points', ‘Position’, [130 10 40 20], ... *caliback", |*Value_Land=sscanf (get (findob} (7 'Tag’*, ""Value_Land’*), “istring'’'), (SEE, eee "value _Euro = sprintf(''t8.2f'', Value Land / Factor);', ‘set (findobj (''Tag!', ‘Value Euro''},''String’',Value_furo); "set (findobj(''Tag'', ''Monetary''), ''String'', Monetary) ;'1, "style", ‘pushbutton', 'string’, '<==="); % Vong chita ky higu <=== 2.10 Tom tat ndi dung chung 2 Chuong 2 nham gitip ban doc tra Idi duge cdc cu héi sau day: 1. Lam thé nao dé dinh nghia mét bién c6 dang doan van ban (chudi ky tu, Strings) ? Lam thé nao dé xuat sé liéu hay chudi ky tu ra man hinh ? Nhitng lénh ndo gitp ta xudt chudi ky tu theo dinh dang ? C6 nhiing ky higu dac biét hay phan tit dinh dang nao khi xudt? * Lam thé nao dé cét van ban hay dit ligu dudi dang File ? ee 2.10 Tom tat ndi dung chuong 2 63 6. Lam thé nao dé céit dit ligu dudi dang ma nhi phan hay ma ASCII? 7. Sit dung cdc lénh cia hé diéu hanh nhu thé nado ? 8. Cau trac cua dé hoa MATLAB ? 9. Cu phap téng quat cia mét lénh vé dé thi trong MATLAB? 10.Cac kha nang dién ky ty va chia tryc cia dé thi cdn vé? 11.Lam thé nao dé vé d6 thi 2chiéu (2-D)?_—. 12.Lam thé nao dé vé dé thi 2 chiéu (2-D) logarith ? 18.Lam thé nao dé vé mat cong 3 chiéu (3-D) ? 14.Dé hoa 2-D va 3-D khac nhau 4 diac diém gi? 15.Cac kha nang dién ky tu va chia truc cla dé hoa 3-D ? 16.¥ nghia cia xvalue, y_value va zvalue trong lénh plot3(x_value, y_value, z_value) ? 17.Tae dung cia lénh [X,¥] = meshgrid(x_vector, y_vector) ? 18.LAm thé nao dé in hay cat vao bo nhé cac dé thi, dé hoa da tao duge ? 3 Control System Toolbox: Cong cu khao sat - thiét ké hé théng diéu khién ‘ontrol System Toolbox (CST) 1a mot bd cong vy cic ky 6 ¥ nghia va tin loi i voi ky su diéu kbién ty dong hay nhitng ngudi nghién edu ly thuyét he thong. Vdi CST ta c6 thé thuc hién tat ca cac bude can thiét dé khao sat — thiét ké hé thdng, dc biét 14 cdc hé théng diéu khién (Control System): + M6 ta cdc hé tuyén tinh ~ ding (hé c6 tham s6 hang) duéi dang lién tuc hay gidn doan (ham truyén dat, sd dé phan bé diém khéng - diém cyc, mé hinh trang thai, m6 hinh dac tinh tan sd; muc 3.1). * Chuyén déi hode xt ly hé (myc 3.2), phan tich dc tinh hé thdng (dng hoc, dap tng bude nhdy, gidm bac; muc 3,3). « = Thiét ké va tinh t0i wu cac khéu diéu chinh (khau DC: quy dao diém cuc, gan cuc, téi uu LQ’; muc 3.4). Ngoai ra, CST con cung c&p mét sé thuat todn cho phép danh gid dé tin cay cia cae phép toan sé (mye 3.5) sii dung khi khao sat hé théng. Phan ldn cae thuat toan sé duge cat dudi dang m-Files (cde Scripts) va do dé hoan toan ngé, cho phép ngudi sit dung sita ddi, bé sung theo y minh. 3.1. Mé hinh héa cac hé tuyén tinh - ditng (hé LTP) _ Thuong bao gid ta cing bat ddu céng viée nghién citu hé thdng diéu khién bang viée mé hinh héa. Xuat phat tit cdc dic diém vat ly, ta tim cach mé ta hé bang toan, phan 4nh cdc quan hé nhan qua givfa cac tin hiéu vao u va cac tin hiéu ra y. MATLAB cung cp cho céc hé LTI (lian tuc hode gian doan) c6 dang: « hé mét vao / mét ra (hé SISO: single-input / single-output) hay + hé nhiéu vao /nhiéu ra (hé MIMO: multiple-input / multiple-output) bon phuong thite mé ta sau day: « Ham truyén dat (Transfer Function: TF) * Méhinh diém khéng - diém cue (Zero Pole Gain: ZPK) * Méhinh trén khong gian trang thai (State Space: SS) ) Ti wu LQ: linear — quadratic optimal control ? Ha LTT: linear time-invariant systems 66 3 Control System Toolbox: Cong cu khao sat - thiét ke hé thing diéu khién e Méhinh di liéu dac tinh tdn so (Frequency Response Data: FRD) Trong bén phuong thitc, cac mé hinh TF, ZPK va SS déu 14 mé hinh tham s¢, con mé hinh FRD phyc vy mé ta va phan tich dac tinh cia hé véi bé di liéu thu dudge qua do dac hay mé phéng. Chinh vi vay, viéc phan tfch sit dung mé hinh FRD chi han ché vao cic phudng | phap dac tinh tan sé. Ban doc c6 thé xem chi tiét vé mé hinh bang cach goi Iénh Lt imodels. 3.1.1 Mé hinh truyén dat Ham truyén dat 1a mét phan thie hitu ty cha s vdi da thie ti sO num (numerator) va da thitec mau sé den (denominator), mo ta dac tinh truyén dat cia hé trén mién anh Laplace. Als) = num(s) = G8" $Oy, 8"! HAS! + Oy “den(s)~b,8" +8, 8 +--+ BS +, (3.1) Khai bao TF cho hé SISO Ham truyén dat ctia hé SISO cé thé duge khai bao theo hai cach: 1. Strdung lénh t £ (num,den): Nhap da thitc tit sé num va da thie mau sé den dudi dang vector tham sé cua s theo trinh tu sé mii cuia s bé dan. ee ee Ce Transfer function: oes 2, Khai bao dudi dang ham hitu tf cla s: Trude hét ta phai khai bao s la bién cia mé hinh TF, sau dé nhap ham truyén dat dudi dang ham hitu ty cla s. eee ee eect tee eG Transfer function: s >>h = (+2) /(3*2+5*s+4) Transfer function: s+2 ee eee Cha _y: Khi s d4 duge khai 1a bién cia mé hinh TF, moi mé hinh tiép theo dudi dang ham hitu ty cia s déu duge coi 1a mé hinh TF, cho téi khi s dude khai béo mdi. 3.1_M6 hinh héa cac hé tuyén tinh ~ ding (he LTI) 67 Khai béo TF cho hé MIMO Ham truyén dat eta hé MIMO duige mé tA dudi dang ma tran 2 chiéu H, véi hy la phan tit truyén dat tit ddu vao thaj tdi ddu ra thit i. Téte 1a: Cac hang tng véi cdc bién ra va cdc ¢6t ting véi cdc bién vao. RUM, nike 2s~3 si+s-6 Hal’ Ai]_j dem, deny }_) “841 s+5 (3.2) Fin fag) rumg, nUrigg st2 a1 deny, dey. 8 +5s+4 25? +6s+10 Ham truyén dat (3.2) cé thé duge khai bao theo hai cach: 1. Khai bao TF cho ting phan ti cia ma tran truyén dat H: >phil = tf ([2 -3], [1 1]); >Phi2 = tf ({1 1-6], [1 5]); > h2i = tf ((1 2}, [1 5 417 >>h22 = tf (-1, [2 6 10]); hoac dudi dang ham hitu ty cia s: >>s = tf ('s') >> hll = (2*s-3)/(s+1): >> h12 = (s*2+s-6) / (845); >>h21 = (s+2)/(s*2+5*8+4)7 >>h22 = -1/(2*s*2+6*s+10); Sau d6 ghép lai cdc phan tit lai thanh ma tran H: >>R = [hl] hl2 ; n21 n22); 2. Khai bdo hai truéng (Cell Arrays) véi kich cd Ny x Nu (Ny: s6 bién ra, Nu: sé bién vao): Trudng NUM cé chita cac da thitc tit sé va truing DEN chifa cée da thie mau sé. num, num, den, deny, Aum, nur, dens, deny, Dén day ta cé thé nhAp cac vector tham sé cia s theo trinh ty sé mi gidm dan nhu sau: NUM = ; DEN = (3.3) >> NUM >> DEN ee {{1 1} [1 -5}) + [1 5 4] [2 6 10]}; Ma tran H duge khai bao bang cach goi t f vdi cdc tham sé NUM va DEN: >> H = tE(NUM, DEN); 68 3. Control System Toolbox: Céng cy khdo sat ~ thiét ké hé thong diéu khién C6 thé kiém tra két qua bang cach goi H: >>H Transfer function from input 1 to output... eae eee aes aoe ea 2s*2+ 6s +10 Khi hé MIMO chi chita céc phéin tid t7 Ié khéng cd quan tinh Néu hé MIMO chi chita duy nhdt ede phan tit ty 1é khong c6 quan tinh (cde hé s6 khuéch dai), khi dy ta chi cdn goi nhut sau, dé khai bao mé hinh TF: >>G= tf ({1 27 3 0)) Transfer function from input 1 tc output... 3.1.2. M6 hinh diém khéng - diém cue ,Dang mo ta dac tinh truyén dat tudng ty nhu ham truyén dat 1A mé hinh diém khéng - diém cue: rls = 251 )(8 = Fn) | b= h(s)=k O° Fn yep Pa) | Trong (8.4) k 18 bg sé khuéch dai véi gid tri thue, 2, .. 2, VAP: «. Py La cdc gia tri thuc va / hoc cac cap gid tri phic lién hhgp cha diém khéng, diém cuc!. Chung chinh la nghiém cia da thitc tu va mau sé. (3.4) "Zero, pole 3.1 Mé hinh hoa cae hé tuyén tinh - dimg (hé LTI) 69 Khai bao ZPK cho hé SISO Ging nhu mé hinh TF, ta c6 hai kha ning dé khai bao m6t mé hinh ZPK: 1, Str dung lénh zpk(z,p,k): Nhap vector diém khong 2 ({-6 1 1]), vector diémcuc p ([-5 1]) vahésékhuéch daik (3). ee ee ee zexro/pole/gain: 3 (s+6) (s-1)*2 (st5) 2. Khai bao dudi dang ham hitu ty cita s: Truéc hét ta phai khai bao s 18 bign cia mé hinh ZPK, sau d6 nh4p ham truyén dat dudi dang ham hia ty cua s. >> s = zpk('s') Zero/pole/gain: s ee eee Zero/pole/gain: (s-1) (s+2) Can phai luu §: Khi ta da khai bao s 1a bién ca mé hinh ZPK, tat cd cdc m6 hinh biéu dién dudi dang ham hiu t¥ cia s sé duge coi 1 mé hinh ZPK, tdi khi nao ta khai bao lai bién s hay bién mé hinh ZPK sang mé hinh TP. Khai bao ZPK cho hé MIMO Ma tran truyén dat H véi kich cd Ny x Nu va cae phan tit hy, dic trung cho ham truyén dat tit ddu vao tha j (dt) tdi ddu ra tht i (hang) vi du c6 dang sau: Zu y,Z0) J2—1___g (8 =) (+8) ay na) _| an” Pa _[ EF)” (=1)o +8) =2) s+ ( aay Fog] yy ZL iy 2B “f(a [Pa Px (s+4)( * +25 +2)(s+1) (3.5) C6 thé khai bao H theo 2 cach ma ta da biét 4 trén: 1. Dung lénh zpk dé khai bao ting ham truyén dat ZPK-SISO riéng 18: 70 3 Control System Toolbox: Cong cy khao sat - thiét ké hé thong diéu khién >> hll = zpk ou eee aes Pett ea ee >> h21 = zpk (L zpk ([ ct >> h22 = zpk (- l, 1 ne -1),1)7 1, {-1 -1+i -1-i),-1); hodc dudi dang ham hitu ty cla s >> s = zpk('s'); >> hil 2*1/ ((s-1) * (s#2)) >> h12 3* (s*2-2*s41) * (s+6) /(s*2+4*5-5); >> h21 = (s*2-3*s+2)/(s*2+5*s+4)7 ae ~1*(st1)/((s*2+2*5+2)*(s#1)); va sau d6 ghép cac phan tit thanh ma tran H. >> H = [hl] hl2 ; h21 h22]; 2. Khai béo hai truting (Cell Arrays, kich cd Ny x Nu, 06 cdc déu vaoi=1... Ny, cdc dau raj = 1... Nu) cho cdc da thitc diém khéng (Z), cac da thite diém cuc (P) va ma tran (K) kich cd Ny x Nu cho cdc hé s6 khuéch dai. z(t" ‘ele =| Pel x ={t ky Ge 221 222 Pu Pr Koy Kop >> 2 = {() [-6 1 1];{1 2) -1}; >> P= {{-2 1] [-5 1);(-4 -1) [-1 -1+i -1-i]}; >> K = (23; 1-17; Sau dé goi zpk véi cdc tham s6 Z, P va K: >> = zpk (Z,P,K) Zero/pole/gain from input 1 to output... 7 (s+2) (s- 1) eee #220 ---~ (s+4) (s41) Zero/pole/gain from input 2 to output... eee eee #1: #1: (s#5) (s-1) = (s#1) a2: oe - (st1) (s*2 + 28 + 2) 3.1_M6 hinh héa céc hé tuyén tinh - ding (hé LT) 7 3.1.3. Mé hinh trang thai Trong phudng phap mé ta bang mé hinh trang thai ta khéng quan tam téi quan hé ‘truyén dat gitta cdc bién vao va bién ra, ma chi quan tam tdi sd cde phan tit tich lay nang lwong déc lap tén tai trong hé: Ta phai tim cho méi phin ti tich lay (dng véi mét khau tich phan, Intergrator) mt phuwong trinh vi phan bac 1. Chinh vi vay, mét hé cé x khau tich liy déc lap sé Ihéng duge mé ta béi mét ham truyén dat bac n, ma bai mot hé n phwong trinh vi phan béc 1. Hé MIMO thuéng duge mé ta bdi mé hinh trang thai téng quat, viét duéi dang ma tran nhu sau: e Phuong trinh trang thai: x=Ax+Bu (3.7) « Phuong trinh dau ra: y=Cx4+Du (3.8) : Vector trang thai (Nx x 1) A: Ma tran trang thai (Vx x Nx) u: Vector bigén vio = (Nu x 1) B: Ma tran dau vao (Nx x Nu) y: Vector bién ra (Ny x 1) C: Ma tran dau ra (Ny = Nx) D: Ma tran lién théng (Ny x Nu) Trong hé trén, Nx 1a bac cha hé (ting vi s6 phan tit tich lay nang lugng ade 1p trong hg), Nu la sé bién vao va Ny 1a so bién ra. Khi déi tugng 1a hé SISO thuting gp, chi o6 1 bién vao va 1 bién ra, khi ay hai phuong trinh (3.7),(8.8) 98 tr nén don gian va ta chi viée thay thé B bai b (Vz x 1), C béi c? (Nex 1) vaD béi d (b, € 1a hai vector, d J& dai lugng vo huéng): * Phuong trinh trang thai: x=Ax+bu (3.9) «Phuong trinh dau ra: yoextdu (3.10) Vi trong thyc tién, hdu hét cdc déi tugng diéu khién déu cé dic diém quan tinh (dac diém loc théng thap) nén khéng cé thanh phan lién théng, tic 14 D=0 hoac d = 0. Viée khai béo mé hinh trang thai trong MATLAB duge thyc hién mét cach rat don gian nhé lénh ss (A,B,C, D), trong dé A, B, C va D 1a cdc ma tran hay vector tudng ting. Chui ¥: * Khi doi tugng la khdu quan tinh: Khi &y chi cin gén cho ma tray lién théng D gia tri v6 hudng 0 1a da, ma khong cdn quan tam téi kich ¢d cha uvay. 72 3 Control System Toolbox: Cong cy khao sat - thiét ké hé théng diéu khién >> D= ¢ He SISO: Néu vector ¢ vén 1a vector c6t, ta phai chuyén ¢ thanh vector hang c". >> ss(A,B,C’,D) Dé minh hoa ta theo doi vi du vé déi tugng MIMO c6 2 trang thai, 2 ddu vao va 3 déu ra sau day. Ta 34 Khai bao véi MATLAB: i A 01 je=p 2);DS) al coo oeco >> SYS = ss({1 27 3 41,{1 1; 011,101 712; 3 11,9 ae x1 x2 xi Z 2 x2 3 4 be ul u2 xi 1 1 x2 0 1 ee x1 x2 yi 0 1 y2 1 2 y3 3 1 aS ul u2 yl 0 0 y2 Q 0 y3 0 a 3.1.4 Mé hinh dir liéu dac tinh tan sé Ngugc lai vdi ba loai mé hinh da giéi thiéu, m6 hinh dit ligu dac tinh tan so FRD khéng dua trén co sd mé ta toan hoc cita hé thong, cia déi tugng, FRD dua trén mét bé dit ligu dac tinh tan sé thu thap dude qua do dac hay mé phéng. C6 3.1_Mé hinh héa céc hé tuyén tinh - dimg (hé LT) 13 thé thu thap duge bé dit ligu do théng qua do bién dé va géc pha cia tin higu ra kchi kich thich hé 6 déu vao béi mét tin hiéu hinh sin véi cc tan sé khae nhau. Tin hiéu ra thudng cb dang nhv sau: =|¥ (w)]sin (wr +(w)) =|F( jev)|Im {e eae (3.1) Quan sat thudn ty toan, ham dic tinh tén s6 chinh 1a dap ting phtic cha hé khi kich thich 6 ddu vao béi m6t tin higu hinh sin: ale oie) — Sm (Jw) + +a (jee) + ay F (jw)=|F (Ju) ce |F (jw)|= fRe{F(ju)}? + Im {F (jo)}? 8.13) net (3.14) Khai bao mé hin FRD cha hé SISO Viée khai bao duge thuc hién bdi lénh frd (answer, freq, unit). ‘trong a6, answer 1a vector chita cac dap ting phiic, ting véi cdc tan sé c&t trong vector freq. unit 14 tham sé tiy chon, cho biét ddn vi cla tdn sé 1a’ rad/s’ (don vi chuan mac dinh) hay la ‘H2’. Dé minh hoa ta hay khai bao khau quan tinh bac nhé&t PT, sau day: 1 1- jut 1 -saria(or) eT 1s(url fear) (3.15) >> freq = (0.01 0,1 1 10 100 1000 100001; % Tan sé >> answer = (1-j*freg) ./(1+£req.*2); % Tao PTL >> sysfrd = frd(answer, freq, ‘Units’, 'rad/s') From input 1 to: Frequency (rad/s) output 1 0.01 9.99900e-001-0.009999i 0.10 9.90099e-001-0.099010i 1.00 5.00000e-001-p.500000i 10.00 9.90099e-003-0.099010i 100.00 9.99900e-005-0. 0099991 1000.00 9.99999e-007-0.001000i 10000.00 1.00000e-008-0.000100i Continuous-time frequency response data model. 74 3 Control System Toolbox: Cong cu khao sat - thiét ké hé thong didu khién Khai bao m6 hinh FRO cho hé MIMO M6 hinh FRD cia hé MIMO dude khai bao cing theo phugng thite tuong tu, diém khdc la: Dap ting phic answer khéng cén 1a vector ma lA mét tensor’ cé kich ed Ny x Nu x Nf, voi Nu bién vao, Ny bién ra, va vector tan sé freq c6 46 dai Nf. 3.1.5 Mé hinh gidn doan theo thai gian Déi vdi mé hinh gidn doan theo théi gian ta kh6ng ding anh Laplace ma ding phugng phap anh z dé mé ta hé, va thay thé cdc phudng trinh vi phan sé la cae phudng trinh sai phan. Cac mé hinh gian doan dude khai bdo tudng tu nhu mé hinh thai gian lién tuc, thém vao dé 1a chu kj*trich mau T, duéi dang tham 36 Ts. Néu ta chua xac dinh chu ky trich mu, Ts sé tu dong nhan gia tri -1. Dé khai bao ta str dung cac lénh MATLAB sau day: systf. =t£ (numden,Ts) sysepk pk (2,p,k,Ts) sysss =ss (a,b,¢,d,Ts) sysfrd =frd (answer,freg,Ts) M6 hinh gidn doan TF va ZPK Ham truyén dat gidn doan duge dinh a 1a ham hit cha toan tit z, mé tA duéi dang ham truyén dat (m6 hinh TF) hay biéu dé diém khong - diém cuc (mé hinh ZPK). 05 0 A hor 242-2 Ta c6 thé khai bao theo 2 cach: Zz 1. Dung lénh t£(num,den,Ts) hode lénh zpk(z,p,k,Ts): Khai bdo cae tham s0 hé théng gidng nhut myc 3.1.1 va 3.1.2, bd xung thém chu ky trich mau T,, >>h = tf ({1 -0.5),[1 1 -2],0.01) Transfer function: z- 0.5 Sampling time: 0.01 M6 hinh ZPK: “Tensor: Ma tran nhiéu chiéu 3.1_M6 hinh héa cac hé tuyén tinh - dimg (h¢ LTI) 15 >> h = gpk (0.5,(-2 1],1,0.01) zero/pole/gain: (z~0.5) (242) (2-1) 5 Sampling time: 0.01 2. Khai bao ham hitu ty cia z: Truéc hét ta phai khai bao z la bién cha md hinh TF hoac ZPK, sau dé nhap ham truyén dat dudi dang ham hitu ty oa z. M6 hinh TF M6 hinh ZPK eee Ce ed >> z = zpk ('z',0.01) Transfer function: Zero/pole/gain: z z Sampling time: 0.01 Sampling time: 0.01 >> h = (2-0.5) /(z*2+z-2) >> ho= (2-0.5}/{(z+2) * (z-1)) Transfer function: Zero/pole/gain: ‘ _ oe Pe oee oe 2242-2 (z+2) (z-1) Sampling time: 0.01 Sampling time: 0.01 Mé hinh gian doan TF theo dinh dang DsP* Trong linh vuc diéu khién tu dong, cdn dén xt ly tin hiéu sé, cdc ham truyén dat thudng duge cho duéi dang ham hitu ty cia bién z", viét theo thit ty sé mia tang dan. Diéu nay mau thudn vdi cach viét thong thung, cdc da thite cha z véi bac khac nhau 6 tu vA mu s6 dude viét theo thi ty sé mii giam dan. Giai quyét mau thudn nay, MATLAB cung cap lénh filt (num, den, Ts), cho phép ta khai bao mé hinh TF theo dinh dang DsP. >> h = filt ([{1 -0.5],[1 1 -2],0.01) Transfer function: et te deca 2 cee Sampling time: 0.01 * DSP: Digital Signal Processing (xtr lf t{n higu s6) 76 3. Control System Toolbox: Cong cy Khao sat - thiét ké hé théng diéu khién M6 hinh gian doan SS ‘Mo hinh gian doan SS (mé hinh gién doan trén khong gian trang thai) c6 dang téng quat: x(k +1) = Ax(k)+Bu(k) (3.16) y(k)=Cx(k)+Du(k) @.17) ‘Trong hai phuong trinh trén ta cdn hidu: a(k)=a(kT,). Vige khai bao hoan toan tuong ty muc 3.1.3: Thém tham sé Ts. >> sys = ss([ 3 ],( 13 ],[ 0.5 1,0,-1)7 C&c phuong thie khai béo mé hinh gian doan cho déi tugng tuyén tinh — dimg (hé LTD duce tap hgp lai trong duai day. Khai bao mé hinh gidn doan cua hé LTT tf (num,den,Ts) Ham truyén dat: Vector cac hé sé cha da thiic ttt s6 num, vector cac hé 86 ciia da thie mau s6 den zpk (2,p,k,Ts) Biéu dé diém khong - diém cue: Vector cic diém khéng z, vector cdc diém cuc p, vector cdc hé sé khuéch dai k ss (A,B,C,D,Ts) M6 hinh trang thai: Ma tran hé thong A, ma tran ddu vao B, ma tran ddu ra C, ma tran lién théng D f£rd (answer,freq,unit,Ts) M6 hinh dif liéu dc tinh tan sd: Dap img tan sé answer, vector tan sé freq, unit la don vj (thi nguyén) ca tan so rad/s (mac dinh) hoae Hz (unit=’Units’,’ rad/s’) Chu ky trich mau cita hé gian doan khong khai 7, M6 hinh lién tue vé thoi gian Mé hinh gién doan vé thdi gian, chu ky trich mAu chua xéc dinh 3.1.6 Théi gian tré trong cdc hé tuyén tinh - dimg (hé LT) Trong cac hé thong ky thuat thudng tén tai tugng tré thai gian. Nghia 1a, chi sau mét khoang thdi gian nhat dinh, tin higu kich thich méi cé hiéu hic 3 dau vao, hoac ta méi quan sat duge tin hiéu dap ting 6 dau ra, hoe ndi tai cha hé thong c6 cac higu ing tré nao d6. Dé mo hinh héa hién tugng tré, Control System Toolbox cung cp cho ta cdc Iénh sé duge mé ta dudi day. 3.1_M6 hinh héa cdc hé tuyén tinh ~ dig (hé LTI) 7 Thdi gian | tré gitta dau vao - déu ra Trén mién anh Laplace, dac diém thai gian tré T, thé hién qua viéc nhan thém e "4° yao ham truyén dat. Trong MATLAB, dic diém tré thii gian gitta dau vao thitj va d4u ra tht i dude khai béo théng qua tinh chat IoDelay cla mé hinh LTI, thé hién bai ma tran Ta chita thdi gian tré gitta timg cp vao/ra. Ma tran Td phai c6 kich cd ding nhu kich cd cla mé hinh LTI. Lénh 6 dang: set (syS,‘IODelay’ , Td) Dé minh hoa, ta sit dung vi dy khai bao mé hinh TF cho hé MIMO cé 2 bién vao va 2 bién ra é cudi muc 3.1.1. Ta lan lugt khai bao ma tran NUM cla cdc da © thie tit sé, ma tran DEN cla cac da thitc m4u sé, dinh nghia ma tran truyén dat H. Dung lénh set dé gan cho quan hé gitfa dau vao 2 va dau ra 1 thdi gian tré 1a 0,4s. Cudi cing ta goi H(1, 2) dé kiém tra phan tit cla Hd hang 1, cét 2. >> NUM = ((2 -3} [1 1 -6] ; [1 2) -1}; % Te sé >> DEN = {[1 1] (1 -5] 7 [1 5 4] [2 6 10]}; % M&u sé >> H = t£(NUM, DEN); % Khai bdo H >> #H % Kiém tra két qua Transfer function from input 1 to output. ee 4 #1: ------- s*.2 +5544 Transfer function from input 2 to output... eee #1: 2s°2+6s +10 >> set(H, 'ToDelay', [0 0.4 ; 9 01); % Tré: input 2/output 1 >> H(1,2) % Kiém tra TF: input 2/output 1 Transfer function: 2 exp(-0.4*s) * -- 78. 3 Control System Toolbox: Céng cy khdo sat ~ thiét ké hé thong diéu khién Thoi gian tré xu&t nién truc tiép 3 dau vao hay dau ra Néu thai gian tré xudt bien tru tiép 6 d&u vao hay dau ra, ta cé thé khai bao ching bang cach bé sung diém ’InputDelay’ hode ’Outputdelay’ vao mé hinh SS cla déi tugng LTI. Trén mién thdi gian, khi c6 tré Ty; gitta vector bién vao u va vector trang thai x, hoac tré T,, gitta vector trang thai x va vector bién ra y, mé hinh trang thai duge viét dudi dang: x(0)= Ax(s)+Bu(t—7,) 3.18) y()=Cx(t—7,,)+Du(s—(Zy +7) (3.19) Theo mé hinh trén, viéc khai bAo théi gian tré tré nén don gian hon nhiéu so véi trudng hop tré gitfa ddu vao - dau ra, Ly do: Thay vi phai khai bao tré giong nhau (c6 gia tri IODelay) riéng ré cho ting phan tit cla ma tran, ta chi cin nhap mét vector théi gian tré diu vio InputDelay hoae dau ra QutputDelay. Thdi gian tré trong cdc hé gian doan theo thdi gian Déi véi cdc hé gian doan, viéc khai bao thdi gian tré duge thyc hién tuong ty nhu cac hé lién tuc vé thdi gian, chi cdn bé sung thém béi sé n lan cla chu ky trich mau T,. Trén mién anh z, viéc bd sung tng véi viée nh4n thém thita sé 2" vao ham truyén dat gian doan, déng nghia véi viée gan thém cho hé diém cuc lain lan tai z = 0 (tai géc toa dé). Néu xuat hién nhu cdu bién adi thoi gian tré thanh diém cuc nhu trén, ta cé thé dang lénh sysp = delay2z (sys). Vi dy sau day minh hoa viéc khai bao thdi gian tré ddu vao ting véi 4 chu ky trich mu. >> h = tf ((1 -0.51, (1 1 -2],0.01, 'InputDelay'; 4) Transfer function: z- 0.5 Zh ed) Hoa 2242-2 Sampling time: 0.01 Phép xap xi Pade! cho cdc hé théi gian tién tuc Bing phép xdp xi Pade ta cé thé thay thé gan dung thanh phan tré & cta hé én tuc béi mot ham him ty. ~Tys pade (sys,n) [num,den] = pade (sys,ni,no,nio) Pade (sys,ni,no,nio) sysx = pade (sys,ni,no,nio) ‘Trong lénh pade, n chinh 1a bac cia ham xp xi cdn tim. * Padé-Approximation 3.2 Nguyén tac sit dung mé hinh LTI 719 Véi d6i tugng MIMO, cé thé khai bao bac riéng ré cho ting ddu vao trong vector ni, cho ting d4u ra trong vector no, va thai gian tré gitta cdc dau vao/ra trong ma tran nio. Cac bién xuat num va den chita da thitc tit sd va mau sé cha ham hitu ty xdp xi, thu duge dudi dang m6 hinh TF. Bién sysx sé hutu lai dang cia mé hinh géc sys. Ap dung xp xi Pade cho ham truyén dat con H(1,2) 6 vi du trén ta sé thu duge ham truyén dat (hitu ty) xap xi sau day: >> pade(H(1,2)) Transfer function: a eee eee eee Khai bao diac diém cua théi gian tré InputDelay Thdi gian tré truc tiép 6 dau vao OutputDelay ‘Théi gian tré truc tiép 6 dau ra IODelay ‘Thdi gian tré gitta dau vao - dau ra Lénh lién quan dén thdi gian tré totaldelay (sys) Xac dinh moi thdi gian tré cia toan hé delay2z (sys) Thay thdi gian tré bing diém cuc taiz =0 pade (sys, 7) Xap xi Pade véi bacn 3.2 Nguyén tac str dung m6 hinh LTI 3.2.1 Dac diém cla mé hinh LTI D6i tugng LT! Hoan toan khéng phu thuéc yao phudng thite mé ta hé (d6i tugng), MATLAB luén cat moi di liéu vé déi tugng LTI (LTI object) trong mét bién cd dac diém cau tric (Struct, muc 1.3) hoge truéng (Cell Arrays, myc 1.3). Dac diém cla déi tugng vay 1a sé duge thé hién qua nhiéu mang khée nhau véi tén cho truéc (EigName), 06 chita cde gid tri dude gan (HigValue). Viée truy cap vao tiing mang cy thé (vao dic diém) duge thyc hién bing lénh ™.™ hodc cde lénh get (ndi dac diém) hoac set (thay déi dic diém). Can luu ¥ rang, MATLAB khong phan biét chit viét to hay nhé déi vdi ten cia dic diém. C6 thé tra citu thém vé dac diém cha cae déi tugng LTI bang cach goi ltiprops. 80. 3 Control System Toolbox: Cong cy khéo sat - thiét ké hé théng diéu khién Xac lap va thay d6i dac diém ctia mé hinh . C6 ba kha nang gan gid tri BigValue cho dac diém EigName: 1, Sit dung cc lénh t £, zpk, ss hoc frd: Khi khai béo déi tugng LTI c6 thé két hgp gan dac diém bing cach khai luén tén EigName kém theo gia tri BigValue. sys = tf (num,den,Ts,'EigName’ , KigValue) 2. Sit dung lénh set: Bing lénh nay cé thé xac lap hay thay déi déng thdi nhiéu dac diém cua mé hinh. set (sys, 'EigNamel’ , EigValue1,' EigName2' , EigValue2) Lénh set (sys) khéng kém theo tham sé cé tac dung hién thi tat c& cdc dac diém cia déi tugng LTI énh “.“ cho phép thay dé diém (cé dang c&u trac) cua déi tugng mét cach rat don gidn. Vi dy, bing cach goi: sys _EigName = EigValue ta da gan gia tri ZigValue cho dic diém EigName cia mé hinh sys. H6i dc diém cia mé hinh C6 thé héi d&c diém cia mé hinh bang mét trong hai cach:, 1. Sti dung lénh get (sys, ' EigName' ): Lénh get cé tac dung nguge véi lénh set va cho biét gid én tai ca cde dae diém. Néu chi goi get (sys) , toan bé cae dic diém ciia sys sé duge hién thi hoac gan cho mot bién nao do. 2. Sit dung lénh “.*: Bang cach goi sys. EigName ta cé thé hién thi gia tri EigValue cia dic diém EigName cita hé sys, hay gan cho cdc bién khac. Vi du ‘Trude hét ta sit dung lénh té dé khai bao ham truyén dat cha hé sys. Dac diém ‘Notes’ cia sys nhan gia tri 1a chudi ky tu ’LTI-object’. Sau dé ta ding lénh set dé xac lap gid tri 0.05 cho chu ky trich mau Ts (ma trudc dé chvia khai bao bing t £), déng théi gin cho dc diém * InputName’ chudi ky ty ‘InputVariable’. Khi ta goi sys.OutputName = ‘OutputVariable’, dac diém ’ outputName’ sé nhan gid tri 1a chudi ky tu ‘ OutputVariable’. Ngoai ra, ta gan cho bién samplingtime chu ky trich mu Ts, gn cho bién notiz gid tr] Notes. Cudi cing ta hién thi toan b§ dic diém cilia sys bing lénh get.

You might also like