WORKSHEET 06: LP TRNH GIAO DIN TRONG MATLAB --Thi Duy Qu ITFac thaiduyquy@gmail.com
Mc ch: Worksheet ny gii thiu v cc lnh c bn trong lp trnh giao din ca MATLAB. Yu cu: - Sinh vin thc hnh bng phn mm Matlab trn phng my, c k phn luyn tp trc khi lm bi tp. - Kt qu c lu li trong th mc MSSV_HoTen - Thi gian thc hnh: 4 tit. Luyn tp: 1. Chng trnh Calculator C rt nhiu cch to ra mt chng trnh "My tnh bm tay" hay Calculator. V d sau y s hng dn to ra mt chng trnh my tnh bm tay n gin s dng k thut trng "Callback" trong lp trnh giao din GUI. S dng GUIDE, thit k giao din ca chng trnh nh sau:
t thuc tnh cho cc i tng nh sau: THC HNH MATLAB C BN 2 Thi Duy Qu thaiduyquy@gmail.com
- Edit Text: Tag=edit1 (mc nh); FontSize=20; Enable=Inactive; HorizontalAligment=right;... - t thuc tnh Tag ca tt c cc nt l: pushadd (ngoi tr 3 nt: "=" v "%" v "C") - Nt "=": Tag=pushequal - Nt "%": Tag=pushpercent - Nt "C": Tag=pushclear iu chnh kch thc v s dng cng c "Align Objects" sp xp v tr cc nt nh hnh trn. Lu li fig-file vi tn mycalc.fig, trong file mycalc.m tm cc hm tng ng v thm vo cc lnh sau: % --- Executes on button press in pushadd. function pushadd_Callback(hObject, eventdata, handles) textstr = get(handles.edit1,'String'); addstr = get(hObject,'String'); newstr = strcat(textstr, addstr); set(handles.edit1,'String', newstr) % --- Executes on button press in pushequal. function pushequal_Callback(hObject, eventdata, handles) textstr = get(handles.edit1,'String'); try set(handles.edit1,'String', eval(textstr)) catch err set(handles.edit1,'String', err.message) end % --- Executes on button press in pushpercent. function pushpercent_Callback(hObject, eventdata, handles) textstr = get(handles.edit1,'String'); try set(handles.edit1,'String', 100*eval(textstr)) THC HNH MATLAB C BN 3 Thi Duy Qu thaiduyquy@gmail.com
catch err set(handles.edit1,'String', err.message) end % --- Executes on button press in pushclear. function pushclear_Callback(hObject, eventdata, handles) set(handles.edit1,'String','') Lu li file mycalc.m v chy chng trnh. S dng chut click cc nt nhp vo mt php tnh, sau Click nt "=" thu c kt qu:
Cui cng, Click nt "C" bt u mt php tnh khc. Gii phng trnh bc 2 Chy Matlab, vo Menu File\New\GUI s thy hin ra hp thoi sau: THC HNH MATLAB C BN 4 Thi Duy Qu thaiduyquy@gmail.com
Chn Blank GUI, nhn OK. Trong hp thoi hin ra, ko th cc iu khin Push button, Edit Text v Static Text vo figure nh giao din sau:
Mi iu khin u c nhiu thuc tnh, c 2 thuc tnh quan trng nht l: Tag, String. Tag l thuc tnh ch a ch ca iu khin (dng gi khi cn). String l thuc tnh cha ni dung (s c hin th ra ngoi) ca iu khin. Sau y ta t cc thuc tnh ny: THC HNH MATLAB C BN 5 Thi Duy Qu thaiduyquy@gmail.com
- Push button 1: +Tag : start +String : Bat dau - Push button 2: +Tag : close +String : Close - Edit Text 1: +Tag : heso_a +String : (xa trng) - Edit Text 2: +Tag : heso_b +String : (xa trng) - Edit Text 3: +Tag : heso_c +String : (xa trng) - Edit Text 4: +Tag : nghiem_x1 +String : (xa trng) - Edit Text 5: +Tag : nghiem_x2 +String : (xa trng)
- Static Text 1: (i vi cc Static Text thuc tnh Tag khng quan trng, tr cc trng hp c bit) + String : Giai phng trinh bac 2: ax2 + bx + c = 0 THC HNH MATLAB C BN 6 Thi Duy Qu thaiduyquy@gmail.com
- Static Text 2: +String : a = - Static Text 3: +String : b = - Static Text 4: +String : c = - Static Text 5: +String : Ket luan - Static Text 6: +Tag : kl +String : (xa trng) - Static Text 7: +String : x1 = - Static Text 8: +String : x2 = - figure: (click p vo nn ca figure): +Tag : fig1 + Name : Giai phng trinh bac 2
Sau khi t cc thuc tnh, cn chnh (s dng chut hoc cng c Align Objecs) c figure c dng nh sau: THC HNH MATLAB C BN 7 Thi Duy Qu thaiduyquy@gmail.com
Lu li figure (Menu File\Save) di tn GPTB2.fig. Sau Matlab t sinh file GPTB2.m; trong file ny tm hm start_callback v nh vo cc dng lnh sau:
Hm set l hm t thuc tnh cho iu khin. Hm get l hm ly gi tr thuc tnh ca iu khin Hm str2double l hm bin chui thnh s THC HNH MATLAB C BN 8 Thi Duy Qu thaiduyquy@gmail.com
Cui cng ghi li file m (GPTB2.m) v chy chng trnh (nhn F5 hoc nt run hnh tam gic mu xanh). Nhp vo cc h s a, b, c v click nt Bat dau xem kt qu. Bi tp Bi 1 : To ra mt giao din GUI thc hin nhim v sau: 1. Tnh din tch ca mt a gic da trn cc cnh vi d liu X v Y. 2. T mu cho a gic vi d liu X, Y do ngi dng nhp vo v mu chn t popup menu. (Gi : s dng lnh polyarea v fill)
Bi 2 : Vit giao din thc hin 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 khong 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. THC HNH MATLAB C BN 9 Thi Duy Qu thaiduyquy@gmail.com
Bi 3: Vit chng trnh cho php ngi dng nhp cc h s ca mt a thc bc n. V th hm s ca a thc ny. -- Ht --