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: 40900040
Lp: 09040003

TP.H Ch Minh ngy 26 /10 /2012
[Type text] Page 1

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 2

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 3

Ph lc:
PHN 1: S LC V LP TRNH GIAO DIN NGI DNG (GUIDE) TRONG
MATLAB..........Trang 04
I. GUI L G?
II. BT U VI GUI!
III. CC BC CN THC HIN TRC KHI BT U
PHN 2: BT U THAO TC VI GUI ..Trang 06
I. KHI NG GUI.Trang 06
II. M T CHC NNG CC CNG C TRONG GIAO DIN GUI.Trang 07
III. CHNH SA HP THOI INSPECTORTrang 08
PHN 3: THIT K GIAO DIN (GUI)..Trang 10
I. THIT K GIAO DINTrang 10
II. MT VI THUC TNH CA I TNG TRONG MENU
INSPECTOR.Trang 11
III. 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 4


[Type text] Page 5

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 6



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 7

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 8


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 9

+ 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.
[Type text] Page 10

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 11

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 12



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:
STT Tn thuc tnh Gi tr thuc tnh Gii thch
1
String Select Function
Fontsize 10 L Fontsize ca String
2 String
sin
cos
tan
cotg
arcsin
arccos
arctan
arccotg
sinh
cosh
tanh
cotgh
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 13

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.
Fontsize 15
3
String Input
Fontsize 10
4
String
Tag input
Fontsize 15
5
String Select input
Fontsize 10
6
String Degree
Tag degree
Fontsize 15
7
String Radian
Tag radian
Fontsize 15
8
String =
Tag ok
Fontsize 15
9
String Output
Fontsize 10
10
String
Fontsize 15
Tag kq
11
String Clear all
Fontsize 15
Tag clc
12
String Colors on
Fontsize 15
Tag color
13
String
Enter the range of
x

Fontsize 10
14
String
Fontsize 15
Tag x_input
15 String Options
[Type text] Page 14

Fontsize 10
16
String Plot
Fontsize 15
Tag plotx
Enable off
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
String Hold on
Fontsize 15
Tag hold
18
String Grid on
Fontsize 15
Tag grid
19
Tag axes1
Visible off
thuc tnh Visible L thuc tnh cho php chn hin
(on) hay n (off) ca s giao din ca n
20
String Plot(x)
Fontsize 15
Visible off
Tag nhan
21
String Exit
Fontsize 15
Tag exit

- Hnh sau m t cch thay i gi tr trong String ca Select Function:
[Type text] Page 15


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



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 17

- 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
[Type text] Page 18

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 19

- 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
[Type text] Page 20

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 21

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 22





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 23

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 24

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 25

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 26

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 27

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 28

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') == 1
grid on
else
grid off
end
if get(handles.hold,'Value') == 1
hold on
else
hold off
end
+ Lnh: get(handles.grid,'Value') == 1;
get(handles.hold,'Value') == 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 29

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 30


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


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

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 33





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 34



+ 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
[Type text] Page 35

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 36

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 37

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 38

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 39

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



[Type text] Page 40

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

You might also like