You are on page 1of 42

TNG LIN ON LAO NG VIT NAM

TRNG I HC TN C THNG

BI TP LN
MN: MATLAB V NG DNG
TI: LP TRNH GUIDE GIAO DIN

Ging vin hng dn: NG S THIN CHU Sinh vin thc hin: NGUYN LNG THNH MSSV: Lp: 40900040 09040003

TP.H Ch Minh ngy 26 /10 /2012

Li ni u: Ngy xa nhng cng c tnh ton th cng bng tay, hoc nhng bn tnh c in h tr ton hc, gi y vi s i mi ca ngnh in t, cng ngh thng tin, cc cng c tnh ton h tr cc ngnh k thut hin i ra i, vi s mnh m v nhanh chng ca cc cng c phn mm, cc cng c phn ln thay th cho vic thc hin th cng, gip kim tra kt qu mt cch nhanh chng, gim chi ph. Cng vi chnh l cc phn mm cc cng c h tr k thut nh phn mm Win cc, Protell, Protues, Mlap, Matlab. L nhng cng c khng th thiu trong ngnh k thut. sau y mnh s gii thiu phn mm Matlab, mt cng c h tr tnh ton v m phng h thng ht sc trc quan v chnh xc. Hn l phn mm Matlab hin nay khng cn xa l g vi ngi dng, n l mt cng c h tr tnh ton v m phng thc t rt mnh, ngoi cc tnh nng thc hin nhng iu , Matlab cn h tr to giao din ngi dng (GUI), Chng ta ln lt tm hiu ng dng t c bn hiu r c dao din GUI l g, lm th no bt u vi GUI Vi ti v giao din GUI chng ta s i su vo nghin cu ng dng v pht trin GUI, pht trin giao din ngi dng.

[Type text]

Page 1

ti - bi 1: Vit giao din bao gm nhng yu cu sau: 1) Cho php chn thc thi mt trong nhng hm sau: y=sin(x), y=cos(x), y=tg(x), y=cotg(x), y=arcsin(x), y=arcos(x), y=arctg(x), y=arccotg(x), y=sinh(x), y=cosh(x), y=tgh(x), y=cotgh(x) 2) Cho php chn nhp/hin th theo hoc Radian. 3) Cho php nhp khon gi tr ca x 4) Hin th th ca hm c chn theo gi tr ca x nhp vo cu 3 ln giao din, c nt cho php gi hoc xa hnh khi v hm mi.

[Type text]

Page 2

Ph lc: PHN 1: S LC V LP TRNH GIAO DIN NGI DNG (GUIDE) TRONG MATLAB..........Trang 04 I. II. III. GUI L G? BT U VI GUI! CC BC CN THC HIN TRC KHI BT U

PHN 2: BT U THAO TC VI GUI ..Trang 06 I. II. III. KHI NG GUI.Trang 06 M T CHC NNG CC CNG C TRONG GIAO DIN GUI.Trang 07 CHNH SA HP THOI INSPECTORTrang 08

PHN 3: THIT K GIAO DIN (GUI)..Trang 10 I. II. III. THIT K GIAO DINTrang 10 MT VI THUC TNH CA I TNG TRONG MENU INSPECTOR.Trang 11 MT VI CHC NNG M RNG..Trang 14

PHN 4 : THC THI HM TRONG GUIDE...Trang 17 I. GIAO DIN TRONG MFILE...Trang 17 II. MT S HM TRONG GUI...Trang 18 III. KHI NIM BIN H THNG...Trang 19 PHN 5: LP TRNH CC I TNGTrang 20 I. NT NHN DEGREE TRONG BNG SELECT INPUT..Trang 20 II. NT NHN DEGREE TRONG BNG SELECT INPUT..Trang 21 III. NT NHN DU = Trang 21 IV. EDIT TEXT NHP X...Trang 24 V. NT NHN PLOT ..Trang 26 VI. CHECK BOX HOLD ON V GRID ON.Trang 29 VII. NT NHN DEFAULTTrng 29 VIII. CHECKBOX COLOR ONTrang 29 IX. NT EXIT.Trang 31 PHN 6: CCH S DNG GIAO DIN..Trang 32 PHN 7: CHNG TRNH:..Trang 35

[Type text]

Page 3

[Type text]

Page 4

PHN 1: S LC V LP TRNH GIAO DIN NGI DNG (GUIDE) TRONG MATLAB

I. GUIDE L G GUI (Graphical User Interface) l giao din ha c iu khin bi nhiu thanh cng c c ngi lp trnh to sn, cho tng tc gia ngi dng l giao din chng trnh, Mi chng trnh c ngi lp trnh tp sn giao din thc hin mt vi chc nng c ngi lp tnh to sn v giao tip vi ngi s dng. ng dng ca Matlab lp trnh giao din rt mnh v d thc hin, n c th to ra giao din ngi dng tng t VBB, C++ GUI bao gm y cc chng trnh h tr nh thc hin php ton LOGIC, m phng khng gian 2D,3D, c hin th d liu, lin kt a phng tin.Giao tip vi ngi dng thng qua hnh nh, cc nt nhn thc thi ... Hu ht GUI ch thc hin (tr li) lnh ngi dng thng qua cc tc ng ca ngi dng ln giao din, ngi s dng khng cn bit cu trc chng trnh vn c th thc hin c. GUI c thc hin thng qua cc hm CALLBACK. Khi ngi dng tc ng ln giao din bng cc cch khc nhau, hm CALLBACK s c gi thc thi. II. BT U VI GUI C 2 phng php lp trnh GUI + Cch n gin nht l s dng cng c c sn trong GUI Matlab lp trnh. u im ca cch ny l d thc hin v cc hm FUNCTION c GUI t to sn. + Cch ny c lp trnh t siu tp Mfile bng cc hm FUNCTION do ngi lp trnh t vit, n c u im l ty bin cao. Tuy nhin cch ny kh hn v i hi ngi lp trnh phi c hiu bit su v trnh . y vi nhng bi tp n gin v giao din, ta thc hin cch th nht lp trnh giao din vi nhng cng c c h tr sn trong Matlab Khi thao tc trn giao din chng ta khng th thay i cc hm trong n. III. CC BC CN THC HIN TRC KHI BT U Trc tin bt u lp trnh ta cn phi xc nh mc ch ca chng trnh l g? Sau tin hnh xc nh cc bc thc hin mo phng giao din ngi dng sao cho hp l v chnh xc Bc cui cng l vit chng trnh v thc thi.

S sau y m phng trnh t thc hin vi GUI:


[Type text] Page 5

S khi m t cch thc hot ng ca GUI khi thao tc trn giao din Khi bt u vi GUI, GUI t ng to ra cc m tp tin c thc thi bi hm Callback function. GUI thao tc trn nhng k t m ngi dng nhp vo vo chuyn sang dng s hc, ni cch khc, giao din GUI tng t nh nhng lnh thc thi trong Comment Windowns. Tt c cc hm callback thc thi nhng lnh cha trong n. Chng ta nn s dng chc nng HELP ca Matlab tm hiu them tt c cch hm thc thi trong GUI, cch to v thao tc vi GUI

[Type text]

Page 6

PHN 2: BT U THAO TC VI GUI y l phin bn Matlab R2011B, cc phin bn khc cng c th thao tc tng t. IV. KHI NG GUI Thc hin khi ng Matlab n GUI theo hnh sau: + Khi ng Matlab t biu tng Matlab trn mn hnh desktop + Trong ca s Comment Windowns g lnh guide v enter: ta c giao din mn hnh nh sau:

Chn: Dng Blank GUI (Default): tao mt giao din gui bt u vi giao din trng. Cc dng cn li khi ng GUI vi mt giao din c to sn. + Ch : Trong Matlab GUI h tr sn hp thoi cng c Modal Question Dialog to ra giao din vi 2 nt ty chn yes no question thc thi lnh. Ta c th ng dng ta lnh thot khi chng trnh bng nt nhn Exit. Nhp chn OK to mt giao din bt u vi giao din trng. ta c hnh nh giao din trong GUI nh sau: Trc khi to giao din ta lu File li, Matlab s t ng lu 2 file, mt file ui .m v mt file ui .fig. hoc ta c th nhn F5, Matlab s chuyn ng dn n th mc lu file, chn ni cn lu v nhn Save.

[Type text]

Page 7

V. -

M T CHC NNG CC CNG C TRONG GIAO DIN GUI

Trong giao din trn chng ta c th thao tc ty bin cc thanh cng c ph hp vi mc ch s dng. M t chc nng cc cng c c bn: 1) Nhp chut vo thay i rng ca giao din 2) L ni cn chnh cc nt, biu tng trn giao din. 3) L ni to giao din con lin kt vi giao din chnh. 4) Nt Play (Run) thc thi chng trnh. Pha bn tri l nhm cc biu tng c Matlab GUI h tr sn: + Push Button: l nt nhn, khi nhn vo s thc thi lnh trong cu trc hm callback ca n + Slider: l thanh trt cho php ngi dng di chuyn thanh trt thc thi lnh. + Radio Button: N ging nh Check Box nhng thng c s dng to s la chn duy nht, tc l 1 ln ch c chn 1 trong s cc nhm nhiu nt. Khi mt c chn th cc cn li trong nhm b b chn. + Check box: S dng nh du tch (thc thi) vo v c th check nhiu thc thi + Edit Text: l ni cc k t c nhp vo t ngi dng, ngi dng c th thay i c + Static Text: L cc k t c hin th thng qua cc callback, hoc thng thng vit nhn cho cc biu tng, ngi dng khng th thay i ni dung.

[Type text]

Page 8

+ Pop-up Menu: m ra danh sch cc lc chn khi ngi dng nhp chut vo. Ch chn c 1 mc trong danh sch cc mc. + List Box: hp thoi danh sch cch mc, cho php ngi dng chn mt hoc nhiu mc. + Toggle Button: l nt nhn c 2 iu khin, khi nhp chut v nh ra, nt nhn c gi v lnh thc thi, khi nhp chut vo ln th 2, nt nhn nh ra, hy b lnh va thc thi. + Table: to ra mt bng tng t trong Excel. + Axes: y l giao din ha hin th hnh nh, n c nhiu thuc tnh bao gm: khng gian 2D (theo trc ng v trc ngang), 3D (hin th khng gian 3 chiu) + Panel: To ra mt mng nhm cc biu tng li vi nhau gip ta d kim sot v thao tc khi di chuyn + Button Group: qun l s la chn ca nt Radio Button. + Active Control: Qun l mt nhm cc bt hoc cc chng trnh lin quan vi nhau trong Active. VI. GII THIU HP THOI INSPECTOR Tt c cc hp thoi bn tri va nu trn s dng, chng ta nhp chn v ko th vo vng cn thit k, mi hp thoi c cc thng s chnh ring, chnh cc thng s lin quan n hp thoi no ta nhp i vo hp thoi (hoc click chut phi chn Property Inspector) hp thoi Inspector hin ra nh sau, dng thanh trt ko xung xem ht chc nng:

Pha bn tri ca Menu Inspector l tn thuc tnh, c th gi thc thi cc thuc tnh ny bng cc lnh. Pha bn tri l gi tr ca thuc tnh, gi tr ny do ngi dng t, c th thay i thng qua cc lnh gi (callback), hoc c thit lp trc.
Page 9

[Type text]

trn l s lc c bn v giao din guide ngi dng, sau y s trnh by chi tit cch to mt giao din thc t vi yu cu ca bi ton ra.

[Type text]

Page 10

PHN 3: THIT K GIAO DIN (GUI)

Trong phn ny, gii thch cc thng s trong Inspector ng thi chnh sa trn tng hp thoi s c trnh by song song. I. THIT K GIAO DIN Nhn t hp phm Ctrl + S thc hin lu file, sau khi chn ng dn lu file (Ch khng lu file vi cc bin c bit hoc bng cc con s khi u), nhn save Matlab s t ng to ra 2 file gm mt file .m v mt file .fig, trong file .m l Mfile cha cc hm Matlab to sn h tr giao din. Ln lt ko th cc nt nh hnh sau:

Mi hp thoi c Inspector , bng cch nhp p chut vo hoc chut phi chn Property Inspector. Sau y l hnh nh c nh s nh du tng thay i mt:

[Type text]

Page 11

II. MT VI THUC TNH CA I TNG TRONG MENU INSPECTOR Sau y l bng m t cc gi tr v thuc tnh ca cc hp thoi trong hnh, chng ta tin hnh thay i cc gi tr tng ng theo bng sau:
Tn thuc tnh String Fontsize Gi tr thuc tnh Select Function 10 sin cos tan cotg arcsin arccos arctan arccotg sinh cosh tanh cotgh Gii thch L Fontsize ca String

STT 1

String

Gi tr trong mi String u c hin th ln giao din, n thng c dng lm nhn ch dn. N hin th khi c gi bi hm, hoc c thit lp trc t ngi lp trnh. Hnh nh chi tit minh ha bn di (1)

[Type text]

Page 12

Tag

ham

Tag l gi tr ca thuc tnh. Thuc tnh Tag cc k quan trng, n l nhn ca mt i tng, c s dng gi thuc tnh ca i tng thng qua cc hm thay i gi tr ca thuc tnh gi tr ca Tag c phn bit ch in hoa, ch thng, khng c t tn Tag trng vi tn file lu hay trng vi bt c cc k t c bit no...Mi hp thoi ch c mt Tag duy nht v c quyn.

10

11

12

Fontsize String Fontsize String Tag Fontsize String Fontsize String Tag Fontsize String Tag Fontsize String Tag Fontsize String Fontsize String Fontsize Tag String Fontsize Tag String Fontsize Tag String Fontsize String Fontsize Tag String

15 Input 10 input 15 Select input 10 Degree degree 15 Radian radian 15 = ok 15 Output 10 15 kq Clear all 15 clc Colors on 15 color Enter the range of x 10 15 x_input Options Page 13

13

14 15 [Type text]

16

Fontsize String Fontsize Tag Enable String Fontsize Tag String Fontsize Tag Tag Visible String Fontsize Visible Tag String Fontsize Tag

10 Plot 15 plotx off Hold on 15 hold Grid on 15 grid axes1 off Plot(x) 15 off nhan Exit 15 exit thuc tnh Visible L thuc tnh cho php chn hin (on) hay n (off) ca s giao din ca n thuc tnh Enable l thuc tnh cho php hay khng cho php i tng hot ng, tng ng vi 2 trng thi on v off

17

18

19

20

21

Hnh sau m t cch thay i gi tr trong String ca Select Function:

[Type text]

Page 14

+ Sau khi vit xong, nhn OK lu li Sauk hi chnh sa cc thng s ta dng chut di chuyn cc hp thoi, b tr hp thoi theo mong mun, ta c giao din nh sau:

[Type text]

Page 15

III. MT VI CHC NNG M RNG Ch , to s thng hng, ct ca cc hp thoi cho p mt ta lm nh sau: Nhn gi phm Ctrl v nhp vo cc hp thoi mun chnh sa, Trn Menu chn Align Objects . Hp thoi Align hin ra nh sau:

[Type text]

Page 16

Trong hp thoi trn ta c th cn chnh cc nt, nhm nt sao cho chng thng hng, thng ct v u nhau. Sau khi cn chnh nhn nt Apply lu thay i. By gi ta thit lp thuc tnh chung cho giao din (ton b vn thit k hay nn giao din) + Nhp p chut vo bt c v tr no trn nn giao din vo hp thoi Inspector (hoc trn menu chn View -> Property Inspector), hp thoi Inspector hin ra nh sau: + Thit lp Tag l exit Tip tc ty chn nng cao , vo Menu Tools -> GUI Options

Hp thoi hin ra nh sau :

Trn hp thoi Resize behavior chn dng s 2 (Proportional), dng ny cho php ngi dng thay i khch thc ca giao din v cc i tng cng t ng thay i kch thc ph hp vi nn giao din, nhn OK lu thay i
Page 17

[Type text]

PHN 4 : THC THI HM TRONG GUIDE

phn ny tng cu lnh s c gii thch khi thc thi. I. GIAO DIN TRONG MFILE Khi cn chnh xong ton b giao din trong GUI, nhn F5 (hoc nhn t hp phm Ctrl + T hoc nhp vo biu tng trn thanh Menu). Khi Run, Matlab s t chy file .m v hin th doa din ha ln mn hnh. y ta bt u thao tc vi file .m

[Type text]

Page 18

Khi ta cha thao tc trong Trong file .m xut hin nh trn hnh, trong , tt c cc hm function u c Matlab h tr to sn cc hm chc nng c lin quan, ta ch vic thao tc trn . Mi sau mt hm bt k u c cc ch thch bn di (sau du %), ta c th xa ton b chng i d nhn cng khng nh hng n cc hm. Trong Mfile c sn cc hm callback, ta c th tm trong Mfile cc hm lin quan vit cu lnh, tuy nhin, nhanh hn chng ta c th lm nh sau: + Quay li mn hnh giao din GUI va thit k, nhp vo hp thoi mun thc thi hm callback, nhp chut phi chn View Callbacks -> Callback, Nh hnh sau:

+ Sau hm callback s t ng c gi v con tr chut s tm n v tr ca n trong Mfile. By gi khi mun gi mt hm no ta cng c th thc hin nh trn. Sau tin hnh vit cu lnh cho n. II. MT S HM TRONG GUI Hm callback c lp trnh cho cc nt button, checkbox, edit text nhng static text v axes th khng c hm callback. Mi mt callback c vit vi cu trc nh sau:
function Tag_Callback(hObject, eventdata, handles)

Vi Tag chnh l gi tr ca Tag m ta t khi to giao din. Cc hm cha bn trong callback bao gm hObject, evendata,handles + hObject l hm truy cp ni b ca mi function ring l + Evendata l hm xc inh thuc tnh ca function + Handles l hm truy cp lin kt gia cc function, n bao gm tt c cc cu trc ca ngi dng, c s dng truy xut qua cc iu khin khc. Hm Get cho php ta gi thuc tnh ca i tng. Hm Set cho php ta t gi tr cho thuc tnh ca i tng
Page 19

[Type text]

III. KHI NIM BIN H THNG d dng trong vic to s lin kt gia cc hm callback vi nhau, Matlab GUI h h mt bin chung gi l bin h thng gip cc hm callback u s dng c, sau y l cch s dng: Trc khi bt u lp trnh ta tm dng sau trong Mfile v them mt dng mi nh sau: (hnh mnh ha):

Gii thch: handles.unit_input lc ny l bin trung gian trong h thng, bt c hm callback no cng c th s dng n, ban u ta gn cho n gi tr =0. Chng ta phi t n hm function OpeningFcn (xem hnh) bin ny c th c khi ng ngay khi chng trnh bt u chy. ly gi tr ca n ta ch vic vit cu lnh tng t nh sau:
d=handles.unit_input; % gia tri dc lu vo bin d

Hai hm c bn nht ta s thng xuyn s dng n l: Bin h thng c lu li vi lnh: Handles(hObject,handles) t lnh trn ngay khi kt thc hm function m ta t bin h thng Bin h thng c th c nhiu ty nhng khng c trng tn. phn cui s c v d c th hiu r s lin h gia cc bin n l v bin h thng.

[Type text]

Page 20

PHN 5: LP TRNH CC I TNG I. NT NHN DEGREE TRONG BNG SELECT INPUT - Thc hin thao tc nh bc va ni trn (minh ha trong hnh), hm callback s t ng gi:

Ln lt vit cc cu lnh sau vo bn di:


b = str2num(get(handles.input,'string')); handles.unit_input = b*pi/180; guidata(hObject, handles)

Gii thch: Cu lnh 1: b = str2num(get(handles.input,'string')); + b y l mt bin c gn. + lnh handles.input: dng truy cp n thuc tnh ca edit text c Tag l input + Lnh Get dng ly gi tr thuc tnh ca String , y gi tr ca String c nhp t bn phm, Matlab s hiu n l mt chui cc k t.
get(handles.input,'string'))% ly gi tr ca string trong input

+ lnh Str2num (hoc str2double) l lnh chuyn chui k t thnh mt s thc hin cc php ton logic b = str2num(get(handles.input,'string')); % ly chui gi tr cha
% trong input v chuyn chui thnh s ri lu vo bin b.

Cu lnh 2: handles.unit_input = b*pi/180; + lc ny b l mt con s, do b*pi/180 l php ton cho php + handles.unit_input : l mt bin chung c th c s dng gia cc hm callback khc nhau.
handles.unit_input = b*pi/180;

c ngha gi tr ca bin handles.unit_input = b*pi/180 Cu lnh 3: guidata(hObject, handles) + Cu lnh trn lu handles (bin) ca handles.unit_input vo h thng d liu chung. + guidata: lu bin (handles.unit_input) Vy sau khi nhp xong nh sau:

[Type text]

Page 21

Tm tt: V yu cu ti l cho php chn nhp vo theo hoc radian nn: khi nhn nt Degree, gi tr nhp vo trong input c chuyn thnh dng s tip theo thc hin lnh tnh ton chuyn t radian sang , n c thay i v lu vo bin h thng handles.unit_input. Nh vy nt Degree lc ny tng ng vi la chn u vo l nhp theo (chuyn i t Radian sang = Radian*pi/180), ch khi no nt ny c nhn th chng mi c thc thi. II. NT NHN RADIAN TRONG BNG SELECT INPUT - Tng t nt nhn Degree, gi callback ca nt radian v vit callback cho n nh sau:
function radian_Callback(hObject, eventdata, handles) handles.unit_input = str2num(get(handles.input,'string')); guidata(hObject, handles)

Gii thch: Khi nhn nt nhn Radian th gi tr nhp vo trong input c chuyn thnh s v lu trc tip vo bin h thng handles.unit_input, tng ng vi la chn nhp hm vo theo Radian, tc l gi tr ta nhp vo bao nhiu s c gi nguyn v lu vo bin handles.unit_input, ch khi no nt ny c nhn th chng mi c thc thi III. NT NHN DU = - Tng t ta gi n callback ca n v nhp vo hm nh sau:
function ok_Callback(hObject, eventdata, handles) d=handles.unit_input y=get(handles.ham,'Value') if y==1; e=sin(d) elseif y==2; e=cos(d) elseif y==3; e=tan(d); elseif y==4; e=cot(d); elseif y==5; e=asin(d); elseif y==6; e=acos(d); elseif y==7; e=atan(d); elseif y==8; e=acot(d); elseif y==9;

[Type text]

Page 22

e=sinh(d); elseif y==10; e=cosh(d); elseif y==11; e=tanh(d); elseif y==12; e=coth(d); end if and(e<0.000001,e>-0.000001) set(handles.kq,'string','0'); elseif or(e>1000,e<-1000) set(handles.kq,'string','Math error'); else set(handles.kq,'string',num2str(e)); end

Gii thch: trn ta thc hin lnh vng lp if elseif end Cu trc lnh vng lp if elseif end nh sau: >> if biu_thc_logic_1 cc_pht_biu_1 >> elseif biu_thc_logic_2 cc_pht_biu_2 .. >> elseif biu_thc_logic_n cc_pht_biu_n >> end

trong cu trc hm trn th: y=get(handles.ham,'Value')==1; + ngha : ly gi tr thuc tnh (Value) ca c Tag l ham v so snh vi 1 v gn vo bin y, y Tag ham l Pop-up Menu cha cc hm lng gic (xem bng), thuc tnh Value ca n c chn tng ng vi hng ca n: V d ta chn SIN, th SIN dng th nht, do Value ca n = 1 tng ng vi dng 1 Hoc nu ta chn COS, khi gi tr Value ca n = 2 tng ng vi COS dng s 2 Nh vy vi on code trn, Biu thc logic c ta chn thc thi pht biu, mi mt biu thc logic ng th n s thc thi pht biu ngay sau n, tng ng vi cc hm lng gic, thao tc trn bin d. + Vi v d :
Elseif y==1 e=cos(d);

[Type text]

Page 23

Gi s trong Pop-up Menu ta chn hm COS, COS nm dng s 2 nn pht phiu trn s ng v lnh e=cos(d) s thc thi (tnh gi tr hm cos ca d). Dng lnh
if and(e<0.000001,e>-0.000001) set(handles.kq,'string','0'); elseif or(e>1000,e<-1000) set(handles.kq,'string','Math error'); else set(handles.kq,'string',num2str(e)); end

Lnh and l lnh iu kin hp, cu trc: And(iu_kin_1,iu_kin_2,.,iu_kin_n); Cc iu kin bn trong lnh and phi ng thi tha mn th lnh anh tr v kt qu logic 1 (true), nu bt c mt iu kin no khng tha th kt qu tr v logic 0 (false) - Lnh or tng t lnh and, nhng iu kin bn trong lnh or ch cn 1 trong s cc iu kin tha mn lnh or s tr v logic 1 (true) - Hm set cho php ta t gi tr cho thuc tnh String l e, gi tr ca e s hin ln mn hnh ca c Tag l kq. y e l gi tr c gn trong hm tnh vng lp ( V d e=cos(d) ) + lnh num2str cho php ta bin s thnh mt chui hin th ln giao din (c th hin th c s phc) + Trong Matlab khi tnh mt hm s 1/ th Matlab xut ra mt s rt b nhng khc khng, do dng lnh trn so snh gi tr hm tnh c vi mt s rt b bt k, nu s qu b s xut ra gi tr l 0. V d khi tnh: d= Cos(pi/2) d= 6.1232e-017 Nh vy iu kin trong vng lp gip ta bit rng d<<0.000001 nn kt qu hm tr v s hin th l 0. + Tng t cho kt qu ca 1/0, kt qu tr v s l mt s rt ln -> , nhng thc t khng c kt qu , do ta tr v du hiu bo php tnh li (Math error) Tm tt: nh vy sau khi thc hin ci t tt c cc thuc tnh ca cc button v vit hm cho callback chng thc thi th gii quyt c bi ton cho php chn thc hin mt trong cc hm lng gic trn, cho php chn nhp hin th theo hoc Radian - Khi nhn nt = trn giao din, kt qu (e) s c a ra mn hnh c Tag l kq (output) IV. EDIT TEXT NHP X: - Gi callback v vit cu trc hm nh sau:
function x_Callback(hObject, eventdata, handles) try t = eval(get(handles.x_input,'String'));

[Type text]

Page 24

if ~isnumeric(t) set(handles.plotx,'String','x is not numeric') elseif length(t) < 2 set(handles.plotx,'String','x must be vector') elseif min(diff(t)) < 0 set(handles.plotx,'String','x must increase') else set(handles.plotx,'String','Plot') set(handles.plotx,'Enable','on') return end catch set(handles.plotx,'String','Cannot plot x'); end

Gii thch: Cu trc try-catch: c thc hin ging nh vng lp, cu trc nh sau: Try Cc_biu_thc_logic . Catch Cc_pht_biu_logic End + Cc biu thc logic pha hm try c th lng ghp nhiu cc hm hoc vng lp, nu 1 biu thc ca hm try sai (false) n s tr v cho hm Catch thc thi lnh, nu biu thc hm try ng (true) n s thc hin cc biu thc, pht biu pha sau n. Ni tm ti, hm Catch ch thc hin cc pht biu khi c logic 0 trn hm try Gi thch dng lnh nh sau: + set(handles.plotx,'Enable','off') + thuc tnh Enable khng l thuc tnh cho php hay khng cho php thc thi, c 2 trng thi on v off tng ng. + Khi ta ang thao tc nhp vo khong x, nt Plot trng thi kha (off), sau khi nhp xong:
t = eval(get(handles.x,'String'));

+ dng lnh ny xt xem x c phi l mt vector hay khng, nu khng phi vector th hm tr v logic 0, v chuyn lnh sang cho hm catch thc thi:
set(handles.plotx,'String','Cannot plot x');

lc ny nt Plot vn cha c lnh bt, string ca n s hin th dng cannot plot x + Nu x l mt vector th lnh tip theo trong hm try s thc thi:

[Type text]

Page 25

if ~isnumeric(t) set(handles.plotx,'String','x is not numeric')

+ Hm isnumeric xem xt x c phi l mt mng hay khng, nu ng th:


set(handles.plotx,'String','x is not numeric')

Nt Plot vn kha v thng bo x is not numeric (x khng phi l mng) + Nu sai th lnh tip theo thc hin:
elseif length(t) < 2 set(handles.plotx,'String','x must be vector')

+ Hm length(t) xt di ca mng t, nu mng t <2 tng ng vi 1 s v du 2 chm V d: x=-5: R rng y khng phi l vector, do nt Plot kha v hin ln dng thng bo x must be vector (x khng phi l vector). + Hoc nu x nhp vo c bc nhy l s m th dng sau s thc thi:
elseif min(diff(t)) < 0 set(handles.plotx,'String','x must increase')

+ Ngha l ly gi tr nh nht trong o hm ca mng t, nu gi tr bc nhy nh m m th o hm ca chng s <0 lnh thc thi, nt Plot vn kha v hin ln dng x must increase (phi tng x ln). + Nu tt c cc trng hp trn u khng xy ra, ngha l x nhp vo hp l, dng lnh sau se thc thi:
else set(handles.plotx,'String','Plot') set(handles.plotx,'Enable','on') return

+ Cho php nt Plot c hot ng (Enable =on), String ca n hin ln ch Plot. + Thc thi xong n s quay v li ban u t lnh Try tip tc thc hin khi ta nhp mng x mi. V. NT NHN PLOT: - Thc hin thao tc tng t nh nhng nt nhn khc, gi n hm callback ca Mfile, sau in vo cc lnh nh sau:
function plotx_Callback(hObject, eventdata, handles) set(handles.axes1,'Visible','on'); set(handles.nhan,'Visible','on'); c=eval(get(handles.x,'string')); if get(handles.ham,'Value') == 1; plot(handles.axes1,c,sin(c),'LineWidth',2); elseif get(handles.ham,'Value') == 2; plot(handles.axes1,c,cos(c),'LineWidth',2); elseif get(handles.ham,'Value') == 3; plot(handles.axes1,c,tan(c),'LineWidth',2);

[Type text]

Page 26

elseif get(handles.ham,'Value') == 4; plot(handles.axes1,c,cot(c),'LineWidth',2); elseif get(handles.ham,'Value') == 5; plot(handles.axes1,c,asin(c),'LineWidth',2); elseif get(handles.ham,'Value') == 6; plot(handles.axes1,c,acos(c),'LineWidth',2); elseif get(handles.ham,'Value') == 7; plot(handles.axes1,c,atan(c),'LineWidth',2); elseif get(handles.ham,'Value') == 8; plot(handles.axes1,c,acot(c),'LineWidth',2); elseif get(handles.ham,'Value') == 9; plot(handles.axes1,c,sinh(c),'LineWidth',2); elseif get(handles.ham,'Value') == 10; plot(handles.axes1,c,cosh(c),'LineWidth',2); elseif get(handles.ham,'Value') == 11; plot(handles.axes1,c,tanh(c),'LineWidth',2); elseif get(handles.ham,'Value') == 12; plot(handles.axes1,c,coth(c),'LineWidth',2); end if get(handles.grid,'Value') == 1 grid on else grid off end if get(handles.hold,'Value') == 1 hold on else hold off end

Gii thch: Lnh:


set(handles.axes1,'Visible','on');

+ t thuc tnh ca axes1 trng thi on (hin), nh vy khi nhn nt Plot th axes1 hin ra trn mn hnh giao din Lnh:
set(handles.nhan,'Visible','on');

+ Tng t nh lnh trn, t thuc tnh ca nhan trng thi on, nh vy khi nhn nt Plot th ch Plot(x) hin ra trn mn hnh giao din Lnh:
c=eval(get(handles.x,'string'));

+ Hm eval cho php ta chuyn i mt chui thnh mt vector hay mng. V d: thc hin lnh a=eval('0:1:5') >> a = 0 1 2 3 4 5 Kt qu tr v l vector t 0 n 5 c bc nhy l 1. Nh vy vi cu lnh trn ta phi nhp vo gi tr ca x l mt vector c dng:
[Type text] Page 27

S_u:bc_nhy:s_cui Bc nhy c th c hoc khng cn cng c (nu khng c Matlab s mc nh l 1) + Vy sau khi thc hin lnh c=eval(get(handles.x,'string')); th thuc tnh nhp vo x s c chuyn v dng vector v lu vo bin c. Cu trc lp vng if elseif end: phn trc ta gii thch cu trc ny, sau y ch cp n ngha cu lnh: Gi s:
get(handles.ham,'Value') == 1; plot(handles.axes1,c,sin(c),'LineWidth',2); + get(handles.ham,'Value') == 1; xt gi tr (Value) ca ham ( gii thch

phn trc), nu ng n s thc thi lnh:


plot(handles.axes1,c,sin(c),'LineWidth',2); + Lnh Plot (2D) trong GUI:

Cu trc: Plot(a_ch _v,x,y, cc thuc tnh); y a_ch_v c gi bng hm handles.axes1 (n a ch c Tag l axes1), thc hin v y theo x, y x l hm c chn nhp vo trong x ( c gn vo bin c), y l hm theo x ( trn l y = sin(c) ). Cc_thuc_tnh y bao gm nhiu la chn, v d nh LineWidth. ( rng ca nt v), trn ta thc hin lnh plot(handles.axes1,c,sin(c),'LineWidth',2); Ngha l rng ca nt v c t l 2 (n v cell). Nh vy sau khi thc hin chui cc cu lnh trn bng cch nhn nt Plot trn giao din th Matlab s hin th ln mn hnh, trn th l hm lng gic c v theo khong x nhp vo. Vng lp cui:
if get(handles.grid,'Value') == grid on else grid off end if get(handles.hold,'Value') == hold on else hold off end + Lnh: get(handles.grid,'Value') get(handles.hold,'Value') 1

== 1; == 1;

hm trn tm gi tr Value ca Grid on v Hold on tng ng, nu c chn tng ng vi Value = 1, nu b chn tng ng vi Value = 0. Gi s hm sau ng get(handles.grid,'Value') == 1
grid on

Th grid = on, Li im c bt + Tng t cho Hold on

[Type text]

Page 28

VI. LP TRNH CHO HOLD ON V GRID ON: - Gi Callback ca 2 trn v vit vo cc hm sau:
% --- Executes on button press in grid. function grid_Callback(hObject, eventdata, handles) set(handles.axes1); grid % --- Executes on button press in hold. function hold_Callback(hObject, eventdata, handles) set(handles.axes1); hold Gii thch: hm set(handles.axes1);

Cho php gi thit lp thuc tnh cho axes1 Value = 1 tng ng vi bt grid (hold) hoc Value = 0 tng ng vi tt grid (hold) Tm li: khi nh du tch vo bt c no th Value ca n = 1, n s thc thi lnh nu ng. VII. THIT LP NT NHN DEFAULT: - Gi hm callback ca nt Default sau vit vo cc hm sau:
set(handles.input,'string',''); set(handles.kq,'string',''); set(handles.x,'string',''); set(handles.hold,'Value',0); set(handles.grid,'Value',0); set(handles.color,'Value',0); set(handles.ham,'Value',1); set(handles.axes1,'Visible','off'); set(handles.axes1) cla; set(handles.nhan,'Visible','off');

+ i vi tt c cc Edit Text v Static Text c thit lp trc ta s a thuc tnh String chng v trng thi rng (mc nh ban u) + i vi Check Box: ta a thuc tnh Value ca chng v trng thi 0, mc nh ban u. + i vi Pop-up Menu: ta a Value ca chng v trang thi 1, mc nh ban u (SIN tng ng vi Value =1). + i vi axes1 v static text (Plot(x)) : ta a thuc tnh Visible ca chng v trng thi off, trng thi ban u. + lnh cla vit tt ca clear all, ngha l xa ton b nhng g c trn axes1 VIII. CHECKBOX COLOR ON: Cc mu trong Matlab h tr :

[Type text]

Page 29

Trn y l nhng mu c bn c Matlab h tr bng k t, cn nhng mu khc chng ta phi s dng m mu (gm 3 mu trn li). xem cc m mu ca i tng ta nhp p vo i tng v nhp vo theo hnh, r chut n v tr mu no, m mu s hin ln. Hnh minh ho:

Gi callback ca nt Color on v vit vo cc hm sau:


function color_Callback(hObject, eventdata, handles) if get(handles.color,'Value')==1; set(handles.input,'BackgroundColor','b'); set(handles.kq,'BackgroundColor','y'); set(handles.exit,'Color',[0.98,0.97,0.97]); set(handles.option,'BackgroundColor',[1,0.69,0.39]); set(handles.axes1,'Color',[0.95,0.87,0.73]); set(handles.button,'BackgroundColor','red'); elseif get(handles.color,'Value')==0; set(handles.input,'BackgroundColor','white'); set(handles.kq,'BackgroundColor',[0.94,0.94,0.94]); set(handles.exit,'Color',[0.94,0.94,0.94]); set(handles.option,'BackgroundColor',[0.94,0.94,0.94]); set(handles.axes1,'Color','w'); set(handles.button,'BackgroundColor',[0.94,0.94,0.94]); end

[Type text]

Page 30

+ Hm

get(handles.color,'Value')==1;

c gii thch phn trn. Gi s nu Color on c chn hm trn s thc thi: + set(handles.input,'BackgroundColor','b');
b = blue (xem bng)

y t thuc tnh mu bt k cho i tng ta s dng lnh c cu trc: Set(handles.nhn_ex,thuc_tnh,mu) Hoc Set(handles.nhn_ex,thuc_tnh,[m_mu]) + Nhn_ex l thuc tnh Tag ca i tng + Thuc_tnh l thuc tnh mu ca i tng, c th l mu nn, mu Font ch. Xem thuc tnh mu pha bn tri ca Menu Inspector + Mu: l cc mu c m ha bng k t. + M_mu: l m mu ca i tng (xem hng dn trn). - Nh vy vi bt c thuc tnh no ta ta u c th chnh mu cho chng. - Cu trc if-else xt thuc tnh ca color on tng ng vi c chn hoc khng chn IX. NT EXIT: Gi callback ca nt Exit v vit vo cc lnh sau:
function exit_Callback(hObject, eventdata, handles) set(handles.all,Visible,off)

Thuc tnh Visible = off cho php n ca s giao din c Tag l all, y l ca s nn giao din, tng ng vi thot khi giao din

[Type text]

Page 31

PHN 6: CCH S DNG GIAO DIN bt u vi giao din, chng ta lm theo mt trong nhng cch sau: + Trong mn hnh thit k giao din, nhn phm F5 trn bn phm + Nhn vo biu tng nt Play trong mn hnh thit k giao din + Trong mn hnh thao tc trn Mfile, nhn phm F5 chy chng trnh Trc khi mun s dng ta c th sp xp cc menu theo trnh t ty . I. TNH HM LNG GIC

Bc 1: chn hm cn tnh t menu xung:

Bc 2: nhp gi tr vo trong input Bc 3: chn gi tr nhp vo input theo bng Select Input (Degree hoc Radian) Bc 4: nhn vo du bng Kt qu php tnh s c hin th output

[Type text]

Page 32

II.

V HM S LNG GIC

Bc 1: Chn hm mun v: Bc 2: Nhp vo khong gi tr ca x Ch : x phi c nhp ng dng c cp trong phn thit k giao din. Bc 3: Nhn nt Plot v hm

[Type text]

Page 33

+ C th ty chn bt li im, gi hm c khi v hm mi: III. S DNG NT COLOR ON nh du vo Color on bt mu cho giao din, b chn s tr v mu mc nh.

IV. S DNG NT EXIT Nu bn khng mun s dng na, nhn vo nt Exit, ca s mi hin ra vi tiu are you sure you want to Close ?, chn Yes ng giao din, chn No tr li mn hnh giao din Khi nhn vo Nt Default, tt c cc trng thi s quay v ban u
Page 34

[Type text]

PHN 7: CHNG TRNH


function varargout = baitaplonMatlab_bai_1(varargin) % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @baitaplonMatlab_bai_1_OpeningFcn, ... 'gui_OutputFcn', @baitaplonMatlab_bai_1_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end % End initialization code - DO NOT EDIT

% --- Executes just before baitaplonMatlab_bai_1 is made visible. function baitaplonMatlab_bai_1_OpeningFcn(hObject, eventdata, handles, varargin) % Choose default command line output for baitaplonMatlab_bai_1 handles.output = hObject; handles.unit_input = 0; % Update handles structure guidata(hObject, handles);

% --- Outputs from this function are returned to the command line. function varargout = baitaplonMatlab_bai_1_OutputFcn(hObject, eventdata, handles) % Get default command line output from handles structure varargout{1} = handles.output; % --- Executes during object creation, after setting button properties. function ham_CreateFcn(hObject, eventdata, handles) % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end % --- Executes during object creation, after setting button properties. function input_CreateFcn(hObject, eventdata, handles) % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');

[Type text]

Page 35

end

% --- Executes on button press in degree. function degree_Callback(hObject, eventdata, handles) b = str2num(get(handles.input,'string')); handles.unit_input = b*pi/180 guidata(hObject, handles) % --- Executes on button press in radian. function radian_Callback(hObject, eventdata, handles) handles.unit_input = str2num(get(handles.input,'string')); guidata(hObject, handles) % --- Executes during object creation, after setting button properties. function x_input_CreateFcn(hObject, eventdata, handles) % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end

% --- Executes on button press in plotx. function plotx_Callback(hObject, eventdata, handles) set(handles.nhan,'Visible','on'); c=eval(get(handles.x_input,'string')); if get(handles.ham,'Value') == 1; plot(handles.axes1,c,sin(c),'LineWidth',2); elseif get(handles.ham,'Value') == 2; plot(handles.axes1,c,cos(c),'LineWidth',2); elseif get(handles.ham,'Value') == 3; plot(handles.axes1,c,tan(c),'LineWidth',2); elseif get(handles.ham,'Value') == 4; plot(handles.axes1,c,cot(c),'LineWidth',2); elseif get(handles.ham,'Value') == 5; plot(handles.axes1,c,asin(c),'LineWidth',2); elseif get(handles.ham,'Value') == 6; plot(handles.axes1,c,acos(c),'LineWidth',2); elseif get(handles.ham,'Value') == 7; plot(handles.axes1,c,atan(c),'LineWidth',2); elseif get(handles.ham,'Value') == 8; plot(handles.axes1,c,acot(c),'LineWidth',2); elseif get(handles.ham,'Value') == 9; plot(handles.axes1,c,sinh(c),'LineWidth',2); elseif get(handles.ham,'Value') == 10; plot(handles.axes1,c,cosh(c),'LineWidth',2); elseif get(handles.ham,'Value') == 11; plot(handles.axes1,c,tanh(c),'LineWidth',2); elseif get(handles.ham,'Value') == 12; plot(handles.axes1,c,coth(c),'LineWidth',2); end if get(handles.grid,'Value') == 1 grid on else grid off

[Type text]

Page 36

end if get(handles.hold,'Value') == 1 hold on else hold off end % --- Executes on button press in grid. function grid_Callback(hObject, eventdata, handles) set(handles.axes1); grid % --- Executes on button press in hold. function hold_Callback(hObject, eventdata, handles) set(handles.axes1); hold % --- Executes on button press in ok. function ok_Callback(hObject, eventdata, handles) d=handles.unit_input y=get(handles.ham,'Value') if y==1; e=sin(d) elseif y==2; e=cos(d) elseif y==3; e=tan(d); elseif y==4; e=cot(d); elseif y==5; e=asin(d); elseif y==6; e=acos(d); elseif y==7; e=atan(d); elseif y==8; e=acot(d); elseif y==9; e=sinh(d); elseif y==10; e=cosh(d); elseif y==11; e=tanh(d); elseif y==12; e=coth(d); end if and(e<0.000001,e>-0.000001) set(handles.kq,'string','0'); elseif or(e>1000,e<-1000) set(handles.kq,'string','Math error'); else set(handles.kq,'string',num2str(e)); end guidata(hObject,handles) % --- Executes on button press in clc. function clc_Callback(hObject, eventdata, handles)

[Type text]

Page 37

set(handles.input,'string',''); set(handles.kq,'string',''); set(handles.x_input,'string',''); set(handles.hold,'Value',0); set(handles.grid,'Value',0); set(handles.color,'Value',0); set(handles.ham,'Value',1); set(handles.axes1,'Visible','off'); set(handles.axes1); cla; set(handles.nhan,'Visible','off'); % --- Executes when user attempts to close button. function all_CloseRequestFcn(hObject, eventdata, handles) % Hint: delete(hObject) closes the figure delete(hObject);

% --- Executes on button press in color. function color_Callback(hObject, eventdata, handles) if get(handles.color,'Value')==1; set(handles.input,'BackgroundColor','b'); set(handles.kq,'BackgroundColor','y'); set(handles.all,'Color',[0.73,0.83,0.96]); set(handles.option,'BackgroundColor',[1,0.69,0.39]); set(handles.axes1,'Color',[0.95,0.87,0.73]); set(handles.exit,'BackgroundColor','red'); else set(handles.input,'BackgroundColor','white'); set(handles.kq,'BackgroundColor',[0.94,0.94,0.94]); set(handles.all,'Color',[0.94,0.94,0.94]); set(handles.option,'BackgroundColor',[0.94,0.94,0.94]); set(handles.axes1,'Color','w'); set(handles.exit,'BackgroundColor',[0.94,0.94,0.94]); end

% --- Executes on button press in exit. function exit_Callback(hObject, eventdata, handles) set(handles.all,'Visible','off');

function x_input_Callback(hObject, eventdata, handles) set(handles.plotx,'Enable','off'); try t = eval(get(handles.x_input,'String')); if ~isnumeric(t) set(handles.plotx,'String','t is not numeric') elseif length(t) < 2 set(handles.plotx,'String','t must be vector') elseif min(diff(t)) < 0 set(handles.plotx,'String','t must increase') else set(handles.plotx,'String','Plot')

[Type text]

Page 38

set(handles.plotx,'Enable','on') return end catch set(handles.plotx,'String','Cannot plot t'); end

[Type text]

Page 39

Ti liu tham kho: Website:


http://www.mathworks.com/ http://z13.invisionfree.com

Matlab: Examples, Help

Thng tin Sinh vin: H tn: Nguyn Lng Thnh Lp: 09040003 MSSV: 40900040 Kha: H 13 Email: thanhnl0502@gmail.com T: 01648911181

[Type text]

Page 40

You might also like