Matlab [full]

201
1 Matlab toμn tËp cμi ®Æt 1. MATLAB for WIN Yªu cÇu hÖ thèng HÖ thèng IBM hoÆc t¬ng thÝch 100% víi bé vi xö lÝ 486 Intel céng víi bé ®ång xö lÝ to¸n häc 487 ( ngo¹i trõ 486 DX cã bé xö lÝ bªn trong ), Pentium hoÆc Pentium Pro Processor. Microsoft Window 95 hoÆc Window NT. a) æ CD ROM - Bé ®iÒu phèi ®å ho¹ 8 bit vμ card mμn h×nh ( 256 mμu ®ång thêi ) - Kho¶ng trèng ®Üa ®ñ ®Ó cμi ®Æt vμ ch¹y c¸c tuú chän. Sù yªu cÇu ®Üa cøng thay ®æi tuú theo kÝch cì c¸c partition vμ c¸c tÖp trî gióp help ®îc cμi ®Æt trùc tiÕp theo tuú chän. Qu¸ tr×nh cμi ®Æt sÏ th«ng b¸o cho b¹n biÕt tØ mØ vÒ dung lîng ®Üa yªu cÇu. VÝ dô: Partition víi mét liªn cung mÆt 0 cÇn 25 MB cho riªng MATLAB vμ 50 MB cho c¶ MATLAB vμ HELP. Partition víi liªn cung 64 KB cÇn 115 MB cho riªng MATLAB vμ 250 MB cho c¶ MATLAB vμ HELP. b ) Bé nhí. Microsoft WIndow 95: 8 MB tèi thiÓu vμ 16 MB khuyÕn nghÞ. Microsoft WIN NT 3.51 hoÆc 4.0: 12 MB tèi thiÓu vμ 16 MB khuyÕn nghÞ. C¸c khuyÕn nghÞ Bé nhí phô vμo (Bé nhí bæ sung: additional Memory). VØ m¹ch t¨ng tèc ®å ho¹ bæ trî cho Microsoft Window. M¸y in trî gióp cho Microsoft Window. VØ m¹ch ©m thanh trî gióp cho Microsoft Window. Microsoft Word 7.0 hoÆc h¬n ( nÕu b¹n cã ý ®Þnh sö dông MATLAB NoteBook ). Tr×nh biªn dÞch Watcom C, Borland, Microsoft (x©y dùng file MEX). Netscape Navigator 2.0 hoÆc version cao h¬n hoÆc Microsoft Internet Explorer 3.0 ®Ó ch¹y MATLAB Help Desk. Qu¸ tr×nh cμi ®Æt 1. §Æt ®Üa vμo æ CD. Trªn WIN 95 ch¬ng tr×nh SETUP b¾t ®Çu ch¹y tù ®éng nÕu nhMATLAB cha ®îc cμi tõ tríc. Cßn kh«ng, nhÊn ®óp vμo biÓu tîng setup.exe ®Ó b¾t ®Çu qu¸ tr×nh cμi ®Æt. 2. ChÊp nhËn hay bá ®i nh÷ng khuyÕn c¸o vÒ cÊp ®¨ng kÝ phÇn mÒm trªn mμn h×nh. NÕu chÊp nhËn b¹n míi cã thÓ b¾t ®Çu qu¸ tr×nh cμi ®Æt. 3. Trªn Custumer Information, nhËp vμo tªn b¹n, ®Þa chØ cña b¹n. Tªn kh«ng ®îc qu¸ 30 kÝ tù. NhÊn nót NEXT. 4. NhÊn vμo c¸c hép trèng thμnh phÇn dÊu ‘v‘ nÕu nhb¹n muèn tuú chän ®ã vμ nhÊn tiÕp nÕu b¹n cã ý ®Þnh kh«ng muèn tuú chän ®ã ( cã thÓ thªm vμo sau nμy nÕu muèn ). Trªn mμn h×nh hiÓn thÞ C:\MATLAB lμ thmôc ®Ých mÆc ®Þnh cña qu¸ tr×nh cμi ®Æt. NÕu b¹n muèn cμi ®Æt vμo thmôc kh¸c hoÆc ®æi tªn thmôc th× b¹n lùa chän Browse. MATLAB cho Macintosh.

Transcript of Matlab [full]

  • 1. 1 Matlab ton tp ci t 1. MATLAB for WIN Yu cu h thng H thng IBM hoc tng thch 100% vi b vi x l 486 Intel cng vi b ng x l ton hc 487 ( ngoi tr 486 DX c b x l bn trong ), Pentium hoc Pentium Pro Processor. Microsoft Window 95 hoc Window NT. a) CD ROM - B iu phi ho 8 bit v card mn hnh ( 256 mu ng thi ) - Khong trng a ci t v chy cc tu chn. S yu cu a cng thay i tu theo kch c cc partition v cc tp tr gip help c ci t trc tip theo tu chn. Qu trnh ci t s thng bo cho bn bit t m v dung lng a yu cu. V d: Partition vi mt lin cung mt 0 cn 25 MB cho ring MATLAB v 50 MB cho c MATLAB v HELP. Partition vi lin cung 64 KB cn 115 MB cho ring MATLAB v 250 MB cho c MATLAB v HELP. b ) B nh. Microsoft WIndow 95: 8 MB ti thiu v 16 MB khuyn ngh. Microsoft WIN NT 3.51 hoc 4.0: 12 MB ti thiu v 16 MB khuyn ngh. Cc khuyn ngh B nh ph vo (B nh b sung: additional Memory). V mch tng tc ho b tr cho Microsoft Window. My in tr gip cho Microsoft Window. V mch m thanh tr gip cho Microsoft Window. Microsoft Word 7.0 hoc hn ( nu bn c nh s dng MATLAB NoteBook ). Trnh bin dch Watcom C, Borland, Microsoft (xy dng file MEX). Netscape Navigator 2.0 hoc version cao hn hoc Microsoft Internet Explorer 3.0 chy MATLAB Help Desk. Qu trnh ci t 1. t a vo CD. Trn WIN 95 chng trnh SETUP bt u chy t ng nu nh MATLAB cha c ci t trc. Cn khng, nhn p vo biu tng setup.exe bt u qu trnh ci t. 2. Chp nhn hay b i nhng khuyn co v cp ng k phn mm trn mn hnh. Nu chp nhn bn mi c th bt u qu trnh ci t. 3. Trn Custumer Information, nhp vo tn bn, a ch ca bn. Tn khng c qu 30 k t. Nhn nt NEXT. 4. Nhn vo cc hp trng thnh phn du v nu nh bn mun tu chn v nhn tip nu bn c nh khng mun tu chn ( c th thm vo sau ny nu mun ). Trn mn hnh hin th C:MATLAB l th mc ch mc nh ca qu trnh ci t. Nu bn mun ci t vo th mc khc hoc i tn th mc th bn la chn Browse. MATLAB cho Macintosh.

2. 2 MATLAB cho my Macintosh chy c trn: Mi my Macintosh c cu hnh mnh ( power Macintosh ). Mi Macintosh c trang b b vi x l 68040 ( b ng x l ton hc bn trong ). Mi my Macintosh c trang b b vi x l 68020 hoc 68030 v b ng x l ton hc 68881 hoc 68882. Yu cu ti thiu chy MATLAB. a cng trng ti thiu 26 MB, cn thm 60 MB cho h thng tu chon HELP trc tuyn. 16 MB cho phn vng b nh. CD ROM. Color Quick Draw. ---------------oOo---------------- Chng1 GII THIU chung Bygi bn ci t xong, chng ta hy xem MATLAB c th lm c nhng g. Trong phn ny chng ta s trnh by mt s nhng ng dng ca n; v trnh by tt c nhng ng dng ca MATLAB s rt di v tn thi gian. Nu bn c quyn hng dn ny, bn s thy MATLAB l ngn ng rt mnh gii quyt nhng vn quan trng v kh khn ca bn. N s rt hu ch khi bn c phn hng dn c bn v n s cung cp cho bn nhng kin thc c bn bn hiu r MATLAB v pht trin c nhng kh nng ca mnh sau ny. C l cch d nht hng dung v MATLAB l n c y cc c im ca my tnh c nhn: ging nh cc my tnh c bn, n lm tt c cc php tnh ton hc c bn nh cng, tr, nhn, chia; ging nh my tnh k thut, n bao gm: s phc, cn thc, s m, logarithm, cc php ton l- ng gic nh sine, cosine, tang; n cng ging nh my tnh c kh nng lp trnh, c th lu tr, tm kim li d liu, cng c th to, bo v v ghi trnh t cc lnh t ng php ton khi gii quyt cc vn , bn c th so snh logic, iu khin thc hin lnh m bo tnh ng n ca php ton. Ging nh cc my tnh hin i nht, n cho php bn biu din d liu di nhiu dng nh: biu din thng thng, ma trn i s, cc hm t hp v c th thao tc vi d liu thng cng nh i vi ma trn. Trong thc t MATLAB cn ng dng rt rng ri trong nhiu lnh vc v n cng s dng rt nhiu cc php tnh ton hc. Vi nhng c im v kh nng thn thin vi ngi s dng nn n d dng s dng hn cc ngn ng khc nh Basic, Pascal, C. N cung cp mt mi trng phong ph cho biu din d liu, v c kh nng mnh m v ho, bn c th to cc giao din ring cho ngi s dng(GUIs) gi quyt nhng vn ring cho mnh. Thm vo MATLAB a ra nhng cng c gii quyt nhng vn c bit, gi l Toolbox (hp cng c). V d Student Edition ca MATLAB bao gm c Toolbox iu khin h thng, Toolbox x l tn hiu, Toolbox biu tng ton hc. Ngoi ra bn c th to Toolbox cho ring mnh. Vi nhng kh nng mnh m, rng ln ca MATLAB nn n rt cn thit cho bn bt u t phn c bn. Sau y chng ta s nghin cu tng phn, v cun sch ny s gip bn hiu c chng. Trc tin, mt cch n gin nht l chng ta quan nim nh l mt my tnh c bn, tip theo l nh my tnh k thut v nh my tnh c th lp trnh c, cui cng l nh my tnh hin i nht. Bng cch quan nim ny bn s d dng hiu c nhng cch m MATLAB gii quyt nhng vn thng thng v xem MATLAB gii quyt nhng vn v s phc mm do nh th no. Tu thuc vo kin thc ca bn, bn c th tm thy nhng phn trong cun sch hng dn ny hng th hay bun t... 3. 3 Khi bn chy chng trnh MATLAB, n s to mt hoc nhiu ca s trn mn hnh ca bn, v ca s lnh (command) l ca s chnh bn giao tip vi MATLAB, ca s ny xut hin nh hnh di y. Cc k t EDU>> l du nhc ca MATLAB trong student MATLAB. Trong cc version khc ca MATLAB, du nhc n gin ch l >>. Khi ca s lnh xut hin, l ca s hot ng, con tr xut hin bn phi du nhc nh hnh di. Con tr v du nhc ny ca MATLAB bo rng MATLAB ang i thc hin lnh. Hnh 1.1 Ca s lnh ca Student MATLAB 1.1 Cc php ton n gin Ging nh my tnh n gin thng thng, MATLAB c th thc hin cc php ton n gin, nh v d di y: Mary n mt ca hng vn phng phm v mua 4 cc ty, 25 xu mt cc, 6 tp v, 52 xu mt tp, hai cun bng i, 99 xu mt cun. Hy tnh xem Mary mua bao nhiu vt, v tng s tin l bao nhiu? Nu dng my tnh thng thng, ta vo cc s: 4 + 6 + 2 = 12 ( vt) 4x25 + 6x52 + 2x99 = 610 (xu) Hnh 1.2 Ca s lnh ca MATLAB version 5.2 Trong MATLAB chng ta c th gii quyt vn ny theo nhiu cch. Trc tin ging nh my tnh trn, chng ta c th tnh: >> 4 + 6 + 2 ans= 12 >> 4*25 + 6*52 + 2*99 ans= 610 Ch rng MATLAB khng ch n nhng khong trng, cho tt c cc phn, v php nhn c mc u tin cao hn php cng. V mt ch khc l MATLAB gi kt qu ans (vit tt ca answer) cho c hai php tnh. Nh ni trn, vn trn c th gii quyt bng cch cha cc thng tin vo bin ca MATLAB: >> erasers = 4 erasers= 4 >> pads = 6 pads= 6 >> tape = 2; >> iterms = erases + pads + tape iterms= 12 >> cost = erases*25 + pads*52 + tape*99 cost= 4. 4 610 y chng ta to 3 bin MATLAB: erases, pads, tape cha s lng mi loi vt. Sau khi vo cc gi tr cho cc bin ny, MATLAB hin th kt qu ra mn hnh, tr trng hp bin tape. Du hai chm ng sau cu lnh >> tape = 2; thng bo cho MATLAB nhn gi tr gn nh- ng khng hin th ra mn hnh. Cui cng khc vi gi kt qu ans, chng ta yu cu MATLAB gi kt qu tng s cc vt l iterms, v tng s tin l cost. Ti mi bc MATLAB u a ra cc thng tin. V c lu gi cc bin nn chng ta c th yu cu MATLAB tnh gi tr trung bnh cho mi vt: >> everage_cost = cost/iterms everage_cost= 50.8333 Bi v everage cost c hai t, m MATLAB yu cu bin ch c mt t, nn chng ta dng du gch di ni hai t ny thnh mt t. Ngoi cc php tnh trn, MATLAB cn c mt s php tnh c bn khc nh bng di y: Php tnh Biu tng V d Php cng, a + b + 5 + 3 Php tr, a - b - 7 - 4 Php nhn, a.b * 18*24 Php chia, ab / hoc56/8 = 8 56 Php lu tha, ab ^ 5^2 Trong cc php ton trn c mc u tin khc nhau, khi tnh t tri sang phi ca mt dng gm nhiu lnh th php ton lu tha c mc u tin cao nht, tip theo l php nhn v php chia c mc u tin bng nhau cui cng l php cng v php tr cng c mc u tin bng nhau. 1.2 Khng gian lm vic ca MATLAB Cng nh bn lm vic vi ca s Lnh, MATLAB nh cc lnh bn g vo cng nh cc gi tr bn gn cho n hoc n c to ln. Nhng lnh v bin ny c gi l lu gi trong khng gian lm vic ca MATLAB, v c th c gi li khi bn mun. V d, kim tra gi tr ca bin tape, tt c nhng g bn phi lm l yu cu MATLAB cho bit bng cch nh vo tn bin ti du nhc: >> tape tape= 2 Nu bn khng nh tn bin, bn c th yu cu MATLAB cho danh sch cc bin bng cch dnh lnh who t du nhc lnh: >> who Your variables are: ans cost iterms tape average_cost erasers pads Ch rng MATLAB khng a ra gi tr ca tt c cc bin, nu bn mun bit gi tr, bn nh vo tn bin ti du nhc lnh ca MATLAB. 5. 5 gi li cc lnh bn dng, MATLAB dng cc phm mi tn ( ) trn bn phm ca bn. V d gi li lnh bn g vo lc gn hin ti nht, bn nhn phm mi tn , tip tc nhn phm ny, n s li gi tip lnh trc , Nu bn dng phm mi tn n s gi li lnh t lnh u tin cho n lnh gn hin ti nht. Cc phm mi tn v c th dng thay i v tr con tr trong dng lnh ti du nhc ca MATLAB, nh vy chng ta c th sa dng lnh, thm na, chng ta c th dng chut cng vi b nh m ct, copy, dn, v sa vn bn ti du nhc ca dng lnh. 1.3 Bin Ging nh nhng ngn ng lp trnh khc, MATLAB c nhng quy nh ring v tn bin. Tr- c tin tn bin phi l mt t, khng cha du cch, v tn bin phi c nhng quy tun th nhng quy tc sau: Quy nh v tn bin Tn bin c phn bit ch hoa ch thng. V d: Iterms, iterms, itErms, v ITERMS l cc bin khc nhau Tn bin c th cha nhiu nht 31 k t, cn cc k t sau k t th 31 b l i. V d: howaboutthisveriablename Tn bin bt u phi l ch ci, tip theo c th l ch s, s gch di V d: how_about_this_veriable_name, X51483. a_b_c_d_e K t chm cu khng c php dng v n c nhng ngha c bit Cng vi nhng quy nh trn, MATLAB c nhng bin c bit trong bng sau: Cc bin c bit Gi tr ans Tn bin mc nh dng tr v kt qu pi = 3.1415.. Eps S nh nht, nh vy dng cng vi 1 cs nh nht ln hn 1 flops S ca php ton s thc inf ch s v cng nh kt qu ca 1/0 NaN hoc nan Dng ch s khng xc nh nh kt qu ca 0/0 i (v) j i = j = nargin S cc i s a vo hm c s dng narout S cc i s hm a ra realmin S nh nht c th c ca s thc realmax S ln nht c th c ca s thc Nh bn c th to mt bin ca MATLAB, v bn cng c th gn li gi tr cho mt hoc nhiu bin. V d: >> erases = 4; >> pads = 6; >> tape = 2; >> iterms = eases + pads + tape iterms= 12 >> erases = 6 erases= 6 >> iterms iterms= 6. 6 12 y chng ta s dng li v d trn, chng ta tm c s vt m Mary mua sau chng ta thay i s cc ty ln 6, gi tr ny s ln gi tr trc ca n l 4. Khi bn lm nh vy, gi tr ca iterms vn khng thay i, v MATLAB khng tnh li iterms vi gi tr mi ca erases. Khi MATLAB thc hin mt php tnh, n ly gi tr ca cc bin hin thi, nn nu bn mun tnh gi tr mi ca iterms, cost, average_cost, bn gi li cc lnh tnh cc gi tr . i vi cc bin c bit trn, n c sn gi tr, nh vy khi bn khi ng MATLAB; nu bn thay i gi tr ca n th nhng gi tr c bit ban u s b mt cho n khi bn xo bin i hoc khi ng li MATLAB. Do bn khng nn thay i gi tr ca bin c bit, tr khi n thc s cn thit. Cc bin trong khng gian lm vic ca MATLAB c th b xo khng iu kin bng cch dng lnh clear. V d: >> clear erases ch xo mt bin erases >> clear cost iterms xo c hai bin cost v iterms >> clear cl* du * ch rng xo tt c cc bin bt u bng hai k t cl. >> clear xo tt c cc bin trong khng gian lm vic!. Bn s khng c hi xc nhn cu lnh ny v tt c cc bin b xo khng th khi phc li. C th ni rng dng lnh clear rt nguy him, v vy khi dng lnh ny bn nn dng ng v tr. 1.4 Cu gii thch (comment) v s chm cu Tt c cc vn bn ng sau k hiu phn trm (%) u l cu gii thch. V d: >> erases = 4 % S cc ty. erases= 4 Bin erases c gn gi tr l 4, cn tt c k hiu phn trm v vn bn ng sau n u b l i. c im ny gip cho chng ta d theo di cng vic chng ta ang lm. Nhiu lnh c th t trn cng mt hng, chng cch nhau bi du phy hoc du chm phy, nh: >> erases = 4, pads = 6; tape = 2 erases= 4 tape= 2 du phy yu cu MATLAB hin th kt qu trn mn hnh; cn du chm phy l khng hin th kt qu trn mn hnh. >> average_cost = cost/ ... iterms average_cost= 50.83333 7. 7 Nh v d trn, ta c th dng du ba chm (...) ch cu lnh c tip tc hng di, php tnh thc hin c khi du ba chm ngn cch gia ton t v bin, ngha l tn bin khng b ngn cch gia hai hng: >> average_cost = cost/ it... erms ??? age_cost = cost/iterms Missing operator, coma, or semicolon. ging nh vy, trng thi ca li gii thch khng th tip tc: >> % Comments cannot be continued ... >> either ??? Undefined function or variable either. Bn c th dng chng trnh bng cch nhn ng thi Ctrl v C. 1.5 S phc Mt trong nhng c im mnh m nht ca MATLAB l lm vic vi s phc. S phc trong MATLAB c nh ngha theo nhiu cch, v d nh sau: >> c1 = 1 - 2i % Chn thm k t i vo phn o. c1= 1.0000 - 2.0000i >> c1 = 1 - 2j % j y tng t nh i trn. c1= 1.0000 - 2.0000i >> c2 = 3*(2-sqrt(-1)*3) c2= 6.0000 - 9.0000i >> c3 = sqrt(-2) c3= 0 + 1.4142i >> c4 = 6 + sin(.5)*i c4= 6.0000 + 0.4794i >> c5 = 6 + sin(.5)*j c5= 6.0000 + 0.4794i Trong hai v d cui, MATLAB mc nh gi tr ca i = j = dng cho phn o. Nhn vi i hoc j c yu cu trong trng hp ny, sin(.5)i v sin(.5)j khng c ngha i vi MATLAB. Cui cng vi cc k t i v j, nh trong hai v d u trn ch lm vic vi s c nh, khng lm vic c vi biu thc. Mt s ngn ng yu cu s iu khin c bit cho s phc khi n xut hin, trong MATLAB th khng cu nh vy. Tt c cc php tnh ton hc u thao tc c nh i vi s thc thng thng: >> c6 = (c1 + c2)/c3 % T cc d liu trn c6= 8. 8 -7.7782 - 4.9497i >> check_it_out = i^2 % Bnh phng ca i phi l -1 check_it_out= -1.0000 + 0.0000i trong v d ny ch cn li phn thc, phn o bng khng. Chng ta c th dng hm real v imag kim tra tng phn thc v o. Chng ta c th biu din s phc dng ln v gc (dng cc): M M.ej = a+bi trn s phc c biu din bng ln M v gc , quan h gia cc i lng ny v phn thc, phn o ca s phc biu din di dng i s l: M = = tan-1 (b/ a) a = Mcos b = Msin Trong MATLAB, chuyn t dng cc sang dng i s, dng cc hm real, imag, v angle: >> c1 % Gi li c1 c1= 1.0000 - 2.0000i >> M_c1 = abs(c1) % Tnh argument ca s phc M_c1= 2.2361 >> angle_c1 = angle(c1) % Tnh gc ca s phc theo radian angle_c1= -1.1071 >> deg_c1 = angle_c1*180/ pi % Chuyn t radian sang -63.4349 >> real_c1 = real(c1) % Tnh phn thc real_c1= 1 >> imag_c1 = imag(c1) % Tnh phn o imag_c1= -2 -------------------oOo------------------ 9. 9 Chng2 CC C tnh K THUT Ging nh hu ht cc my tnh k thut, MATLAB a ra rt nhiu cc hm ton hc, k thut thng dng, ngoi ra MATLAB cn cung cp hng trm cc hm c bit v thut ton, n rt hu ch gii quyt cc vn khoa hc. Tt c cc hm ny c lit k trong online help, cn y ch cp n nhng hm thng dng nht. 2.1 Cc hm ton hc thng thng Cc hm ton hc ca MATLAB c lit k trong bng di y, chng u c chung mt cch gi hm nh v d di y: >> x = sqrt(2)/2 x= 0.7071 >> y = sin(x) y= 0.7854 >> y_deg = y*180/pi y_deg= 45.0000 Nhng lnh ny tm mt gc (tnh bng ) khi bit gi tr hm sin ca n l / 2. Tt c cc hm lin quan n gc ca MATLAB u lm vic vi radian. Bng cc hm: Cc hm thng thng abs(x) Tnh argument ca s phc x acos(x) Hm ngc ca cosine acosh(x) Hm ngc ca hyperbolic cosine angle(x) Tnh gc ca s phc x asin(x) Hm ngc ca sine asinh(x) Hm ngc ca hyperbolic sine atan(x) Hm ngc ca tangent atan2(x, y) L hm arctangent ca phn thc ca x v y atanh(x) Hm ngc ca hyperbolic tangent ceil(x) Xp x dng v cng conj(x) S phc lin hp cos(x) Hm cosine ca x cosh(x) Hm hyperbolic cosine ca x exp(x) Hm ex fix(x) Xp x khng floor(x) Xp x m v cng gdc(x, y) c s chung ln nht ca hai s nguyn xv y 10. 10 imag(x) Hm tr v phn o ca s phc lcm(x, y) Bi s chung nh nht ca hai s nguyn x v y log(x) Logarithm t nhin log10(x) Logarithm c s 10 real(x) Hm tr v phn thc ca x rem(x, y) Phn d ca php chia x/ y round(x) Hm lm trn v s nguyn t sign(x) Hm du: tr v du ca argument nh: sign(1.2)=1; sign(-23.4)=-1; sign(0)=0 sin(x) Hm tnh sine ca x sinh(x) Hm tnh hyperbolic sine ca x sqrt(x) Hm khai cn bc hai tan(x) Tangent tanh(x) Hyperbolic tangent >> 4*atan(1) % Mt cch tnh xp x gi tr ca pi ans= 3.1416 >> help atant2 % Yu cu gip i vi hm atan2 ATAN2 four quadrant inverse tangent ATAN2(Y, X) is the four quadrant arctangent of the real parts of the elements of X and Y. -pi 180/pi*atan(-2/ 3) ans= -33.69 >> 180/pi*atan2(2, -3) ans= 146.31 >> 180/pi*atan2(-2, 3) ans= -33.69 >> 180/pi*atan2(2, 3) ans= 33.69 >> 180/pi*atan2(-2, -3) ans= -146.31 Mt s v d khc: >> y = sqrt(3^2 + 4^2) % Tnh cnh huyn ca tam gic pitago 3-4-5 y= 5 >> y = rem(23,4) % 23/4 c phn d l 3 y= 3 >> x = 2.6,y1 = fix(x),y2 = floor(x),y3 = ceil(x),y4 = round(x) 11. 11 x= 2.6000 y1= 2 y2= 2 y3= 3 y4= 3 >> gcd(18,81) % 9 l c s chung ln nht ca 18 v 81 ans= 9 >> lcm(18,81) % 162 l bi s chung ln nht ca 18 v 81 ans= 162 V d: c lng chiu cao ca ngi nh Vn : Gi thit bit khong cch t ngi quan st n ngi nh l D, gc t ngi quan st n ngi nh l ; chiu cao ca ngi quan st l h. Hi ngi nh cao bao nhiu? Gii php: Ta biu din kch thc nh hnh 2.1: (khng thy) Hnh 2.1 Ngi nh c chiu cao l H + h, H l chiu di ca mt cnh ca tam gic, chiu di ny c th tnh c bng cng thc quan h gia gc v cnh ca tam gic: tan() = T ta c chiu cao ca ngi nh l h + H = h + D.tan() Nu h =2meters, D =50meters, v l 60o , MATLAB s a ra kt qu l: >> h = 2 h = 2 >> theta = 60 theta = 60 >> D = 50 D = 50 >> buiding_height = h+D*atan(theta*pi/180) buiding_height = 54.3599 V d s suy gim do phn r 12. 12 Vn : S phn r phn t polonium c chu k phn r l 140 ngy, tc l sau 140 ngy th lng poloniun cn li l 1/2 lng ban u. Hi nu ban u c 10 grams polonium, n s cn li bao nhiu sau 250 ngy? Gii quyt: Sau 1 chu k phn r hoc 140 ngy, cn li 10x0.5 = 5 grams; sau 2 chu k phn r hoc 280 ngy, cn li 5x0.5 = 10x(0.5)2 = 2.5grams, t ta c kt qu nm trong khong 5 v 2.5 grams, v ta c cng thc tnh phn cn li sau khong thi gian bt k: khi lng cn li = khi lng ban u x(0.5)thi gian/ chu k v d thi gian l 250 ngy, v kt qu MATLAB a ra l: >> initial_amount = 10; % Khi lng ban u >> half_life = 140; % Chu k phn r >> time = 250; % Thi gian tnh khi lng >> amount_left = initial_*0.5^(time/half_life) amount_left= 2.9003 V d tnh ton v li xut Vn : Bn ng mua t mi vi gi 18,500 dollars. Ngi bn t a ra hai gii php v ti chnh l: th nht, tr 2.9% li xut ca s tin trn trong vng 4 nm. Th hai l tr 8.9% li xut ca s tin trn trong vng 4 nm v gi bn c gim i mt khon l 1500 dollars. Hi vi gii php no th bn mua c t vi gi r hn? Gii php: S tin tr hng thng l P, trn tng s tin l A dollars, t s li xut hng thng l R, tr trong M thng: P = A Tng s tin phi tr s l: T = PxM Gii php MATLAB a ra l: >> format bank % Dng dng hin th ngn hng >> A = 18500; % Tng s tin >> M = 12*4; % S thng phi tr li >> FR = 1500; % Tin gim gi ca nh my >> % Gii php th nht >> R = (2.9/100)/12; % T l li xut hng thng >> P = A*(R*(1+R)^M/((1+R)^M - 1)) % Khon tin phi tr hng thng P= 408.67 >> T1 = P*M % Tng gi tr ca t T1= 19616.06 >> % Gii php th hai >> R = (8.9/100)/12; % T l li xut hng thng >> P = (A-FR)*(R*(1 + R)^M/((1+R)^M - 1)) % Tin phi tr hng thng P= 422.24 >> T2 = P*M % Tng gi tr ca t T2= 13. 13 20267.47 >> Diff = T2 - T1 Diff= 651.41 Nh vy ta c gii php th nht gi r hn gii php th hai. V d: Vn nng acid Vn : Nh mt phn ca qu trnh sn xut b phn ca vt c ti mt nh my t ng, b phn c nhng trong nc lm ngui, sau nhng trong bn ng dung dch acid lm sch. Trong ton b ca qu trnh nng acid gim i khi cc b phn c ly ra khi bn acid v khi nhng b phn ca vt c vo bn th mt lng nc cn bm trn vt c khi nhng b trc cng vo theo v khi nhc ra khi bn mt lng acid bm theo vt. m bo cht lng th nng acid phi khng c nh hn mt lng ti thiu. Bn hy bt u vi nng dung dch l 90% th nng ti thiu phi l 50%. Lng cht lng thm vo v ly i sau mi ln nhng dao ng trong khong t 1% n 10%. Hi bao nhiu b phn c th nhng vo b dung dch acid trc khi nng ca n gim xung di mc cho php? Gii php: Ban u nng acid l initial_con = 90% = acid/ (acid + water) sau ln nhng th nht nng acid cn: con = = = = acid l lng acid ban u trong dung dch, water l lng nc ban u trong dung dch, lost l lng phn trm nc thm vo. S acid cn li trong dung dch sau ln nhng th nht l: acid_left = Ngha l, khi nhng ln th hai nng dung dch s l: con = = = Tip tc qu trnh ny, sau n ln nhng, nng acid l: con = Nu nng acid cn li l mc ti thiu chp nhn c, s ln nhng cc i s l mt s nguyn bng hoc nh hn n: n = 14. 14 Trong MATLAB gii php s l: >> initial_con = 90 initial_con= 90 >> min_con = 50 min_con= 50 >> lost = 0.01; >> n = floor(log( initial_con/min_con)/log(1+lost)) n= 59 Nh vy c th nhng 59 ln trc khi nng acid gim xung di 50%. Ch hm floor dng lm trn s n xung s nguyn gn nht, v dy ta cng c th dng hm logarithm c s 10 v logarithm c s 2 thay cho hm logarithm t nhin trn. -------------------oOo---------------------- chng 3 NHNG C IM CA CA S LNH Ca s lnh (comand) ca MATLAB c rt nhiu nhng c im cn ch , mt s chng c gii thiu chng trc, v sau y chng ta tm hiu r hn v chng. 3.1 Qun l khng gian lm vic ca MATLAB Cc d liu v bin c to ln trong ca s lnh, c lu trong mt phn gi l khng gian lm vic ca MATLAB. Mun xem tn bin trong khng gian lm vic ca MATLAB ta dng lnh who: >> who Your variables are: D h buiding_height theta Cc bin ny c dng trong v d c lng chiu cao ngi nh. xem chi tit hn v cc bin ta dng lnh whos: >> whos Name Size Bytes Class D 1x1 8 double array buiding_height 1x1 8 double array h 1x1 8 double array theta 1x1 8 double array 15. 15 Grand total is 4 elements using 32 bytes Mi bin c lit k vi kch c ca n, s bytes s dng, v cc lp ca chng (class), trong v d c bit ny, cc bin u l s n, c chnh xc hai s sau du phy. Lnh whos c bit c ch khi nghin cu n phn mng v cc kiu d liu khc. Ngoi cc hm ny, trong mc Show Workspace trong bng chn file to ra ca s GUI gi l Workspace Browser, n cha cc thng tin tng t nh lnh whos. Thm na n to cho bn kh nng xo, lm sch cc bin m bn chn. Ca s ny cng c th to bng cch nhn nt Workspace Browser, trn thanh cng c ca ca s lnh. Nh trnh by trn, lnh clear c th xo bin t khng gian lm vic ca MATLAB. V d: >> clear h D % Xo cc bin h v D >> who Your variables are: buiding_height theta Cc tu chn khc ca hm clear chng ta c th tm hiu thm bng lnh help: >> help clear CLEAR Clear variables and functions from memory. CLEAR removes all variables from the workspace. CLEAR VARIABLES does the same thing. CLEAR GLOBAL removes all global variables. CLEAR FUNCTIONS removes all compiled M-functions. CLEAR MEX removes all links to MEX-files. CLEAR ALL removes all variables, globals, functions and MEX links. CLEAR VAR1 VAR2 ... clears the variables specified. The wildcard character '*' can be used to clear variables that match a pattern. For instance, CLEAR X* clears all the variables in the current workspace that start with X. If X is global, CLEAR X removes X from the current workspace, but leaves it accessible to any functions declaring it global. CLEAR GLOBAL X completely removes the global variable X. CLEAR FUN clears the function specified. If FUN has been locked by MLOCK it will remain in memory. CLEAR ALL also has the side effect of removing all debugging breakpoints since the breakpoints for a file are cleared whenever the m-file changes or is cleared. 16. 16 Use the functional form of CLEAR, such as CLEAR('name'), when the variable name or function name is stored in a xu. See also WHO, WHOS, MLOCK, MUNLOCK. Cui cng, khi lm vic trong khng gian lm vic ca MATLAB, n thng thun tin ghi hoc in mt bn sao cng vic ca bn, lnh diary ghi d liu ngi dng a vo v ca s lnh v a ra file vn bn dng m ASCII c tn l diary trong th mc hin ti. >> diary frame % ghi d liu vao file frame >> diary off % kt thc lnh diary v ng file Khi ca s lnh c chn, chn print... t bng chn file in mt bn ca ca s lnh, bn c th dng chut la chn phn mnh mun ghi, chn Pint Selection... t bng chn file, in mt phn vn bn la chn. 3.2 Ghi v phc hi d liu nh cc bin MATLAB c th ghi v gi li d liu t file trong my tnh ca bn. Mc Workspace as... trong bng chn file m hp chun hi thoi ghi tt c cc bin hin ti. Ging nh- vy, trong mc Load Workspace trong bng chn file m hp hi thoi gi li tt c cc bin m ta ghi li t khng gian lm vic trc, n khng lm mt cc bin ny trong khng gian lm vic hin ti. Khi ta gi li cc bin, m cc bin ny trng tn vi cc bin trong khng gian lm vic ca MATLAB, n s thay i gi tr ca cc bin theo gi tr ca cc bin gi ra t file. Nu bng chn file khng thun tin hoc khng p ng c nhng yu cu ca bn, MATLAB cung cp hai lnh save v load, n thc hin mt cch mm do hn, trong trng hp c bit, lnh save cho php bn ghi mt hoc nhiu hn mt bin tuy theo s la chon ca bn. V d: >> save Cha tt c cc bin trong MATLAB theo kiu nh phn trong file MATLAB.mat >> save data cha tt c cc bin trong MATLAB theo kiu nh phn trong fle data.mat. >> save data erasers pads tape -ascii Ghi cc bin erasers, pads, tape trong dng m ASCII 8 s trong file data. File dng m ASCII c th sa i bng bt c chng trnh son tho vn bn no, ch rng file ASCII khng c phn m rng .mat. >> save data erasers pads tape -ascii -double Ghi cc bin erasers, pads, tape dng ASCII 16 s trong file data. Lnh load cng dng vi c php tng t. 3.3 Khun dng hin th s Khi MATLAB hin th kt qu dng s, n tun theo mt s quy nh sau: 17. 17 Mc nh, nu kt qu l s nguyn th MATLAB hin th n l mt s nguyn, khi kt qu l mt s thc th MATLAB hin th s xp x vi bn ch s sau du phy, cn cc s dng khoa hc th MATLAB hin th cng ging nh trong cc my tnh khoa hc. Bn c th khng dng dng mc nh, m to mt khun dng ring t mc Preferences, trong bng chn file, c th mc nh hoc nh dng xp x ti du nhc. Chng ta dng bin average_cost ( trong v d trc) lm v d, dng s ny l: Lnh ca MATLAB Average_cost Ch thch format short 50.833 5 s format long 50.83333333333334 16 s format short e 5.0833e+01 5 s vi s m format long e 5.083333333333334e+01 16 s vi s m format short g 50.833 chnh xc hn format short hoc format short e format long g 50.83333333333333 chnh xc hn format long hoc format long e format hex 40496aaaaaaaaaab h c s 16 format bank 50.83 hai s h 10 format + + dng, m hoc bng khng format rat 305/ 6 dng phn s Mt ch quan trng l MATLAB khng thay i s khi nh li khun dng hin th c chn, m ch thay i mn hnh thay i. ---------------oOo----------------- Chng 4 Script M_files Mt vn n gin l, yu cu ca bn ti du nhc ca MATLAB trong ca s lnh l nhanh v hiu qu. Tuy nhin v s lnh tng ln, hoc khi bn mun thay i gi tr ca mt hoc nhiu bin v thc hin li mt s lnh vi gi tr mi, nu c nh lp li ti du nhc ca MATLAB th s tr ln bun t, do vy MATLAB cung cp mt gii php cho vn ny l: n cho php bn thay th cc lnh ca MATLAB bng mt file vn bn n gin, v yu cu MATLAB m file v thc hin lnh chnh xc nh l nh ti du nhc ca MATLAB ti ca s lnh, nhng file ny gi l script file, hoc n gin l M_file. Danh t "script" ch rng thc t MATLAB c t file kch bn tm thy trong file. Danh t "M_file" ch rng tn script file phi kt thc bng phn m rng l '.m' nh v d example1.m. to mt script M_file, chn New trong bng chn file v chn M_file. Th tc ny s to ra mn hnh son tho, v bn c th nh c cc lnh ca MATLAB trong . V d di y l cch lnh trong v d c lng chiu cao ngi nh trc: function example1 % example1.m V d c lng chiu cao ngi nh h = 2 theta = 60 D = 50; building_height = h + D*tan(theta*pi/180) 18. 18 Bn c th ghi v lu gi file nybng cch chn Save t bng chn file. Khi bn ghi ln file ch phi nh tn file trng vi tn hm (example) khng cn nh vo phn m rng, MATLAB t gn vo cho n. Khi t du nhc ta c th nh: >> example1 h= 2 theta= 60 building_height= 54.3599 Khi MATLAB din gii cc trng thi ca example1 trn, n s c ni k hn chng sau, nhng mt cch ngn gn, MATLAB dng cc trng thi ca bin MATLAB hin ti v to ln cc lnh ca n, bt u bng tn M_file. Ngha l, nu example1 khng phi l bin hin ti, hoc mt lnh MATLAB xy dng ln, MATLAB m file example1.m (nu n tm thy) v tnh gi tr cc lnh tm thy ch khi chng ta vo cc thng s chnh xc ti du nhc ca ca s lnh. Nh thy lnh trong M_file truy cp n tt c cc bin trong khng gian lm vic ca MATLAB, v tt c cc bin trong M_file tr thnh mt phn ca khng gian lm vic. Bnh thng cc lnh c trong M_file khng c hin th nh l n c tnh trong ca s lnh, nhng lnh echo on yu cu MATLAB hin th hoc lp li lnh i vi ca s lnh nh chng ta c v tnh. Tip theo bn c th on c lnh echo off lm g. Ging nh vy, lnh echo lp li bi chnh n lm thay i chnh trng thi ca n. Vi c im ny ca M_file bn c th thay i li ni dung ca file, v d bn c th m M_file example1.m thay i li cc gi tr ca h, D, hoc theta, ghi li file v yu cu MATLAB tnh li lnh trong file. Thm na, bng cch to M_file, cc lnh ca bn c lu trn a v c th ng dng v sau khi bn cn. Nhng ng dng ca ch dn ca MATLAB gip chng ta hiu c khi dng script file nh trong example1.m, ch dn cho php bn lu gi cng cc lnh trong script file, v vy bn nh - c nhng lnh lm g khi bn nhn li file sau y. Thm na, du chm phy ng sau cu lnh khng cho hin th kt qu, t bn c th iu chnh script file a ra nhng kt qu cn thit. V nhng ng dng ca script file, MATLAB cung cp mt s hm c bit c ch khi bn s dng trong M_file: Cc hm M_file disp(ans) Hin th cc kt qu m khng hin tn bin echo iu khin ca s lnh lp li cc lnh ca script file input S dng du nhc a d liu vo keyboard Trao iu khin tm thi cho bn phm pause Dng li cho n khi ngi dng nhn mt phm bt k pause(n) Dng li n giy waitforbuttonpress Dng li cho n khi ngi dng nhn chut hoc phm. Khi lnh ca MATLAB khng kt thc bng du chm phy, kt qu ca lnh c hin th trn ca s lnh cng vi tn bin. i lc n thun tin khi khng cho hin tn bin, trong MATLAB ta dng lnh disp thc hin vic ny: >> h % Cch truyn thng hin kt qu h= 2 >> disp(h) % Hin kt qu khng c tn bin 2 19. 19 gip bn son tho script file khi tnh ton cho nhiu trng hp, lnh input cho php bn to cu nhc vo d liu c an ton. V d example1.m vi nhng phn c sa: function example1 % example1.m V d c lng chiu cao ngi nh h = 2 theta = 60 D = input( Vo khong cch gia ngi v ngi nh: ) building_height = h + D*tan(theta*pi/180) chy file ny: >> example1 h= 2 theta= 60 Vo khong cch gia ngi v ngi nh: 60 D= 60 building_height= 64.8319 v d trn ta g vo s 60 v n Enter. Nhng lnh sau s tnh vi gi tr ca D l 60. Ch rng hm input c th dng vi cc php ton khc ging nh i vi cc hm thng thng khc, hm input cng chp nhn i vi bt c kiu biu din s no, v d ta vo mt s l: +5. >> example1 h= 2 theta= 60 Vo khong cch gia ngi v ngi nh: sqrt(1908)+5 D= 48.6807 building_height= 52.9783 xem nhng tc ng ca lnh echo, ta dng chng trong script file: echo on function example1 % example1.m V d c lng chiu cao ngi nh h = 2 theta = 60 D = input( Vo khong cch gia ngi v ngi nh: ) building_height = h + D*tan(theta*pi/180) echo off 20. 20 chy chng trnh ta c: >> example1 % example1.m V d c lng chiu cao ngi nh h = 2 h= 2 theta = 60 theta= 60 D = input( Vo khong cch gia ngi v ngi nh: ) Vo khong cch gia ngi v ngi nh: 60 building_height = h + D*tan(theta*pi/180) building_height= 64.8319 echo off Nh bn thy trong trng hp ny, lnh echo lm cho kt qu kh c hn, nhng ngc li lnh n c th rt c ch khi g ri nhiu script file ng dng. ------------------oOo------------------- Chng 5 QUN L Tp MATLAB cung cp mt s cc hm file h thng v cc lnh cho php bn lit k tn file, xem, v xo M_file, hin th v thay i th mc cha n. Mt s tng kt cc lnh c wa ra trong bng d- i y. Thm vo bn c th xem v sa ng dn ca MATLAB (matlabpath). Nhng ng dn ny ch cho MATLAB ni cha script file v hm M_file trong my tnh ca bn. C rt nhiu tr- ng hp cc hm trong MATLAB l cc M_file n gin c cha trong a, nhng MATLAB thng bo khng bit hm ny, nh vy do n khng tm c ng dn ca MATLAB, bn cn phi thay i li ng dn: Cc hm h thng file addpath dir1 Thm th mc dir1 vo bt u ca ng dn cd Hin th th mc hin thi p = cd Gn th mc lm vic hin thi cho bin p cd path Thay i th mc a ra bng ng dn delete test.m Xo M_file test.m dir Danh sch tt c cc file trong th mc hin thi d = dir Tr li file trong th mc hin thi trong cu trc bin d edit test M test.m son tho, ging nh Open trong bng chon file exist(cow,file) Kim tra s tn ti ca file cow.m trong ng dn exist(d,dir) Kim tra s tn ti ca th mc d trong ng dn filesep Tch file nh trong Windows95 v NT, : trn Macintosh fullfile To tn file vi ng dn y 21. 21 inmem Danh sch hm M_file, gi ra t b nh ls Ging nh dir MATLABrc.m MATLAB ch khi ng script M_file, thc hin trc khi startup.m MATLABroot Tr ng dn th mc cho chng trnh thc hin MATLAB path Hin th hoc sa ng dn ca MATLAB (MATLABpath) pathdef.m Hm M_file, ni m mmatlabpath l ng pathsep Chia ng dn cho matlabpath pwd Ging nh cd rmpath dir1 B i th mc dir1 t ng dn matlabpath startup.m script M_file thc hin khi MATLAB khi ng tempdir Tn ca th mc tm thi tempname Tn ca file tm thi type test Hin ra M_file test.m trong ca s lnh what Tr li danh sch tt c M_file v MAT_file trong th mc hin thi which test Hin th ng dn th mc n test.m ng n ca MATLAB l danh sch ca tt c cc th mc lu tr cc file ca MATLAB. Hn na, nu bn to mt th mc ca M_file th ng dn ca n phi c thm vo matlabpath, nu khng th MATLAB khng th truy cp n cc file ca bn c, tr khi file t trong th mc hin thi. xem MATLAB s dng matlabpath nh th no, hy xem trng hp c m t trong bng sau:(Khng thy) ng dn ca MATLAB Khi bn g >> cow, MATLAB s lm nh sau: (1) Kim tra nu cow l mt bin trong khng gian lm vic ca MATLAB, nu khng th... (2) N kim tra nu cow l mt hm c xy dng, nu khng th... (3) N kim tra nu mt tn M_file cow.m tn ti trong th mc hin thi, nu khng th... (4) N kim tra nu cow.m tn ti bt c ni no trn ng dn ca MATLAB bng cch tm kim ng dn. Khi no s ph hp c tm thy th MATLAB chp nhn n. V d nh cow tn ti nh mt bin trong khng gin lm vic ca MATLAB, th MATLAB khng dng hm hoc bin c tn l cow. V vy bn trnh khng nn to bin c tn trng vi tn hm nh: >> sqrt = 1.2; >> sqrt(2); Nhng lnh trn s to ra li, bi v sqrt y khng phi l hm tnh cn bc hai, n l bin c gi tr l 1.2. Th tc ng dn cn c dng khi lnh load c dng. u tin MATLAB tm kim trong th mc hin ti, sau n tm theo ng dn ca MATLAB n file d liu. Thc t th tc tm kim ca MATLAB phc tp hn l trnh by trn rt nhiu v MATLAB dng rt nhiu file c phn m rng l .m . Hm M_file c th cha nhiu hn mt bin, th mc trong matlabpath c th c th mc con gi l private, v MATLAB cung cp chng trnh hng i tng vi cc ton t nh ngha li M_file trong th mc con, bt u bng k t @. Nu tt c nhng c im ny c cng thm vo bng trn th n s y hn, nhng s rt kh hiu. Nu bn mun nghin cu thm v phn ny th xem cc ti liu cung cp trong a CD. Nu bn c M_file hoc MAT_file cha trong th mc khng phi trong ng n ca MATLAB v khng trong th mc hin ti, MATLAB khng th tm thy chng. C hai gii php cho vn ny l: 22. 22 (1)_To th mc thit k thnh th mc hin ti, dng lnh cd hoc pwd t trong bng trc. (2)_Cng thm th mc thit k trong ng dn ca MATLAB . Cui cng n rt d dng khi ta s dng phng php duyt qua cc ng dn (path browser) hoc cc lnh trong ca s lnh path v addpath. dng path browser, ta chn set path t bng chn file hoc nhn chut trn nt path browser trn thanh cng c ca ca s lnh. Lm nh vy ta s - c mn hnh ging nh hnh 5.1: Ging nh thit k cc GUI, n lin quan trc tip khi ta s dng. ng dn matlabpath c hin th bn tri, th mc con nm trong ng dn c chn nm bn tri, cn cc nt thay i - ng dn nh thm ng dn mi (add to path), loi b ng dn (remove from path) pha trn. ghi li s thay i ta chn save path t bng chn file ca ca s path browser trc khi ng GUI. Hnh 5.1 path browser trong MATLAB 5.2 Ca s path browser trong MATLAB 5.0 khng khc lm so vi MATLAB 5.2, ch yu l cc nt thay i ng dn trong MATLAB 5.2 th n t trn nh cn MATLAB 5.0 n c t bn phi. ghi li s thay i ng dn trong MATLAB 5.0 trc khi ng GUI ta nhn nt save settings. 23. 23 Hnh 5.2 path browser trong MATLAB to Student 5.1 MATLAB khi khi ng Khi khi ng MATLAB, n to ra hai script M_file l matlabrc.m v startup.m, trong atlabrc.m i cng MATLAB, v nhn chung l khng c sa n. Cc lnh trong M_file to mt cu hnh mc nh v kch c ca ca s v v tr ca n, cng nh cc c im mc nh khc trong Windows95, WindowNT. ng dn mc nh c to bng cch gi script file pathdef.m t matlabrc.m. Trong cc phn, cc lnh trong matlabrc.m kim tra s tn ti ca script M_file startup.m trong ng dn ca MATLAB nu n tn ti, cc lnh trong n c thc hin. S la chn M_file startup.m cha cc lnh c nhng c im ring i vi MATLAB. V d n rt thng thng nu ta thm mt hoc hn cc lnh path hoc addpath trong startup.m chn thm cc th mc vo trong ng dn ca MATLAB. Ging nh vy, mc nh hin th khun dng s c th thay i c nh format compact. Nu bn c mn hnh cn bng xm, lnh graymon s c ch khi to mc nh ho cho ch ny. Hn na, nu bn v th c cc kiu mc nh ring th mt s gi ti colordef c th xut hin trong startup.m. Khi startup.m l mt file chun trong script M_file, th khng mt lnh no c th thay th c trong n. Tuy nhin ta c th thay th lnh quit trong startup.m. ----------------oOo----------------- 24. 24 chng 6 cc php ton vi MNg Tt c mi s tnh ton u duy tr mt im l c s dng n cc s n, gi l scalars. Php ton c lin quan n scalars l cc php ton c bn, nhng mt lc no , php ton phi lp li nhiu ln khi tnh trn nhiu s. gii quyt vn ny, MATLAB nh ngha thao tc trn mng d liu. 6.1 Mng n Gi s ta xt hm y=sin(x) trong mt na chu k ( x 0 ) trong khong ny s im gi tr ca x l v tn, nhng ta ch xt nhng im cch nhau mt khong gi tr l 0.1 nh vy s cc gi tr ca x l m c. T ta c mng cc gi tr ca x l x= 0, 0.1, 0.2,..., Nu ta dng my tnh k thut tnh th ta c tng ng cc gi tr ca y, t ta c mng ca y x 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 y 0 0.31 0.59 0.81 0.95 1.0 0.95 0.81 0.59 0.31 0 trong mng x cha cc phn t x1, x2, ..., x11 trong mng y cha cc phn t y1, y2, ..., y11 Trong MATLAB to nhng mng ny rt n gin; v d to hai mng trn ta nh cc lnh sau vo du nhc ca MATLAB: >> x=[0 .1*pi .2*pi .3*pi .4*pi .5*pi .6*pi .7*pi .8*pi .9*pi pi] x= Columns 1 through 7 0 0.3142 0.6283 0.9425 1.2566 1.5708 1.8850 Columns 8 through 11 2.1991 2.5133 2.8274 3.1416 >> y = sin(x) y= Columns 1 through 7 0 0.3090 0.5878 0.8090 0.9511 1.0000 0.9511 Columns 8 through 11 0.8090 0.5878 0.3090 0.0000 Kt qu trn ta c mng ca y gm cc phn t tng ng l sine ca cc phn t ca x, y MATLAB ngm hiu l ta tnh sine ca tng phn t ca x. to mng, ta t cc phn t ca mng vo gia hai du ngoc vung "[...]"; gia hai phn t ca mng c th l du cch hoc du phy "," 6.2 a ch ca mng trn mng x c 1 hng, 11 ct hay c th gi l vector hng, mng c di 11 +) truy nhp n cc phn t ca mng ta dng cc ch s th t ca phn t trong mng v d x(1) l phn t th nht ca mng, x(2) l phn t th hai ca mng... >> x(2) % phn t th nht ca mng ans= 25. 25 0.3142 >> y(5) % phn t th 5 ca mng ans= 0.9511 +) truy nhp n nhiu phn t ca mng, v d ta truy nhp t phn t th nht n phn t th nm ca mng x: >> x(1:5) ans= 0 0.3142 0.6283 0.9425 1.2566 Truy nhp t phn t th 7 n phn t cui ca mng y: >> y(7:end) ans= 0.9511 0.8090 0.5878 0.3090 0.0000 Truy nhp t phn t th ba n phn t th nht ca mng y: >> y(3:-1:1) ans= 0.5878 0.3090 0 v d trn 3 l phn t th 3, 1 l ch phn t u tin, cn -1 l gi tr cng (v tr phn t sau bng v tr phn t trc cng vi -1) Truy nhp n cc phn t trong khong t phn t th 2, n phn t th 7, v tr ca phn t sau bng v tr ca phn t trc cng vi 2, ca mng x: >> x(2:2:7) ans= 0.3142 0.9425 1.5708 To mng gm cc phn t th 1, 2, 8, 9 ca mng y: >> y([8 2 9 1]) ans= 0.8090 0.3090 0.5878 0 Nu ta truy nhp vo cc phn t ca mng m th t cc phn t tng u vi 1, ta c th nh lnh: >> x(1:3) ans= 0 0.3142 0.6283 6.3 Cu trc ca mng Vi mng c s lng phn t t th ta c th nhp vo trc tip, nhng vi mng c s lng ln cc phn t th ta dng mt trong hai cch sau: +) To mt mng bt u l phn t 0, sau bng phn t trc cng vi 0.1, phn t cui l 1, tt c cc phn t ca mng c nhn vi : >> x= (0:0.1:1)*pi 26. 26 x= Columns 1 through 7 0 0.3142 0.6283 0.9425 1.2566 1.5708 1.8850 Columns 8 through 11 2.1991 2.5133 2.8274 3.1416 +) To mng gm cc phn t ca x bng hm linspace. C php ca hm ny nh sau: linspace(gi tr phn t u, gi tr phn t cui, s cc phn t) v d >> x = linspace(0,pi,11) x= Columns 1 through 7 0 0.3142 0.6283 0.9425 1.2566 1.5708 1.8850 Columns 8 through 11 2.1991 2.5133 2.8274 3.1416 Cch th nht gip ta to mng m ch cn vo khong cch gi tr gia cc phn t (khng cn bit s phn t), cn cch th hai ta ch cn vo s phn t ca mng (khng cn bit khong cch gi tr gia cc phn t). Ngoi cc mng trn, MATLAB cn cung cp mng khng gian theo logarithm bng hm logspace. C php ca hm logspace nh sau: logspace(s m u, s m cui, s phn t) v d: >> logspace(0,2,11) ans= Columns 1 through 7 1.0000 1.5849 2.5119 3.9811 6.3096 10.0000 15.8489 Columns 8 though 11 25.1189 39.8107 63.0957 100.0000 To mng, gi tr bt u ti 100 , gi tr cui l 100 , cha 11 gi tr Cc mng trn l cc mng m cc phn t ca n c to ln theo mt quy lut nht nh. Nhng i khi mng c yu cu, n khng thun tin to cc phn t bng cc phng php trn, khng c mt mu chun no to cc mng ny. Tuy nhin ta c th to mng bng cch vo nhiu phn t cng mt lc V d >> a = 1:5,b = 1:2:9 a= 1 2 3 4 5 b= 1 3 5 7 9 >> c = [a b] 1 2 3 4 5 1 3 5 7 9 v d trn ta to hai mng thnh phn l a v b sau to mng c bng cch ghp hai mng a v b. Ta cng c th to mng nh sau: 27. 27 >> d=[a(1:2:5) 1 0 1] d= 1 3 5 1 0 1 a l mng gm cc phn t [1 3 5], mng d l mng gm cc phn t ca a v ghp thm cc phn t [1 0 1] Tm li ta c bng cu trc cc mng c bn: x=[ 2 2*pi sqrt(2) 2-3j ] To vector hng x cha cc phn t c bit. x= first : last To vector hng x bt u ti first, phn t sau bng phn t trc cng vi 1, kt thc l phn t c gi tr bng hoc nh hn last . x= first : increment : last To vector hng x bt u ti fist, gi tr cng l increment, kt thc l phn t c gi tr bng hoc nh hn last. x= linspace(fist, last, n) To vector hng x bt u ti first, kt thc l last, c n phn t. x= logspace(first, last, n) To vector hng khng gian logarithm x bt u ti 10first , kt thc ti 10last , c n phn t. 6.4 Vector hng v vector ct Trong cc v d trc, mng cha mt hng v nhiu ct, ngi ta thng gi l vector hng. Ngoi ra ta cn c mng l vector ct, tc l mng c mt ct v nhiu hng, trong trng hp ny tt c mi thao tc v tnh ton i vi mng nh trn l khng thay i. T cc hm to mng minh ho phn trc (tt c u to vector hng), c nhiu cch to vector ct. Mt cch trc tip to vector ct l vo tng phn t ca mng nh v d sau: >> c = [1;2;3;4;5] c= 1 2 3 4 5 Khc vi trc l ta dng du cch hay du phy phn cch gia hai ct ca vector hng. Cn v d ny ta dng du chm phy phn cch gia hai hng ca vector ct. Mt cch khc to cc vector ct l dng cc hm linspace, logspace, hay t cc vector hng, sau dng phng php chuyn v. MATLAB dng ton t chuyn v l ( ' ) chuyn t vector hng thnh vector ct v ngc li. V d to mt vector a v vector b l chuyn v ca vector a, vector c l chuyn v ca vector b: >> a= 1:5 a= 1 2 3 4 5 >> b= a' b= 1 2 3 28. 28 4 5 >> c= b' c= 1 2 3 4 5 Ngoi ra MATLAB cn s dng ton t chuyn vi du chm ng trc ( .' ) ( ton t chuyn v chm). Ton t ny ch khc vi ton t chuyn v ( ' ) khi cc phn t ca mng l s phc, tc l t mt vector ngun vi cc phn t l s phc, ton t ( ' ) to ra vector phc lin hp chuyn v, cn ton t ( .' ) ch to ra vector chuyn v. V d sau y s lm r iu trn: >> c = a.' % To vector c t vector a trn bng ton t chuyn v chm c= 1 2 3 4 5 >> d = a + i*a % To vector s phc d t vector a d= Columns 1 though 4 1.0000+1.0000i 2.0000+2.0000i 3.0000+3.0000i 4.0000+4.0000i Columns 5 5.0000+5.0000i >> e = d.' % To vector e t vector d bng ton t chuyn v chm ( .' ) e= 1.0000 + 1.0000i 2.0000 + 2.0000i 3.0000 + 3.0000i 4.0000 + 4.0000i 5.0000 + 5.0000i >> f = d' % To ra vector f t vector d bng ton t chuyn v ( ' ) f= 1.0000 - 1.0000i 2.0000 - 2.0000i 3.0000 - 3.0000i 4.0000 - 4.0000i 5.0000 - 5.0000i trn ta ch xt n mng c mt hng hay mt ct by gi ta xt trng hp c nhiu hng v nhiu ct, n cn c gi l ma trn. V d sau y l ma trn g c hai hng v bn ct: >> g = [1 2 3 4;5 6 7 8] g= 1 2 3 4 5 6 7 8 Trong v d ny ta dng du cch vo cc phn t trong hng v du chm phy ( ; ) to hai hng; ngoi ra ta cng c th to ma trn nh sau: 29. 29 >> g = [1 2 3 4 5 6 7 8 9 10 11 12] g= 1 2 3 4 5 6 7 8 9 10 11 12 Ch : Khi nhp vo ma trn th gia cc hng s phn t phi bng nhau nu khng chng trnh s b bo li nh v d sau: >> h = [1 2 3;4 5 6 7] Numbers of elements in each row must be the same +) Php ton gia mng vi s n. Trong v d trc chng ta to mng x bng cch nhn cc phn t ca mt mng vi . Cc php ton n gin khc gia mng vi s n l php cng, php tr, php nhn, v php chia ca mng cho s bng cch thc hin php ton i vi tng phn t ca mng. V d: >> g = [1 2 3 4; 5 6 7 8; 9 10 11 12]; >> -2 % Tr cc phn t ca mng g i 2 ans= -1 0 1 2 3 4 5 6 7 8 9 10 >> 2*g - 1 % Nhn tt c cc phn t ca mng g vi 2 sau tr i 1 ans= 1 3 5 7 9 11 13 15 17 19 21 23 +) Php ton gia mng vi mng Thut ton thc hin php ton gia cc mng khng phi n gin nh trn m n cn b rng buc bi cc iu kin khc nh i vi hai mng kch c nh nhau th ta c cc php ton sau: php cng, php tr, php nhn, chia tng ng gia cc phn t ca ca hai mng. V d : >> g % Gi li mng g g= 1 2 3 4 5 6 7 8 9 10 11 12 >> h = [1 1 1 1; 2 2 2 2; 3 3 3 3] % To mt mng mi h. h= 1 1 1 1 2 2 2 2 3 3 3 3 >> h + g % Cng hai ma trn g v h ( cng tng ng tng phn t ca h vi g) ans= 2 3 4 5 30. 30 7 8 9 10 12 13 14 15 >> ans - h % Ly kt qu trc tr i mng h, ta c li mng g. ans= 1 2 3 4 5 6 7 8 9 10 11 12 >> 2*g - h % Nhn ma trn g vi 2 sau ly kt qu tr i ma trn h. ans= 1 3 5 7 8 10 12 14 15 17 19 21 >> g.*h % Nhn tng ng cc phn t ca mng g vi cc phn t ca mng h ans= 1 2 3 4 10 12 14 16 27 30 33 36 v d trn ta dng ton t chm_nhn ( .* ), ngoi ra MATLAB cn dng ton t chm_chia ( ./ hoc . ) chia tng ng cc phn t ca hai mng nh v d di y: >> g./h % Chia phi tng ng cc phn t ca mng g vi cc phn t ca mng h ans= 1.0000 2.0000 3.0000 4.0000 2.5000 3.0000 3.5000 4.0000 3.0000 3.3333 3.6667 4.0000 >> h.g % Chia tri tng ng cc phn t ca mng g vi cc phn t ca mng h ans= 1.0000 2.0000 3.0000 4.0000 2.5000 3.0000 3.5000 4.0000 3.0000 3.3333 3.6667 4.0000 Ch ta ch c th dng php nhn_chm hay php chia_chm i vi cc mng g v h m khng th dng php nhn ( * ) hay php chia ( / hoc) v i vi cc php ton ny yu cu s ct v s hng ca hai ma trn phi tng thch. v d: >> g*h ??? Error using ==> * Inner matrix dimensions must agree. >> g/h Warning: Rank deficient, rank = 1 tol = 503291e-15. ans= 0 0 0.8333 0 0 2.1667 0 0 3.5000 >> h/g Warning: Rank dificient, rank = 2 tol = 1.8757e-14. ans= - 0.1250 0 0.1250 31. 31 - 0.2500 0 0.2500 - 0.3750 0 0.3750 Php chia ma trn a ra kt qu m khng cn thit phi cng kch c nh ma trn g v ma trn h. V cc php ton i vi ma trn chng ta s ni n sau +) Mng vi lu tha. MATLAB dng ton t ( .^ ) nh ngha lu tha ca mng. V d ta c hai mng g v h nh trn, ta c th to cc mng mi bng ton t ( .^ ) nh sau: >> g.^2 % Cc phn t ca g c lu tha v s m l 2. ans= 1 4 9 16 25 36 49 64 81 100 121 144 >> g.^-1 % Cc phn t ca g c lu tha vi s m l -1. ans= 1 0.5 0.33333 0.25 0.2 0.16667 0.14286 0.125 0.11111 0.1 0.090909 0.083333 >> 2.^g % Cc phn t ca g l s m ca 2. ans= 2 4 8 16 25 36 49 64 729 1000 1331 1728 >> g.^(h - 1) % Cc phn t ca g c lu tha vi s m l tng ng l cc phn t ca h tr i 1. ans= 1 1 1 1 5 6 7 8 81 100 121 144 Sau y l bng mt s php ton c bn ca mng: Cc php ton i vi cc phn t ca mng D liu minh ho: a = [a1 a2 ... an] , b = [b1 b2 ... bn] , c l s v hng Cng vi s n a+c = [a1 +c a2 +c ... an+c] Nhn vi s n a*c = [a1 *c a2 *c ... an*c] Cng mng a+b = [ a1+b1 a2+b2 ... an+bn ] Nhn mng a.*b = [ a1*b1 a2*b2 ... an*bn ] Chia phi mng a./ b = [ a1/ b1 a2/ b2 ... an/ bn ] Chia tri mng a. b = [ a1 b1 a2 b2 ... an bn ] Lu tha mng a.^c = [ a1^c a2^c ... an^c ] c.^a = [ c^a1 c^a2 ... c^an ] a.^b = [ a1^b1 a2^b2 ... an^bn ] 6.5 Mng c cc phn t l 0 hoc 1. 32. 32 Bi v c nhng ng dng chung ca chng m MATLAB cung cp nhng hm to nhng mng m cc phn t ca chng l 0 hoc 1. V d: >> ones(3) % To mng 3 hng, 3 ct vi cc phn t l 1. ans= 1 1 1 1 1 1 1 1 1 >> zeros(2,5) % To mng 2 hng, 5 ct vi cc phn t l 0. ans= 0 0 0 0 0 0 0 0 0 0 To mng c cc phn t l 1, kch c bng mng g bit. >> size(g) % Hm tr v kch c ca mng g. ans= 3 4 >> ones(size(g)) ans= 1 1 1 1 1 1 1 1 1 1 1 1 Khi gi hm ones(n), zeros(n) vi mt thng s n th MATLAB s to mng vung vi s hng v s ct l n. Khi gi hm vi hai thng s ones(r,c), zeos(r,c) th r l ch s hng, c l ch s ct. 6.6 Thao tc i vi mng T cc mng v cc ma trn c bn ca MATLAB, c nhiu cch thao tc i vi chng. MATLAB cung cp nhng cch tin ch chn vo, ly ra, sp sp li nhng b phn t con ca chng bng cc ch s ca cc phn t. V d di y s minh ho nhng c im thao tc i vi mng v ma trn trn: >> A = [1 2 3; 4 5 6; 7 8 9] A= 1 2 3 4 5 6 7 8 9 >> A(3,3) = 0 % Gn phn t hng th 3, ct th 3 bng 0. 1 2 3 4 5 6 7 8 0 >> A(2,6) = 1 % Gn phn t hng th 2, ct th 6 bng 1. A= 1 2 3 0 0 0 4 5 6 0 0 1 7 8 0 0 0 0 33. 33 y ma trn A khng c 6 ct, kch c ca ma trn A phi tng ln cho ph hp, cc phn t tng thm c in bng cc con s khng. >> A(:,4) = 4 % Gn tt c cc phn t thuc ct th 4 bng 4. A= 1 2 3 4 0 0 4 5 6 4 0 1 7 8 0 4 0 0 trn ta dng du hai chm ( : ) ch tt c cc hng. >> A = [1 2 3; 4 5 6; 7 8 9]; % Gn li cc gi tr ca ma trn A. >> B = A(3:-1:1,1:3) % To ma trn B bng cch o ngc cc hng ca ma trn A. B= 7 8 9 4 5 6 1 2 3 >> B = A(3:-1:1,:) % Cng to ma trn B nh trn % nhng y ta dng ( : ) ch tt c cc ct. B= 7 8 9 4 5 6 1 2 3 >> C = [ A B(:,[1 3])] % To ma trn C bng cch ghp ma trn A v % ct th nht, th ba ca ma trn B vo bn phi ma trn A. C= 1 2 3 7 9 4 5 6 4 6 7 8 9 1 3 >> C = [1 3] C= 1 3 >> B = A(C,C) % Dng ma trn C lm ch s to ma trn B T ma trn A. B= 1 3 7 9 >> B= A(:) % To ma trn ct B t ma trn A. B= 1 4 7 2 5 8 3 6 9 >> B = B.' % Chuyn ma trn B thnh ma trn hng bng ton t chuyn v chm. B= 1 4 7 2 5 8 3 6 9 >> B = A; 34. 34 >> B(:,2) = [] % Loi b ct th hai ca ma trn B. B= 1 3 4 6 7 9 Khi ta gn ct th hai ca ma trn B cho ma trn rng ([]) th n s b xo, ma trn cn li s rt b i hng th hai. >> B = B.' B= 1 4 7 3 6 9 >> B(2,:) = [] B= 1 4 7 >> A(2,:) = B % Thay hng th hai ca ma trn A bng ma trn B. A= 1 2 3 1 4 7 7 8 9 >> B = A(:,[2 2 2 2]) B= 2 2 2 2 4 4 4 4 8 8 8 8 To ma trn B bng cch to bn ct ging ct th hai ca ma trn A, s hng vn gi nguyn bng s hng ca ma trn A. >> A(2,2) = [] ??? Indexed empty matrix assignment is not allowed. y MATLAB khng cho php xo i mt phn t ca ma trn m phi xo i mt ct hoc mt hng. >> B = A(4,:) ??? Index exeeds matrix dimension. V d trn ma trn A khng c bn hng, nn MATLAB thng bo nh trn. >> B(1:2,:) = A ??? In an assignment A(matrix, :) = B, the number of columns in A and B must be the same. MATLAB ch ra rng bn khng th gn mt ma trn vo trong mt ma trn khc m khc nhau v kch c. >> B = [1 4 7]; >> B(3:4,:) = A(2:3,:) B= 35. 35 1 4 7 0 0 0 1 4 7 7 8 9 Nhng ta c th gn hai hng ca ma trn A cho hai hng ca ma trn B, khi ma trn A v ma trn B c cng s ct. Ma trn B ch c mt hng nn khi thm hng th ba v hng th t th hng th hai ca ma trn B c mc nh cho thm cc phn t 0 vo. >> G(1:6) = A(:,2:3) G= 2 4 8 3 7 9 T phn t th nht n phn t th su ca ma trn G c gn bng ct th hai v ct th ba ca ma trn A. i khi tin li hn ta ch dng ch s n truy nhp n cc phn t ca mng. Khi ch s n c dng trong MATLAB th th t cc phn t ca mng c tnh bt u t phn t u tin ca ct, tnh ht ct th tnh n ct tip theo.. V d: >> D = [1 2 3 4; 5 6 7 8; 9 10 11 12] D= 1 2 3 4 5 6 7 8 9 10 11 12 >> D(2) % Phn t th hai ca mng. ans= 5 >> D(5) % Phn t th nm ca mng ( ct 2, hng 2 ). ans= 6 >> D(end) % Phn t cui cng ca mng. ans= 12 >> D(4:7) % T phn t th t n phn t th by ca ma trn. ans= 2 6 10 3 Ngoi trng hp dng a ch da trn bng ch s, chng ta cn c th dng a ch da trn mng logic_l kt qu t cc php ton logic. Nu kch c ca mng logic cn bng vi mng to ra n th chnh l a ch ca mng. Trong trng hp ny th phn t True (1) c gia li v phn t False (0) b b i V d: >> x = -3:3 % To mng d liu. x= -3 -2 -1 0 1 2 3 >> abs(x)>1 ans= 1 1 0 0 0 1 1 Tr v mt mng logic vi gi tr mt ti nhng phn t c tr tuyt i ln hn mt. 36. 36 >> y = x( abs(x)>1) y= -3 -2 2 3 To mng y bng cch ly nhng phn t ca x m c tr tuyt i ln hn mt. >> y = x([1 1 0 0 0 1 1]) ??? Index into matrix is negative or zero. See release notes on changes to logical indices Cu lnh b li mc d abs(x)>1 v [1 1 0 0 0 1 1] cng l vector nh nhau. Trong trng hp ny, [1 1 0 0 0 1 1] l mt mng s, khng phi l mng logic. V vy MATLAB c nh a ch cc phn t c s ch s trong mng [1 1 0 0 0 1 1] v cu lnh b li v khng c phn t 0. Tuy nhin MATLAB cung cp hm logical chuyn i t mng s sang mng logic >> y = x(logical([1 1 0 0 0 1 1])) y= -3 -2 2 3 mng logic lm vic vi ma trn cng nh l i vi vector: >> B = [5 -3; 2 -4] B= 5 -3 2 -4 >> x = abs(B)>2 x= 1 1 0 0 >> y = B(x) 5 -3 4 Tuy nhin kt qu c chuyn thnh vector ct v khng cch no nh ngha ma trn ch c ba phn t. a ch ca mng A( r, c ). a ch mt mng con trong mng A, nh ngha bng cc ch s vector ca hng thit k trong r, ch s vector ca ct thit k trong c. A( r, : ). a ch mt mng con trong mng A, nh ngha bnh cc ch s vector ca hng thit k trong r, v tt c cc ct ca A. A( : , c). a ch mt mng con trong mng A, nh ngha bng tt c cc hng ca A, ch s vector ca ct c thit k trong c.A( : ). a ch tt c cc phn t ca A nh mt vector ct, bng cch ghp th t cc ct ca vector A. A( i ) a ch mt mng con trong mng A, nh ngha bng cc ch s vector n c thit k trong i, vi gi s A l vector ct. A( x ). a ch mt mng con trong mng A, nh ngha bi mng logic x. x phi cng kch c vi A. 6.7 Tm kim mng con Nhiu khi chng ta mun bit cc ch s hay danh sch cc ch s ca nhng phn t ca mt mng m n tho mn mt biu thc quan h, trong MATLAB thc hin vic ta s dng hm find, hm ny tr v danh sch con ch s ti nhng phn t m biu thc quan h ca chng l ng: >> x = -3:3 x= -3 -2 -1 0 1 2 3 >> k = find(abs(x)>1) 37. 37 k= 1 2 6 7 tm nhng ch s ti nhng v tr m ti abs(x)>1 y = x(k) y= -3 -2 2 3 To mng y, dng cc ch s trong mng k. Hm find cng c th s dng trong ma trn: >> A = [1 2 3; 4 5 6; 7 8 9] A= 1 2 3 4 5 6 7 8 9 >> [i,j] = find(A>5) i= 3 3 2 3 j= 1 2 3 3 y i l ch s hng, cn j l ch s ct; gia i v j c mi quan h tng ng ch nhng v tr m ti biu thc quan h l ng. Ch : khi MATLAB tr li hai hoc nhiu bin, chng c t trong du ngoc vung, v c t bn tri du bng. C php ny khc vi c php thao tc i vi mng trn, khi m [i,j]c t bn phi du bng, v n xy dng ln mt mng m j c kt ni vo bn phi du bng. Bng di y tm tt dng lnh ca phn tm kim mng: Tm kim mng i = find(x) Tr li cc ch s ca mng x ni m cc phn t ca n khc khng [ r, c ] = find(x) Tr li ch s hng v ch s ct ca mng x ni m cc phn t ca n khc khng. 6.8 So snh mng Chng ta c th dng hm isequal so snh hai mng. Th d: >> A = [1 2 3; 4 5 6; 7 8 9] A= 1 4 7 2 5 8 3 6 9 >> B = A.*(-1).^A B= -1 4 -7 2 -5 8 38. 38 -3 6 -9 >> C = 1:9 % To mng c cng gi tr vi A nhng c khun dng khc. 1 2 3 4 5 6 7 8 9 >> isequal(A,C) ans= 0 >> isequal(A,B) ans= 0 >> isequal(A,A) ans= 1 >> isequal(C,C) ans= 0 Hm isequal tr li gi tr logic l ng (1) khi hai mng c cng kch c, cc phn t ging nhau. Ngoi ra n tr li gi tr l sai (0). Thm vo , hm ismember ch ra cc phn t ging nhau gia hai mng: >> ismember(A,B) % Kt qu tr v l vector ct. ans= 0 1 0 1 0 1 0 1 0 >> ismember(A,B) ans= 1 1 1 1 1 1 1 1 1 ismember tr li gi tr ng cho nhng ch s trong A m phn t ny cng c trong i s th hai. Hai i s khng cn c cng kch c. >> x = 0:2:20 % mng vi 11 phn t. x= 0 2 4 6 8 10 12 14 16 18 20 >> ismember(x,A) 39. 39 ans= 0 1 1 1 1 0 0 0 0 0 0 y l mng c cng kch c vi x, vi 1 ti cc phn t chung. >> ismember(x,A) ans= 0 1 0 1 0 1 0 1 0 y l mng c s phn t bng s phn t ca A, vi 1 ti cc phn t chung. V vy ismember so snh i s th nht ca n vi i s th hai v tr li mt vector c cng s phn t vi i s th nht. Nhng hm to khc trong th vin MATLAB: >> union(A,B) % Tt c cc phn t c trong hai mng. ans= -9 -7 -5 -3 -1 1 2 3 4 5 6 7 8 9 >> intersect(A,B) % Phn t chung ca hai mng. ans= 2 4 6 8 >> setdiff(A,B) % Cc phn t c trong A nhng khng c trong B. ans= 1 3 5 7 9 >> setxor(A,B) % Cc phn t khng thuc phn chung gia A v B. ans= 40. 40 -9 -7 -5 -3 -1 1 3 5 7 9 Nhng hm ny c tng kt li trong bng di y: So snh mng isequal(A, B) ng nu A v B ging nhau. ismember(A, B) ng khi phn t ca A cng l phn t ca B. intersect(A, B) Cc phn t chung gia A v B. setdiff(A, B) Cc phn t c trong A m khng c trong B. setxor(A, B) Cc phn t khng thuc phn chung gia A v B. union(A, B) Tt c cc phn t c trong A v B. 6.9 Kch c ca mng phn trc chng ta bit lnh who cung cp tn bin do ngi dng nh ngha. Trong trng hp ca mng, n cn rt quan trng khi bit kch c ca mng. Trong MATLAB, lnh whos cung cp nhng thng tin ny: >> whos Name size Bytes Class A 3x3 72 double array B 1x3 24 double array ans 1x4 32 double array (logical) Grand total is 16 elements using 128 bytes Thm vo nh s v kch c ca bin, whos hin th tng s bytes chim, v class ca cc bin. V d, thng tin cp trn, ans l mng logic Trong nhng trng hp m kch c ca ma trn hoc ca vector khng c bit nhng n cn thit cho mt s cc thao tc, MATLAB cung cp hai hm ng dng l size v length : >> A = [1 2 3 4; 5 6 7 8]; >> s = size(A) s= 2 4 Vi mt thng s ra, hm size tr li mt vector hng trong c hai phn t, phn t th nht l ch s hng, cn phn t th hai ch s ct. >> [r,c] = size(A) r= 2 c= 4 Vi hai thng s a ra, hm size tr li s hng trong bin th nht, v s ct trong bin th hai. 41. 41 >> r = size(A,1) r= 2 >> c = size(A,2) Gi hai thng s, hm size ch tr v s ct hoc s hng. >> length(A) ans= 4 Tr v gi tr s hng hoc s ct, gi tr no ln hn c tr v. >> B = pi:0.01:2*pi; >> size(B) ans= 1 315 Cho bit rng B l vector hng, v >> length(B) ans= 315 tr li di ca vector. >> size([ ]) ch ra rng ma trn rng khng c kch c. Nhng khi nim ny c tng kt trong bng di y: Kch c ca mng whos Hin th cc bin, m tn ti trong khng gian lm vic v kch c ca chng. s = size(A) Tr li vector hng s, m phn t th nht l s hng ca A, phn t th hai l s ct ca A. [ r, c ] = size(A) Tr li hai s v hng r, c cha s hng v s ct ca A. r = size(A, 1) Tr li s hng ca A trong bin r. c = size(A, 2) Tr li s ct ca A trong bin c. n = length(A) Tr li max(size(A)) trong bin n khi A khng rng. 6.10 Mng nhiu chiu i vi cc MATLAB versions trc 5.0, mng ch c th c mt hoc hai chiu. T MATLAB 5.0 tr ln th s chiu ca mng tng ln. V d: >> a = [1 0; 0 1] a= 1 0 0 1 >> b = [2 2; 2 2] b= 2 2 2 2 >> c = [0 3; 3 0] 42. 42 c= 0 3 3 0 >> d = cat(3,a,b,c) d(:,:,1)= 1 0 0 1 d(:,:,2)= 2 2 2 2 d(:,:,3)= 0 3 3 0 >> size(d) ans= 2 2 3 To cc mng hai chiu a, b, c, sau ghp chng lai vi nhau thnh mng ba chiu bng cch s dng hm cat. Nh vy mng d l mng c hai hng, hai ct, v ba trang. Mng a to trang th nht, b l trang th hai, v c l trang th ba. Thng s trang din t chiu th ba ca mng, cung cp mt cch hnh dung v mng ba chiu nh mng hai chiu, cc trang xp th t t mt cho n cui nh trong mt quyn sch. i vi cc mng c s chiu cao hn, khng c tn chung, v n cng rt kh tng tng! Thao tc vi mng nhiu chiu cng ging nh cc th tc a ra trn i vi mng mt chiu v hai chiu. Ngoi ra MATLAB cn cung cp mt s hm thao tc trc tip i vi mng nhiu chiu: Cc hm vi mng nhiu chiu s = size(A) Cho n_s chiu ca A, tr v vector hng s vi n phn t, phn t th i l kch c chiu th i ca mng A ndims(A) S chiu ca A, tng t nh hm length(size(A)) permute(A, order) n_s chiu, tng ng vi ton t chuyn v chm. ipermute(A, order) Ngc vi hm permute(A, order) shiftdim(A, n) Thay i s chiu ca mng A bng s nguyn n. squeeze(A) Tr li s chiu duy nht ca mng, tng ng vi tr li s chiu ln hn ba. V d: S suy gim do phn r dng mng Vn : Phn t polonium c chu k phn r l 140 ngy, c ngha l do s phn r m khi lng ca poloniun ch cn li 1/ 2 so vi khi lng ban u sau 140 ngy. Gi s ban u ta c 10 grams polonium, n s cn li bao nhiu sau mi tun trong vng mi tun? Gii php: Ta s dng phng php gii trong chng 2, khi lng cn li sau sau mt khong thi gian l: khi lng cn li = khi lng ban u . (0.5)thi gian/ chu k gii bi ton ny, gi php ca MATLAB l: >> initial_amount = 10; % Khi lng cht polonium ban u >> half_life = 140; % Chu k phn r >> time = 7:7:70 % Kt thc ca cc tun time= 7 14 21 28 35 42 49 56 63 70 >> amount_left = initial_amount*0.5.^(time/ half_life) 43. 43 amount_left= Columns 1 through 7 9.6594 9.3303 9.0125 8.7055 8.4090 8.1225 7.8458 Columns 8 through 10 7.5786 7.3204 7.0711 Dng ton t mng lm cho n tnh cc gi tr mt cch n gin hn khi nhn nhiu gi tr ca mt bin. Ch rng nhn chm (.^) c s dng v chng ta mun lu tha 0.5 ln i vi mi phn t ca mng. Nhng d liu ny c th d dng v chng trong MATLAB nh hnh di: >> plot(time/7,amount_left) >> xlabel(Week number), ylabel(Amount of Polonium left) Hnh 6.1 V d: Tm kim gii php s dng vectors Vn : Vn ca tun trong trng cp hai l tm mt s nh hn 100 m chia ht cho 7, nhng cn d li 1 khi chia cho 2, 3, 4, 5, v 6. Gii php: Khng c mt gii php phn tch no cho vn ny c, v vy chng ta phi gii bng phng php tm kim. Nu bn bt u vi tt c cc s l bi s ca 7 v nh hn 1000, cn cc s khc th khng xt n, bn s xy dng c mt gii php. Trong MATLAB gii php c a ra trong script file l: function pow % pow.m script file to solve problem of the week n=7:7:1000 % all multiples of 7 less than 1000 number=length(n) % number of potential solutions n(rem(n,2)~=1)=[]; % throw out non solutions by number=length(n) 44. 44 n(rem(n,3)~=1)=[]; %setting them equal to an empty array, number=length(n) n(rem(n,4)~=1)=[]; % the function rem computes remainders number=length(n) n(rem(n,5)~=1)=[]; number=length(n) n(rem(n,6)~=1)=[]; Chy script file ny ta c gii php nh di y: >> pow number = 142 number = 71 number = 24 number = 12 number = 2 n= 301 721 V d: Tnh ton nng acid dng cc php ton vi mng Vn : Nh mt phn ca qu trnh sn xut b phn ca vt c ti mt nh my t ng, b phn c nhng trong nc lm ngui, sau nhng trong bn ng dung dch acid lm sch. Trong ton b ca qu trnh nng acid gim i khi cc b phn c ly ra khi bn acid v khi nhng b phn ca vt c vo bn th mt lng nc cn bm trn vt c khi nhng b trc cng vo theo v khi nhc ra khi bn mt lng acid bm theo vt. m bo cht lng th nng acid phi khng c nh hn mt lng ti thiu. Bn hy bt u vi nng dung dch l 90% th nng ti thiu phi l 50%. Lng cht lng thm vo v ly i sau mi ln nhng dao ng trong khong t 1% n 10%. Hi bao nhiu b phn c th nhng vo b nc acid trc khi nng ca n gim xung di mc cho php? Gii php: Ta s dng phng php gii a ra chng 2: n = Trong MATLAB, gii php vit trong script M_file l: function example6_2 % script M_file example6_2 initial_con=90; min_con=50; lost=1:10 % consider 1% to 10% in increments of 1% n=floor(log(initial_con/min_con)./log(1+lost/100)) stem(lost,n) xlabel('Percent Lost with Each Dip') ylabel('Number of Dips') 45. 45 title('Acid-Water Bath Dipping Example') Chy chng trnh trn ta c kt qu nh sau: lost = 1 2 3 4 5 6 7 8 9 10 n = 59 29 19 14 12 10 8 7 6 6 Hnh 6.2 Ch y yu cu phng php chia chm v log(1 + lost/ 100) l mt vector --------------------oOo------------------ chng 7 cc php tnh vi mng 46. 46 7.1 To phng trnh tuyn tnh. V c bn, MATLAB c vit i vi nhng ma trn v thc hin php ton s hc tuyn tnh n gin m xut hin trong nhiu ng dng. Mt vn chung nht ca s hc tuyn tnh l vic gii phng trnh. V d to phng trnh: . = A.x = b Biu tng php nhn ton hc (.) c nh ngha trong php ton trn, khc vi k hiu ta dng i vi mng trc kia. Trong MATLAB php nhn ma trn ny c nh ngha bng du sao (*). Tip theo nh ngha du bng, ma trn to ra t ma trn A v vector x bng vi vector b. Gii php tn ti cho s cn bng cp trn l nhng vn c bn ca s hc tuyn tnh. Thm na, khi li gii khng tn ti, c rt nhiu cch gn ng tm kim gii php, nh php loi tr Gaussian, s tm tha s LU, hoc tnh trc tip A-1 .b. Di y chng ta s cp n mt s cch gii quyt nh trn: Trc tin nhp vo ma trn A v b: >> A = [1 2 3; 4 5 6; 7 8 0] A= 1 2 3 4 5 6 7 8 0 >> b = [366; 804; 315] b= 366 804 351 Nu bn c kin thc v s hc tuyn tnh, n rt d bn kim tra xem nh thc ca ma trn trn c khc khng hay khng: >> det(A) ans= 27 Nu n ng, MATLAB c th gii phng trnh theo hai cch, mt cch hay c dng hn, mt cch t s dng, nhng trc tip hn, phng php ny l chuyn thnh dng x=A-1 .b. >> x = inv(A)*b x= 25.0000 22.0000 99.0000 y inv(A) l hm ca MAYLAB dng tnh A-1 ; v ton t nhn ( * ), khng c du chm pha trc, y l php nhn ma trn. Phng php c dng nhiu hn l dng ton t chia ma trn tri: >> x = Ab x= 25.0000 22.0000 99.0000 47. 47 Phng trnh ny s dng phng php tm tha s LU gn ng v a ra cu tr li nh l php chia tri A cho b. Ton t chia tri () khng c du chm pha trc l mt php ton ca ma trn, n khng phi l cc php ton gia cc phn t ca mng. Phng php th hai ny c s dng nhiu hn do nhiu nguyn nhn, mt trong nhng nguyn n gin nht l phng php ny dng t php ton hn v tc nhanh hn. Thm vo , nhn chung phng php ny chnh xc hn cho nhng bi ton ln. Trong trng hp khc, nu MATLAB khng tm thy phng php gii hoc khng tm thy phng php chinh xc, n s hin thng bo li. Nu bn nghin cu s hc tuyn tnh, bn bit rng khi s phng trnh v s bin khc nhau, th khng th c mt phng php duy nht gii. Trong MATLAB khi gp nhng h phng trnh c s phng trnh ln hn s bin n dng ton t chia tri hoc chia phi, t ng gim thp nht nhng phn t tha A.x - b. Cch ny gi l phng php vung nh nht. V d: >> A = [1 2 3; 4 5 6; 7 8 0; 2 5 8] % Bn phng trnh, ba bin. A= 1 2 3 4 5 6 7 8 0 2 5 8 >> b = [366 804 351 514] b= 366 804 351 514 >> x = Ab % Phng php vung nh nht. x= 247.9818 -173.1091 114.9273 >> res = A*x - b res= -119.4545 11.9455 0.0000 35.8364 Mt khc khi s phng trnh t hn s bin tng t nh trng hp khng xc nh, th s nghim phng trnh l v tn. i vi nhng nghim ny MATLAB tnh theo hai cch. Dng ton t chia a ra phng php m c s phn t 0 ca x l cc i. Nh mt s la chn, tnh x=pinv(A)*b a ra phng php chiu di hoc tiu chun ca x nh hn cc phng php khc. Phng php ny gi l phng php tiu chun cc tiu. V d: >> A = A % To ba phng trnh, bn bin. A= 1 4 7 2 2 5 8 5 3 6 0 8 >> b = b(1:3) b= 366 48. 48 804 351 >> x = Ab % phng php vi s phn t 0 cc i. x= 0 -165.9000 99.0000 168.3000 >> xn = pinv(A)*b % Tm kim gii php tiu chun nh nht. xn= 30.8182 -168.9818 99.0000 159.0545 >> norm(x) % Tiu chun O_clit vi cc phn t 0. ans= 256.2200 >> norm(xn) % Gii php tiu chun nh nht ans= 254.1731 7.2 Cc hm ma trn . gii phng trnh tuyn tnh, MATLAB cung cp cc hm tr gip sau: Cc hm ma trn balance(A) Cn bng tng chnh xc cdf2rdf(A) Chuyn t dng s phc cho sang dng s thc cho chol(A) Tm tha s Cholesky cholinc(A, droptol) Tha s Cholesky khng y cond(A) S iu kin ma trn condest(A) c lng s iu kin ma trn theo tiu det(A) nh thc ma trn expm(A) Ma trn theo lut m expm1(A) B sung M_file ca expm expm2(A) Ma trn theo lut hm m, dng th t Taylor funm(A, fun) Tnh ton hm ma trn chung hess(A) Mu Hessenberg inv(A) Ma trn chuyn v logm(A) Ma trn logarithm lu(A) Tm tha s vi php kh Gaussian luinc(A, droptol) Tha s LU khng y norm(A) Ma trn v vector tiu chun norm(A,1) Tiu chun 1 norm(A, 2) Tiu chun 2 norm(A, inf) V cng norm(A, p) Tiu chun P (ch i vi vector) norm(A, fro) Tiu chun F normest(A) Tiu chun 2 c lng cho ma trn ln null(A) Khong rng orth(A) Tnh trc giao 49. 49 poly(A) a thc c trng polyvalm(A) Tnh gi tr ca ma trn qr(A) Xc nh trc giao tam gic qrdelet(Q, R, j) Xo ct t tha s QR qrinsert(Q, R, j, x) Chn ct trong tha s QR rank(A) S ca hng hoc ct c lp rcond(A) c lng iu kin thun nghch sqrtm(A) Ma trn gc bnh phng subspace(A, B) Gc gia hai im svd(A) Phn tch gi tr n svds(A, K) Mt s cc gi tr n trace(A) Tng cc phn t cho 7.3 Ma trn c bit MATLAB a ra mt s cc ma trn c bit, trong mt s chng c nhng ng dng rng ri trong cc php ton. Nhn chung nhng ma trn l: >> a = [1 2 3; 4 5 6]; >> b = find(a>10) b= [ ] y b l ma trn rng. MATLAB tr li ma trn rng khi php ton khng c kt qu. Trong v d trn khng c phn t no ca a ln hn 10. Ma trn rng khng c kch c, nhng tn bin ca chng vn tn ti trong khng gian lm vic. >> zeros(3) % Ma trn khng 3 hng, 3 ct (3x3). ans= 0 0 0 0 0 0 0 0 0 >> ones(2,4) % Ma trn mt 2 hng, 4 ct (2x4). ans= 1 1 1 1 1 1 1 1 >> zeros(3) + pi ans= 3.1416 3.1416 3.1416 3.1416 3.1416 3.1416 3.1416 3.1416 3.1416 V d trn v to ma trn 3x3 vi cc phn t u l . >> rand(3,1) ans= 0.2190 0.0470 0.6789 ma trn 3x1 gm cc phn t l s cung cp bi hm random gia 0 v 1. >> randn(2) 50. 50 ans= 1.1650 0.0751 0.6268 0.3516 ma trn 2x2 ca cc s cung cp bi hm random vi gi tr trung bnh l 0. Thut ton cho hm rand v randn c th tm thy trong S.K>Park and K.W.Miller,Random Number Generator: Good Ones Are Hard to Find, Comm. ACM, 32, 10, Oct. 1988-1201. >> eye(3) ans= 1 0 0 0 1 0 0 0 1 Ma trn ng nht 3x3 >> eye(3,2) ans= 1 0 0 1 0 0 Ma trn ng nht 3x2 Ngoi ra ch kch c ca mt ma trn, bn c th dng hm size to mt ma trn c kch c ging nh ma trn khc: >> A = [1 2 3; 4 5 6]; >> ones(size(A)) ans= 1 1 1 1 1 1 ma trn mt c cng kch c vi ma trn A. Cc ma trn trn v cc ma trn c bit khc c gii thiu trong bng sau: Cc ma trn c bit [ ] Ma trn rng compan To ma trn rng eye Ma trn ng nht gallery Ma trn kim tra nh vi phn t hadamard Ma trn Hadamard hankel Ma trn Hankel hilb Ma trn Hilbert invhilb Chuyn thnh ma trn Hilbert magic Ma trn vung, gi tr cc phn t bng t 1 n gi tr s phn t ones Ma trn 1 pascal Ma trn tam gic Pascal rand Ma trn vi cc phn t ngu nhin t 0 n 1. randn Ma trn ngu nhin thng thng vi gi tr trung bnh bng 0 rosser Ma trn kim tra i xng trc chnh toeplitz Ma trn Toeplitz vander Ma trn Vandermond wilkinson Ma trn kim tra Wilkinson 51. 51 zeros Ma trn khng V d Vn : Ta c mch in nh trong hnh 7.1 c m t bng phng trnh in p nt khi ngun a vo l sng hnh sin. Hnh 7.1 E = 10o ; R1 = 2; L = 10j; C = ; R2 = 10. y vi l in p gia nt th i v t. Hi in p ti mi nt l bao nhiu? Gii php: y l vn v phn tch pha. Phng php gii bi ny l gii phng trnh trn, v chuyn cc kt qu v dng thi gian. Trong MATLAB gii php s l: function circuit % circuit.m script file to solve circuit proplem A(1,1)=1/2; % poke in nonzero values as needed A(1,2)=-1/2; A(2,1)=-1/2; A(2,2)=1/2 + 0.2j + 1/10j; A(2,3)= -1/10j; A(3,2)=-1/10j; A(3,3)=1/10 + 1/10j; y=[-1 0 0]'; % right hand side vector v=Ay % complex solution vmag=abs(v) % solution magnitudes vphase=angle(v)*180/pi % solution phase in degrees theta=linspace(0,2*pi); % plot results in time v1=vmag(1)*cos(theta-vphase(1)); v2=vmag(2)*cos(theta-vphase(2)); v3=vmag(3)*cos(theta-vphase(3)); thd=theta*180/pi; plot(thd,v1,thd,v2,thd,v3) Sau khi chy chng trnh trn, kt qu s l: v = -4.0000 + 6.0000i -2.0000 + 6.0000i 2.0000 + 4.0000i vmag = 7.2111 52. 52 6.3246 4.4721 vphase = 123.6901 108.4349 63.4349 Hnh 7.2 ---------------------oOo--------------------- chng 8 cc php tnh LOGIC V QUAN H Thm vo nhng ton t truyn thng, MATLAB cung cp ton t logic v quan h. Bn c th quen thuc vi nhng php ton ny, nu bn lm quen vi cc ngn ng lp trnh khc. Mc ch ca nhng ton t v hm ny l tr li cu hi True_False (ng_sai). i vi cc s th trong ton t logic v quan h quy nh cc s khc khng l True cn s khng l False. Kt qu ca php ton logic v quan h a ra l 1 cho True, 0 cho False. 53. 53 8.1 Ton t quan h Ton t quan h MATLAB bao gm tt c cc php so snh: Ton t quan h ngha < nh hn ln hn >= ln hn hoc bng == bng ~= khng bng Ton t quan h MATLAB c th dng so snh hai mng c cng kch c hoc so snh mt mng vi mt s n. Trong trng hp th hai, s n so snh vi tt c cc phn t ca mng, kt qu tr v ging nh kch c ca mng. V d: >> A = 1:9, B = 9 - A A= 1 2 3 4 5 6 7 8 9 B= 8 7 6 5 4 3 2 1 0 >> tf = A>4 tf= 0 0 0 0 1 1 1 1 1 tm kim cc phn t ca A m ln hn 4. Kt qu bng 0 khi A 4, bng 1 khi A>4. >> tf = (A==B) tf= 0 0 0 0 0 0 0 0 0 Tm kim cc phn t ca A m bng vi B. Ch s khc nhau gia = v == dng so snh hai bin v tr v 1 khi chng bng nhau, 0 khi chng khc nhau; = dng gn kt qu a ra ca ton t cho mt bin. >> tf = B - (A>2) tf= 8 7 5 4 3 2 1 0 -1 Tm cc phn t A>2 v b tr bi vector B. V d ny ch ra rng kt qu a ra ca ton t logic l mt mng s bao gm cc s khng v mt, chng cng c th dng trong cc php ton s hc. >> B = B + (B==0)*eps B= Columns 1 through 7 8.0000 7.0000 6.0000 5.0000 4.0000 3.0000 2.0000 Columns 8 through 9 1.0000 0.0000 V d trn a ra cch thay th cc phn t ca B m trng vi khng bng s c bit ca MATLAB l eps, c gi tr xp x 2.2e-16. Cch thay th ny i khi c ch l trnh trng hp chia cho s khng nh v d sau: >> x = (-3:3)/3 54. 54 -1.0000 -0.6667 -0.3333 0 0.3333 0.6667 1.0000 >> sin(x)./x Warning: Divide by zero ans= 0.8415 0.9276 0.9816 NaN 0.9816 0.9276 0.8415 Tnh ton hm sin(x)/ x a ra mt cnh bo v phn t th t bng khng, sin(0)/ 0 khng c nh ngha, MATLAB tr li NaN ( ngha l khng phi l mt s) ti v tr trong kt qu. Th li v d trn, sau khi thay th phn t c gi tr bng khng bng s eps: >> x = x + (x==0)*eps; >> sin(x)/x ans= 0.8415 0.9276 0.9816 1.0000 0.9816 0.9276 0.8415 By gi sin(x)/ x ti x = 0 a ra kt qu gii hn chnh xc. 8.2 Ton t Logic Ton t logic cung cp mt cch din t mi quan h ph nh hay t hp. Ton t logic MATLAB bao gm: Ton t logic ngha & AND | OR ~ NOT Mt vi v d v dng ton t logic: >> A = 1:9; B = 9 - A; >> tf = A>4 tf= 0 0 0 0 1 1 1 1 1 Tm kim cc phn t ca A m ln hn 4. >> tf = ~(A>4) 1 1 1 0 0 0 0 0 ph nh ca kt qu, tng ng vi v tr no bng khng thay bng mt v ngc li. >> tf = (A>2)&(A> t = 'How about this character string?' t= How about this character string? >> size(t) ans= 1 32 >> whos Name Size Bytes Class t 1x32 64 char array Grand total is 32 elements using 64 bytes Mt xu k t, n gin l dng vn bn, c t gia hai du nhy n. Mi k t trong xu l mt phn t ca mng, vi mi phn t chim hai bytes. Mun xem cc m ASCII ca mt xu k t, bn phi dng cc php ton s hc i vi xu, hoc chuyn n sang dng s, dng hm double . V d: >> double(t) ans= Columns 1 through 12 72 111 119 32 97 98 111 117 116 32 116 104 Columns 12 through 24 105 115 32 99 104 97 114 97 99 116 101 114 Columns 25 through 32 32 115 116 114 105 110 103 63 >> abs(t) ans= Columns 1 through 12 72 111 119 32 97 98 111 117 116 32 116 104 Columns 13 through 24 105 115 32 99 104 97 114 97 99 116 101 114 Columns 25 through 32 32 115 116 114 105 110 103 63 Hm char chuyn li thnh xu: >> char(t) ans= How about this character string? Vi mng xu l mt mng s vi thuc tnh c bit, chng ta c th thao tc bng tt c cc cng c thao tc vi mng sn c trong MATLAB. V d: >> u = t(16:24) u= character a ch ca xu cng ging nh mng. y phn t t 16 n 24 cha t character >> u = t(24:-1:16) retcarahc 57. 57 y l t character c ngc li >> u = t(16:24) u= c h a r a c t e r Dng ton t chuyn v chuyn t character sang dng ma trn ct >> v = 'I cant't find the manual!' v= I can't find the manual! Du nhy n vi xu k t l biu tng trong hai du nhy n. Chng ta c th ni hai xu nh i vi hai mng: >> w = [u,v] w= character I can t find the manual! Hm disp cho php bn hin th xu k t m khng c tn bin >> disp(v) I can't find the manual Ch l trng thi v= b b i, iu ny rt c ch cho chng ta hin th nhng li tr gip trong script file. Cng ging nh i vi ma trn, xu k t c th c nhiu hng, nhng mi mt hng phi c s ct bng nhau, cho s ct ca chng bng nhau chng ta c th dng k t trng. >> v = ['However, this' 'does work! '] v= However, this does work! >> w = ['this'; ' does not'] ??? All rows in the bracketed expression must have the same number of columns. >> size(v) ans= 2 13 58. 58 Ta cng c th dng hm char to mt mng xu t cc xu, v n t thm cc k t trng to ra mt mng y . >> w = char('this', 'does not') w= this does not >> size(w) ans= 2 8 9.2 Chuyn i xu b xung thm v s chuyn i gia xu v m ASCII ca n nh trnh by trn, MATLAB a ra mt s cc hm chuyn i hu ch khc, chng bao gm di y: Cc hm chuyn i xu base2dec Da trn xu x chuyn sang h mi. bin2dec T xu nh phn sang h mi char T xu sang ASCII dec2base T h mi sang xu x dec2bin T s h mi sang xu nh phn dec2hex T s h mi sang xu ca cc s h mi su. double Chuyn t m ASCII sang xu fprintf Vit dng vn bn ra file hoc ra mn hnh hex2dec Chuyn t xu gm cc s h 16 sang cc s h mi hex2num Chuyn t xu cc s h 16 sang s du phy ng IEEE int2str Chuyn t s nguyn sang xu mat2str Chuyn t ma trn s sang xu gm cc s num2str Chuyn t s sang xu sprintf Chuyn t m ASCII sang xu sscanf Chuyn t s sang xu c iu chnh kch thc str2num Chuyn t xu sang s khng c iu chnh kch thc Trong trng hp chng ta to mt thng bo c cha cc s khng phi l xu, nhng hm chuyn i s gip chng ta lm vic . >> rad = 2.5; area = pi*rad^2; >> t = ['A circle of radius ' num2str(rad)... 'has an area of ' num2str(area) '.']; >> disp(t) A circle of radius 2.5 has an area of 19.63. y hm num2str c dng chuyn t s sang xu. Ging nh vy int2str chuyn t s nguyn sang xu, c hai hm ny gi hm sprintf, n ging nh c php trong C dng chuyn s sang xu. 9.3 Cc hm v xu MATLAB a ra mt s cc hm ca xu, bao gm cc hm trong danh sch di y: 59. 59 Cc hm xu blanks(n) Tr li mt xu gm cc k t trng hay du cch deblank(s) Tr li cc vt trng t mt xu eval(xu) c lng xu nh l mt lnh ca MATLAB eval(try, catch) c lng xu v bt li feval(f, x, y, ...) Hm evaluate a ra bng xu findstr(s1, s2) Tm kim mt xu trong mt xu khc ischar(s) True nu a vo l mt xu isletter(s) True ti nhng v tr k t Alphabet tn ti isspace(s) True ti nhng v tr l k t trng lasterr Xu ca li cui cng MATLAB a ra lower(s) Xu vi nhng ch ci thng strcat(s1, s2, ...) Ni cc xu thnh hng strcmp(s1, s2) True nu cc xu ging nhau strmatch(s1, s2) Tm kim kh nng ging nhau ca xu strncmp(s1, s2, n) True nu n k t u ging nhau strrep(s1, s2) Thay th mt xu bng mt xu khc strtok(s) Tm kim du hiu cho xu strvcat(s1, s2, ...) Ni cc xu thnh ct upper(s) Chuyn thnh ch in Mt s cc hm trn cung cp kh nng x l cc xu c bn. V d nh, findstr tr li ch s bt u ca mt xu trong mt xu khc: >> b = 'Peter Piper picked a peck of pickled peppers'; >> findstr(b, ' ') % Tm kim khong trng 6 12 19 21 26 29 37 >> findstr(b, 'p') 9 13 22 30 38 40 41 >> find(b=='p') 9 13 22 30 38 40 41 >> findstr(b, 'cow') % Tm kim t cow ans= [ ] >> findstr(b,'pick') ans= 13 30 Hm ny tr li ma trn rng khi khng c nhng phn cn tm. >> strrep(b,'Peter','Pamela') ans= Pamela Piper picked a peck of pickled peppers Nh trnh by trn, strrep n gin ch l s thay th mt xu. strrep khng lm vic vi ma trn xu, v vy trc tin bn cn phi chuyn t ma trn thnh vector. 9.4 Ma trn t bo ca xu 60. 60 Ma trn t bo l mt kiu d liu cho php bn gi tn v thao tc vi mt nhm d liu c nhiu kch c v nhiu kiu. >> C = {'How';'about';'this for a';'cell array of strings?'} C= 'How' 'about' 'this for a' 'cell array of strings?' >> size(C) 4 1 Ma trn trn c 4 hng v mt ct nhng mi ct li c di khc nhau. Tt c cc phn t c t trong du ngoc nhn, mi phn t c t trong du nhy n, gia hai hng l du chm phy. Mng t bo c nh a ch cng ging nh mng thng thng: >> C(2:) ans= 'about' 'this for a' >> C([4 3 2 1]) ans= 'cell array of strings?' 'this for a' 'about' 'How' >> C(1) ans= How y vn l mng t bo. thay i du nhy ca t bo, ta s dng ngoc nhn: >> s = c{4} ans= cell array of strings? >> size(s) ans= 1 22 truy nhp vo nhiu hn mt t bo, ta dng hm deal: >> [a, b, c, d] = deal(C{:}) a= How b= about c= this for a d= cell array of trings? y C{:} ch truy nhp n tt c cc t bo, n ging nh: 61. 61 >> [a, b, c, d] = deal(C{1}, C{2}, C{3}, C{4}) a= How b= about c= this for a d= cell array of strings? Hm char c th dng chuyn t mng t bo sang mng xu: >> s = char(C) How about this for a cell array of strings? >> size(s) % Kt qu l cc xu vi cc khong trng. ans= 4 22 >> ss = char(C(1:2)) ss= How about >> size(ss) ans= 2 5 chuyn ngc li mng t bo, ta dng hm cellstr: >> cellstr(s) ans= 'How' 'about' 'this for a' 'cell array of strings?' Hu ht cc hm xu trong MATLAB lm vic vi c mng xu hoc mng t bo. V mng t bo s c trnh by r hn Chng 19. chng 10 thi gian MATLAB a ra mt s hm thao tc v thi gian t bn c th tnh ton vi ngy, gi, in lch v tm kin nhng ngy c th. MATLAB cha ngy v thi gian nh mt s c chnh xc hai s sau du phy tng trng cho s ngy, bt u bng nm khng. V d, mng 1 thng 1 nm 1997 ti lc na m, n c tng trng bi s 729391, v cng mt ngy nhng lc bui cha l 729391.5. Cu trc ny c th d dng cho my tnh x l, nhng n rt kh din gii. Do vy MATLAB cung cp cc hm tr gip chuyn i gia s v xu k t v thao tc vi ngy v thi gian. 62. 62 10.1 Ngy v gi hin ti Hm clock tr v ngy v gi hin ti cha trong mt mng. V d: >> T = clock T= 1997 1 21 16 33 39.934708 Hm now tr v ngy v thi gian hin ti nh s ngy quy c ca my hoc n gin l s ngy. >> t = now t= 729411.690045541 C hai kt kt qu trn c cng mt thng tin. Hm date tr li ngy hin ti nh mt xu theo mu: dd-mmm-yyyy >> date ans = 21-Jan-1997 10.2 S chuyn i gia cc kiu Bn c th chuyn s ngy ra xu, s dng hm datestr. Cu trc ca hm ny c dng nh sau: datestr(date_number,format_spec). Sau y l tr gip ca help cho hm datestr: >> help datestr DATESTR string representation of date. DATESTR(D,DATEFORM) converts a serial data number D (as returned by DATENUM) into a date string. The string is formatted according to the format number or string DATEFORM (see table below). By default, DATEFORM is 1, 16, or 0 depending on whether D contains dates, times or both. DATEFORM number DATEFORM string Example 0 'dd-mmm-yyyy HH:MM:SS' 01-Mar-1995 15:45:17 1 'dd-mmm-yyyy' 01-Mar-1995 2 'mm/dd/yy' 03/01/95 3 'mmm' Mar 4 'm' M 5 'mm' 3 6 'mm/dd' 03/01 7 'dd' 1 63. 63 8 'ddd' Wed 9 'd' W 10 'yyyy' 1995 11 'yy' 95 12 'mmmyy' Mar95 13 'HH:MM:SS' 15:45:17 14 'HH:MM:SS PM' 3:45:17 PM 'HH:MM' 15:45 16 'HH:MM PM' 3:45 PM 17 'QQ-YY' Q1-96 18 'QQ' Q1 v d vi hm datestr: >> datestr(t) ans= 21-Jan-1997 16: 33: 40 >> datestr(t,14) ans= 4: 33: 40 PM Hm datenum l hm ngc ca datestr. Hm ny chuyn mt xu k t dng ngy dng mu datenum(str), hoc mt s c lp hoc mt vector sang s dng ngy, dng mu: datenum(year, month, day) hoc datenum(year, month, day, hour, minute, second). >> datenum('21-Jan-1997 16: 33: 40') ans= 729411.690045541 >> datenum(1997, 01, 21) ans= 729411 >> datenum(1997, 01, 21, 16, 33, 40) ans= 729411.690045541 Hm datevec chuyn mt xu k t dng ngy (dng datestr dng 0, 1, 2, 6, 13, 14, 15, hoc 16) hoc mt s dng ngy sang vector. >> c = datevec('12/ 24/ 1984') c= 1984 12 24 0 0 0 >> [yr, mo, day, hr, nim, sec] = datevec('24-Dec-1984 08: 22') yr= 1984 mo= 12 64. 64 day= 24 hr= 8 min= 22 sec= 0 10.3 Cc hm v ngy Ngy ca tun c th tm t xu dng ngy hoc s dng ngy, dng hm weekday, MATLAB s dng quy c Sunday = 1 v Saturday = 7. >> [d w] = weekday(728647) d= 2 w= Mon >> [d w] = weekday('21-Dec-1994') d= 4 w= Wed Ngy cui thng c th tm bng hm eomday. Trong bt buc phi a vo nm, thng. >> eomday(1996, 2) % 1996 l nm ans= 29 MATLAB c th to lch cho bt c thng no bn yu cu, v hin th n trong ca s lnh hoc t chng trong mt ma trn 6x7. >> calendar('7/ 17/ 95') Jul 1995 S M Tu W Th F S 0 0 0 0 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 0 0 0 0 0 >> S = calendar(1994, 12) S = 0 0 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 0 0 0 0 0 0 0 65. 65 10.4 Cc hm v thi gian Lnh tic v toc c th c dng i vi thi gian trong tnh ton: >> tic; plot(rand(5)); toc elapsed_time = 0.2200 Hnh 10.1 >> tic; plot(rand(5)); toc elapsed_time = 0.1700 66. 66 Hnh 10.2 Ch s khc nhau v hm thi gian gia elapsed_time i vi lnh plot, lnh plot th hai nhanh hn v MATLAB to hnh dng ca s v dch cc hm cn thit vo trong nh. Hm cputime tr v tng s thi gian ca CPU (Central Processing Unit), tnh theo giy, trong thi gian MATLAB dng t khi n c khi ng ln. Hm etime tnh khong thi gian gia hai vector thi gian. Cc vector phi l vector hng gm 6 phn t, ging nh kt qu tr v trong lnh clock v datevec. Ti thi gian hin ti etime khng chuyn gia thng v nm. Tt c cc hm c th s dng tnh ton thi gian. >> t0 = cputime; pause(5); cputime - t0 ans = 5 >> t1 = clock; pause(2); etime(clock,t1) ans = 2.0400 Bn hy xem help v MATLAB CD tm hiu thm v nhng hm ny. 10.5 V th vi hm ngy v thi gian i khi n rt c ch v th trong dng xu ngy v thi gian cho mt hoc hn mt cc nhn. Hm datetick t ng vi cng vic ny. Nu th c v, dng s ngy cho mt hoc hn mt trc, th hm datetick s vit cc nhn cho im nh du. V d sau v hnh 10.3: >> t = (1900:10:1990)'; >> p = [75.995; 91.972; 105.771; 123.203; 131.669; 150.697; 179.323; 203.212; 226.505; 249.633]; 67. 67 >> plot(datenum(t,1,1),p) >> datetick('x','yyyy') % use 4-digit year on the x-axis >> title('Population by year') Chng ta c th to biu ct ca cng ty bn hng bn t thng 11 nm 1994 n thng 12 nm 1995 (Hnh 10.4): >> y = [1994 1994 1995*ones(1,12)]'; >> m = [11 12 (1:12)]'; >> s=[1.1 1.3 1.2 1.4 .16 1.5 1.7 1.6 1.8 1.3 1.9 1.7 1.6 1.95]'; >> bar(datenum(y,m,1),s) >> datetick('x','mmmyy') >> ylabel('$ Million') >> title('Monthly Sales') Hnh 10.3 68. 68 Hnh 10.4 V d: Tm th su ngy 13 By gi chng ta c gii thiu cc lnh v thi gian, hy dng chng to mt s hm c ch. Nu bn l ngi cn thn, bn mun bit bao gi th su ngy 13 xy ra. Hm M_file s cho bn nhng thng tin ny. function m=friday(start) % FRIDAY Date of the next Friday the 13th % FRIDAY display the next occurrence of Friday the % 13th % FRIDAY(START) start the search at the date % specified by START % M=FRIDAY return the date number of the next Friday % the 13th if nargin==0 start=now; % use the current date if none end % was supplied [yr,mo,da]=datevec(start); da=da+6-weekday(start); % Start with the Friday in % this week start=datenum(yr,mo,da,0,0,0); while 1 [yr,mo,da]=datevec(start); if (weekday(start)==6)&(da==13) break; 69. 69 end start=datenum(start+7); % skip to the next Friday end if nargout==0 disp(['Friday,'datestr(start,1)]) % Display the % the result else m=start; % or return the resulting date end % number Sau khi chy chng trnh ta c kt qu: >> friday Friday,13-Aug-1999 Nu bn mun c cnh bo cho ton b nm, xem hm fridays: function F=fridays(ynum) % FRIDAY List the Friday the 13ths in the year ynum. % M=FRIDAY return the date numbers found. % if nargin==0 [ynum dummy]=datevec(now); % use the current date if end % non was supplied MM=[]; trynum=datenum(ynum,1,13,0,0,0); % check January 13 first trynum=friday(trynum); % find the first one [tyr dummy]=datevec(trynum); while tyr==ynum % May be there are more this year MM=[MM;trynum]; trynum=friday(trynum+7); % skip to the next week [tyr dummy]=datevec(trynum); end if nargout==0 disp('Fridays'); % Display the results disp(datestr(MM,1)) % Display the result else F=MM; % or return the vector of end % date number -------------------oOo------------------- chng 11 VNG LP IU KHIN Cc ngn ng lp trnh v my tnh c kh nng lp trnh u cp n mt c im l cho php bn iu khin vng lp ca cc cu lnh da trn nhng cu trc ca n. Nu bn tng s dng 70. 70 nhng c im ny th phn ny s rt n gin i vi bn. Mt khc nu vng lp iu khin l mi i vi bn th n s rt rc ri, nu nh vy, th bn hy nghin cu n t t. Vng lp iu khin rt hu ch v c ng dng rt rng ri, n lm cho cc php ton c thc hin mt cch thun tin hn v nhanh hn. MATLAB a ra cc dng vng lp c iu khin l: vng lp for, vng lp while, cu trc if-else-end v cu trc switch-case. V cc cu trc thng hon thin cc lnh ca MATLAB, nn chng thng xut hin trong M_file, hn l trong cu lnh nh trc tip ti du nhc ca MATLAB. 11.1 Vng lp for Vng lp for cho php mt nhm lnh thc hin lp li mt s ln c nh. C php ca vng lp for nh sau: for x = array commands % Khi cc lnh end Cc cu lnh gia hai trng thi for v end c thc hin mt ln cho tt c cc ct ca mng (array). Ti mi ln lp li, x c gn cho phn t ct tip theo nh trong sut n ln ca vng lp, x = array(:, n). V d: >> for n = 1:10 x(n) = sin(n*pi/10); end >> x x = Columns 1 through 7 0.3090 0.5878 0.8090 0.9511 1.0000 0.9511 0.8090 Columns 8 through 10 0.5878 0.3090 0.0000 Ni mt cch khc, trng thi th nht yu cu: Cho n bng t 1 n 10, tnh gi tr ca tt c cc trng thi cho n trng thi k tip trng thi end. u tin trong vng lp for n=1, tip theo n=2, v c nh vy cho n trng hp n=10. Sau trng hp n=10, vng lp for kt thc, v tt c cc lnh sau trng thi end ca vng lp c thc hin. Vng lp for khng th b kt thc bng cch gn li bin iu khin n trong vng lp: >> for n = 1:10 x(n) = sin(n*pi/10); n = 10; end >> x x = Columns 1 through 7 0.3090 0.5878 0.8090 0.9511 1.0000 0.9511 0.8090 Columns 8 through 10 0.5878 0.3090 0.0000 71. 71 Trng thi 1:10 l mt trng thi to ln mng MATLAB tiu chun. Bt c kiu mng no ca MATLAB u c chp nhn trong vng lp for: >> data = [3 9 45 6; 7 16 -1 5] data = 3 9 45 6 7 16 -1 5 >> for n = data x = n(1)-n(2) end x = -4 x = -7 x = 46 x = 1 Bnh thng vng lp for c th lng vo nhau: >> for n = 1:5 for m = 5:-1:1 A(n,m) = n^2+m^2; end disp(n) end 1 2 3 4 5 >> A A = 2 5 10 17 26 5 8 13 20 29 10 13 18 25 34 17 20 25 32 41 26 29 34 41 50 Khng nn dng vng lp for khi m tng ng vi vic ta dng mng tnh ton. Nh trong v d trc ta cng c th dng mng tnh ton: >> n = 1: 10; >> x = sin(n*pi/10) x = Columns 1 through 7 0.3090 0.5878 0.8090 0.9511 1.0000 0.9511 0.8090 Columns 8 through 10 0.5878 0.3090 0.0000 Trong hai trng hp nh trn, trng hp th hai ta dng mng tnh ton cng c kt qu nh vy, nhng n nhanh hn v cc tho tc cng t hn. 72. 72 tng tc tnh ton, mng cn phi c khi to trc khi thc hin vng lp for (hoc vng lp while). Trong v d trc c mi ln lnh trong vng lp for c tnh, kch c ca bin x li tng ln 1. iu ny lm cho MATLAB mt thi gian cp nht thm b nh cho x trong mi vng. rt ngn bc ny, v d v vng lp for trc vit li nh sau: >> x = zeros(1,10); % Khi to b nh cho x >> for n = 1: 10 x = sin(n*pi/10); end By gi ch cn thay i gi tr ca cc phn t ca x. 11.2 Vng lp while Vng lp while thc hin lp li mt nhm lnh mt s ln c nh, nhng khng bit trc - c s ln lp li. C php ca vng lp while nh sau: while biu thc iu kin khi cc lnh.. end khi cc lnh.. gia hai trng thi while v end c thc hin lp i lp li khi tt c cc biu thc iu kin l ng. Thng thng gi tr ca iu kin a ra kt qu l mt s, nhng nu cc kt qu a ra l mt mng th vn hp l. Trong trng hp mng, tt c cc phn t trong mng kt qu a ra phi l True (ng). C th tham kho v d di y: >> num = 0; ESP = 1; >> while (1+ESP) > 1 ESP = ESP/ 2; num = num + 1; end >> num num= 53 >> ESP = 2*ESP ESP= 2.2204e-16 V d ny a ra cch tnh gi tr c bit eps ca MATLAB, n l mt s dng nh nht, c th cng vi 1 c mt s ln hn 1 dng cho gii hn chnh xc. y chng ta dng ch hoa EPS chc chn rng gi tr eps ca MATLAB khng ghi ln. Trong v d ny, gi tr ca EPS bt u bng 1, trong khi iu kin (1+EPS)>1 l True ( cho n khc khng), cc lnh trong vng lp while c tnh, gi tr ca EPS tip tc c chia i, gi tr ca EPS nh i, m cng EPS vi 1 th n l s nh nht m ln hn 1. Do my tnh s dng s c nh c 16 ch s nn khi gi tr nh qu th n lm trn bng 0, v khi iu kin (EPS+1)> 1 False (sai) v vng lp while dng li. Cui cng EPS c nhn vi 2 v sau ln chia cui cng cho 2 th vng lp dng li. 11.3 Cu trc if-else-end Nhiu khi chng ta cn nhng cu lnh c thc hin theo mt iu kin no . Trong ngn ng lp trnh, logic ny c cung cp bi cu trc if-else-end. C php ca cu trc ny nh sau: if biu thc iu kin khi cc lnh... 73. 73 end Khi cc lnh gia hai trng thi if v end c thc hin khi tt biu thc iu kin l ng. Trong trng hp iu kin bao gm cc iu kin con, th tt c cc iu kin con c tnh v tr v mt trng thi logic ca iu kin. V d: >> apple = 10 % s to >> cost = apple*25 cost= 250 >> if apple > 5 cost = (1-20/100)*cost; % b i 20% end >> cost cost 200 Trong trng hp c hai iu kin thay i, cu trc if-else-end l: if biu thc iu kin khi cc lnh c thc hin nu iu kin l ng else khi cc lnh c thc hin nu iu kin l sai end Khi c ba hoc nhiu iu kin thay i, cu trc ca n s l: if biu thc iu kin 1 khi cc lnh c thc hin nu iu kin 1 l ng elseif biu thc iu kin 2 khi cc lnh c thc hin nu iu kin 2 l ng elseif biu thc iu kin 3 khi cc lnh c thc hin nu iu kin 3 l ng elseif biu thc iu kin 4 . . . else khi cc lnh c thc hin nu khng c iu kin no ng. End Trong mu dng ny th khi biu thc iu kin u tin ng th cc cu lnh sau khng c kim tra na, cc cu trc if-else-end cn li c b qua. Hn na cu lnh else cui c th khng cn cho vo. i vi cu trc if-else-end, chng ta cng c th lng vo cc vng lp for v while: >> EPS = 1; >> for num = 1:100 EPS = EPS/ 2; if (1+EPS)< 1 EPS = EPS*2 74. 74 break end end EPS = 2.2204e-16 >> num num= 53 V d ny a ra cch khc tnh s eps. Trong