207
1 Matlab toàn tp cài đặt 1. MATLAB for WIN Yêu cu hthng Hthng IBM hoc tương thích 100% vi bvi xlí 486 Intel cng vi bđồng xlí toán hc 487 ( ngoi tr486 DX có bxlí bên trong ), Pentium hoc Pentium Pro Processor. Microsoft Window 95 hoc Window NT. a) CD ROM - Bđiu phi đồ ho8 bit và card màn hình ( 256 màu đồng thi ) - Khong trng đĩa đủ để cài đặt và chy các tuchn. Syêu cu đĩa cng thay đổi tutheo kích ccác partition và các tp trgiúp help được cài đặt trc tiếp theo tuchn. Quá trình cài đặt sthông báo cho bn biết tmvdung lượng đĩa yêu cu. Ví d: Partition vi mt liên cung mt 0 cn 25 MB cho riêng MATLAB và 50 MB cho cMATLAB và HELP. Partition vi liên cung 64 KB cn 115 MB cho riêng MATLAB và 250 MB cho cMATLAB và HELP. b ) Bnh. Microsoft WIndow 95: 8 MB ti thiu và 16 MB khuyến ngh. Microsoft WIN NT 3.51 hoc 4.0: 12 MB ti thiu và 16 MB khuyến ngh. Các khuyến nghBnhphvào (Bnhbsung: additional Memory). Vmch tăng tc đồ hobtrcho Microsoft Window. Máy in trgiúp cho Microsoft Window. Vmch âm thanh trgiúp cho Microsoft Window. Microsoft Word 7.0 hoc hơn ( nếu bn có ý định sdng MATLAB NoteBook ). Trình biên dch Watcom C, Borland, Microsoft (xây dng file MEX). Netscape Navigator 2.0 hoc version cao hơn hoc Microsoft Internet Explorer 3.0 để chy MATLAB Help Desk. Quá trình cài đặt 1. Đặt đĩa vào CD. Trên WIN 95 chương trình SETUP bt đầu chy tđộng nếu như MATLAB cha được cài ttrước. Còn không, nhn đúp vào biu tượng setup.exe để bt đầu quá trình cài đặt. 2. Chp nhn hay bđi nhng khuyến cáo vcp đăng kí phn mm trên màn hình. Nếu chp nhn bn mi có thbt đầu quá trình cài đặt. 3. Trên Custumer Information, nhp vào tên bn, địa chca bn. Tên không được quá 30 kí t. Nhn nút NEXT. 4. Nhn vào các hp trng thành phn du ‘v‘ nếu như bn mun tuchn đó và nhn tiếp nếu bn có ý định không mun tuchn đó ( có ththêm vào sau này nếu mun ). Trên màn hình hin thC:\MATLAB là thư mc đích mc định ca quá trình cài đặt. Nếu bn mun cài đặt vào thư mc khác hoc đổi tên thư mc thì bn la chn Browse. MATLAB cho Macintosh.

MatLab Toan Tap

Embed Size (px)

DESCRIPTION

Sách sử dụng cho những người cần học Matlab

Citation preview

  • 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

    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 By gi 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 lng 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.

  • 3

    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...

    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=

  • 4

    12 >> cost = erases*25 + pads*52 + tape*99 cost= 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 nhng 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 / hoc \ 56/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:

  • 5

    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. 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. Trc 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=

  • 6

    12 >> erases = 6 erases= 6 >> iterms iterms= 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

  • 7

    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 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

  • 8

    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= -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

    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

  • 10

    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 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=

  • 11

    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) 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)

  • 12

    buiding_height = 54.3599 V d s suy gim do phn r 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

  • 13

    >> % 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= 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 tr-c 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 = = =

  • 14

    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 = 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

  • 15

    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 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,

  • 16

    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. 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

  • 17

    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: 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

  • 18

    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)

    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

  • 19

    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 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

  • 20

    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 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 di 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 trng 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:

  • 21

    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 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...

  • 22

    (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: (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.

  • 23

    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.

    Hnh 5.2 path browser trong MATLAB to Student

  • 24

    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-----------------

    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 ( p 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.1p nh vy s cc gi tr ca x l m c. T ta c mng cc gi tr ca x l x= 0, 0.1p, 0.2p,..., p

    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.1p 0.2p 0.3p 0.4p 0.5p 0.6p 0.7p 0.8p 0.9p p y 0 0.31 0.59 0.81 0.95 1.0 0.95 0.81 0.59 0.31 0

  • 25

    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= 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:

  • 26

    >> 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 p: >> x= (0:0.1:1)*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 +) 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

  • 27

    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: >> 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.

  • 28

    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 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

  • 29

    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: >> 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.

  • 30

    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 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

  • 31

    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 - 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

  • 32

    >> 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. 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

  • 33

    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 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=

  • 34

    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; >> 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,:) = []

  • 35

    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= 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

  • 36

    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. >> 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

  • 37

    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) 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]

  • 38

    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 -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)

  • 39

    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) 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

  • 40

    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= -9 -7 -5 -3 -1 1 3 5 7 9

  • 41

    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. >> 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

  • 42

    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] c= 0 3 3 0 >> d = cat(3,a,b,c) d(:,:,1)= 1 0 0 1 d(:,:,2)=

  • 43

    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) 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

  • 44

    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) 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)=[];

  • 45

    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 tr-c 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') title('Acid-Water Bath Dipping Example') Chy chng trnh trn ta c kt qu nh sau:

  • 46

    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 7.1 To phng trnh tuyn tnh.

  • 47

    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 = A\b x= 25.0000 22.0000 99.0000

  • 48

    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 = A\b % 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. Ph-ng 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=

  • 49

    366 804 351 >> x = A\b % 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

  • 50

    null(A) Khong rng orth(A) Tnh trc giao 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

  • 51

    ma trn 3x1 gm cc phn t l s cung cp bi hm random gia 0 v 1. >> randn(2) 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.

  • 52

    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 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=A\y % 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 =

  • 53

    -4.0000 + 6.0000i -2.0000 + 6.0000i 2.0000 + 4.0000i vmag = 7.2111 6.3246 4.4721 vphase = 123.6901 108.4349 63.4349

    Hnh 7.2

    ---------------------oOo---------------------

  • 54

    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. 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

  • 55

    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 -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

  • 56

    0 0 1 1 1 0 0 0 0 Tr li mt ti nhng v tr m phn t ca A ln hn 2 v nh hn 6. 8.3 Cc hm logic v hm quan h Thm vo nhng ton t logic v ton t quan h cp n trn, MATLAB cung cp cc hm logic v quan h khc di y: Cc hm logic v hm quan h khc xor(x,y)

    Ton t hoc. Tr li gi tr 1 khi x hoc y khc khng (True), gi tr 0 khi c x v cng bng khng (False) hoc cng khc khng (True)

    any(x).

    Tr li 1 nu bt c phn t no trong vector x khc khng. Tr li 1 cho mi ct trong ma trn x m c cc phn t khc khng.

    all(x)

    Tr li 1 nu tt c cc phn t ca vector x khc khng. Tr li 1 cho mi ct trong ma trn x m tt c cc phn t khc khng.

    MATLAB cn cung cp rt nhiu cc hm kim tra cho s tn ti ca cc gi tr c bit hoc iu kin v tr li nhng kt qu l gi tr logic. Cc hm kim tra isa(X, name) True nu X c lp i tng l name iscell(X) True nu i s l mng phn t. iscellstr(X) True nu i s l mng phn t ca cc xu. ischar(S) True nu i s l xu k t. isempty(X) True nu i s l rng. isequal(A, B) True nu A v B ging nhau. isfield(S, name) True nu namel mt trng ca cu trc S. isfinite(X) True khi cc phn t c hn. isglobal(X) True khi i s l bin ton cc. ishandle(h) True khi i s l s iu khin i tng hp l ishold True nu th hin ti gi trng thi ON. isiee True nu my tnh thc hin php s hc IEEE isinf(X) True ti nhng phn t v cng isletter(S) True khi cc phn t thuc bng ch ci. islogical(X) True khi i s l mng logic ismember(A, B) True ti nhng v tr m phn t ca A v B trng nhau isnan(X) True khi cc phn t l khng xc nh (NaN) isnumeric(X) True khi i s l mng s isppc True cho Macintosh vi b x l PowerPC isprime(X) True khi cc phn t l s nguyn t isreal(X) True khi i s khng c phn o isspace(S) True khi cc phn t l k t trng issparse(A) True nu i s l ma trn Sparse isstruct(S) True nu i s l mt cu trc isstudent True nu Student Edition ca MATLAB isunix True nu my tnh l UNIX

  • 57

    isvms True nu my tnh l VMS

    ----------------------oOo-------------------- chng 9

    VN Bn

    S tin ch ca MATLAB l x l vi cc con s. Tuy nhin chng ta nhiu ln cp n thao tc vi vn bn (text), nh khi a nhn v tiu vo trong th. Trong MATLAB bin text c dng n nh l xu k t, hoc n gin l cc xu. 9.1 Xu k t Xu k t trong MATLAB l mng ca cc gi tr ASCII m quy c ca n l cc k t. V d: >> 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:

  • 58

    >> 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 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.

  • 59

    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

    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

  • 60

    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 t