Giáo trình Matlab căn bản - Chương 1: Matlab cơ bản
Matlab là một phần mềm cao cấp dùng để giải các bài
toán. Để khởi động MATLAB ta bấm đúp vào icon của nó. Các file MATLAB
có dạng *.m và chỉ chạy trong môi trường MATLAB. MATLAB xử lí số liệu
như là ma trận. Khi ta đánh lệnh vào cửa sổ lệnh, nó sẽ được thi hành ngay và
kết quả hiện lên màn hình. Nếu ta không muốn cho kết quả hiện lên màn
hình thì sau lệnh ta đặt thêm dấu “;”. Nếu lệnh quá dài, không vừa một dòng
dòng có thể đánh lệnh trên nhiều dòng và cuối mỗi dòng đặt thêm dấu . rồi
xuống dòng. Khi soạn thảo lệnh ta có thể dùng các phím tắt :
↑ Ctrl‐P gọi lại lệnh trước đó
↓ Ctrl‐N gọi lệnh sau
← Ctrl‐B lùi lại một kí tự
→ Ctrl‐F tiến lên một kí tự
đó 3 dòng Kelvine, Celcius và Rankine. Giao diện như sau: 48 File được lưu với tên ct1_56.fig. Tiếp theo viết lệnh cho ct1_56.m. Ta có file này như sau: function varargout = ct1_56(varargin) if nargin = = fig = openfig(mfilename,ʹreuseʹ); set(fig,ʹColorʹ,get(0,ʹdefaultUicontrolBackgroundColorʹ)); handles = guihandles(fig); guidata(fig, handles); if nargout > 0 varargout{1} = fig; end elseif ischar(varargin{1}) try [varargout{1:nargout}] = feval(varargin{:}); catch disp(lasterr); end end function varargout = slider1_Callback(h, eventdata, handles, varargin) f = get(handles.slider1,ʹValueʹ); f = f*180 + 32; a = num2str(f); set(handles.edit2,ʹStringʹ,a); r = f + 495.7; 49 c = (f ‐ 32)*5/9; k = c + 273.15; chon = get(handles.listbox1,ʹValueʹ); if chon = = 1 t = k; elseif chon = = 2 t = c; elseif chon = = 3 t = r; end t = num2str(t); set(handles.edit3,ʹStringʹ,t); Ta tiếp tục xét phương án dùng Radiobutton. Giao diện có dạng: Ta dùng ba Radiobutton thay cho Listbox. Radiobutton thứ nhất có thuộc tính FontSize: 12, FơntWeight: bold và String: Rankine. Radiobutton thứ 2 có thuộc tính FontSize: 12, FơntWeight: bold và String: Celcius. Radibutton thứ 3 có thuộc tính FontSize: 12, FơntWeight: bold và String: Kelvine. Các phần tử khác và thuộc tính của chúng vẫn như cũ. Layout có thuộc tính Name: ct1_57. Lưu GUI với tên ct1_57.fig. Tiếp theo ta viết các mã lệnh trong ct1_57.m: function varargout = ct1_57(varargin) if nargin = = 0 fig = openfig(mfilename,ʹreuseʹ); set(fig,ʹColorʹ,get(0,ʹdefaultUicontrolBackgroundColorʹ)); handles = guihandles(fig); 50 guidata(fig, handles); if nargout > 0 varargout{1} = fig; end elseif ischar(varargin{1}) try [varargout{1:nargout}] = feval(varargin{:}); catch disp(lasterr); end end function mutual_exclude(off) set(off,ʹValueʹ,0); function varargout = slider1_Callback(h, eventdata, handles, varargin) global chon f = get(handles.slider1,ʹValueʹ); f = f*180 + 32; a = num2str(f); set(handles.edit2,ʹStringʹ,a); r = f + 495.7; c = (f ‐ 32)*5/9; k = c + 273.15; if chon = = 1 t = r; elseif chon = = 2 t = c; elseif chon == 3 t = k; end t = num2str(t); set(handles.edit3,ʹStringʹ,t); function varargout = radiobutton1_Callback(h, eventdata, handles, varargin) global chon; off = [handles.radiobutton2, handles.radiobutton3]; mutual_exclude(off); chon = 1; function varargout = radiobutton2_Callback(h, eventdata, handles, varargin) global chon; off = [handles.radiobutton1, handles.radiobutton3]; 51 mutual_exclude(off); chon = 2; function varargout = radiobutton3_Callback(h, eventdata, handles, varargin) global chon; off = [handles.radiobutton1, handles.radiobutton2]; mutual_exclude(off); chon = 3; on lnh: function mutual_exclude(off) set(off,'Value',0); lm cho 3 nút lnh tr thnh mt nhóm. Các câu lnh: off = [handles.radiobutton1, handles.radiobutton2]; mutual_exclude(off); lm cho khi chn mt nút Radiobutton ny thì không chn c nút khác na. Cui cùng ta xét phng án dùng Checkbox. Giao din nh sau: Cng nh phng án dùng Radiobutton, ta dùng ba Checkbox. Checkbox th nht có thuc tính FontSize: 12, FntWeight: bold v String: Rankine. Checkbox th hai có thuc tính FontSize: 12, FntWeight: bold v String: Celcius. Checkbox th ba có thuc tính FontSize: 12, FntWeight: bold v String: Kelvine. Các phn t khác không co gì thay i. Ta lu file vi tên ct1_58.fig. Tip theo ta vit mã lnh cho ct1_58.m: function varargout = ct1_58(varargin) if nargin = = 0 fig = openfig(mfilename,'reuse'); set(fig,'Color',get(0,'defaultUicontrolBackgroundColor')); handles = guihandles(fig); guidata(fig, handles); 52 if nargout > 0 varargout{1} = fig; end elseif ischar(varargin{1}) try [varargout{1:nargout}] = feval(varargin{:}); catch disp(lasterr); end end function mutual_exclude(off) set(off,'Value',0); function varargout = slider1_Callback(h, eventdata, handles, varargin) global chon f = get(handles.slider1,'Value'); f = f*180 + 32; a = num2str(f); set(handles.edit2,'String',a); r = f + 495.7; c = (f - 32)*5/9; k = c + 273.15; if chon = = 1 t = r; elseif chon = = 2 t = c; elseif chon = = 3 t = k; end t = num2str(t); set(handles.edit3,'String',t); function varargout = checkbox1_Callback(h, eventdata, handles, varargin) global chon; off = [handles.checkbox2, handles.checkbox3]; mutual_exclude(off); chon = 1; function varargout = checkbox2_Callback(h, eventdata, handles, varargin) global chon; off = [handles.checkbox1, handles.checkbox3]; mutual_exclude(off); chon = 2; function varargout = checkbox3_Callback(h, eventdata, handles, varargin) global chon; off = [handles.checkbox2, handles.checkbox1]; mutual_exclude(off); chon = 3; ) GUI có dùng ho: Ta xây dng mt GUI dùng v th hm y=tsin(t). Giao din nh sau: 53 Ta dùng mt Axes, bn Pushbutton to nên giao din ny. Khi nhn Plot, th ca hm y = tsin(t) c v. Khi nhn Grid on, th c chia li. Khi nhn Grod off, li b xoá. Nhn Close óng th. Layout có thuc tính Name: ct1_59, HandleVisibility: callback. Các Pushbutton đều có thuộc tính FontSize: 12, FơntWeight: bold và các String là các tên lệnh. GUI được lưu với tên file là ct1_59.fig. Tiếp theo ta soạn thảo lệnh cho ct1_59.m: function varargout = ct1_59(varargin) if nargin = = 0 fig = openfig(mfilename,ʹreuseʹ); handles = guihandles(fig); guidata(fig, handles); if nargout > 0 varargout{1} = fig; end elseif ischar(varargin{1}) try [varargout{1:nargout}] = feval(varargin{:}); % FEVAL switchyard catch disp(lasterr); end end function varargout = pushbutton1_Callback(h, eventdata, handles, varargin) grid on function varargout = pushbutton2_Callback(h, eventdata, handles, varargin) grid off 54 function varargout = pushbutton3_Callback(h, eventdata, handles, varargin) close function varargout = pushbutton4_Callback(h, eventdata, handles, varargin) t = 0:0.01:20; y = t.*sin(t); plot(t,y); Tip theo ta xét mt GUI có giao din nh sau: Nhim v ca GUI l v th ca hm peaks theo các dng khác nhau( mesh, surf v contour) vi các Colormap khác nhau(hsv, hot, gray, prism, cool, winter v summer). Vic v các dng th thc hin nh các Pushbutton. Vic chn Colormap thc hin nh Listbox. Layout có thuc tính Name: ct1_60 v thuc tính HandleVisbility: on. Các Pushbutton u có thuc tính FontSize: 12 v FntWeight: bold. Ta lu GUI vi tên ct1_60.fig. Mã trong ct1_60.m gm: function varargout = ct1_60(varargin) if nargin = = 0 fig = openfig(mfilename,'reuse'); set(fig,'Color',get(0,'defaultUicontrolBackgroundColor')); handles = guihandles(fig); guidata(fig, handles); if nargout > 0 varargout{1} = fig; end elseif ischar(varargin{1}) try [varargout{1:nargout}] = feval(varargin{:}); catch 55 disp(lasterr); end end function varargout = pushbutton1_Callback(h, eventdata, handles, varargin) z = peaks(40); chon = get(handles.listbox1,'Value'); if chon = =1 colormap(hsv(256)); elseif chon = =2 colormap(hot(256)); elseif chon = =3 colormap(gray(256)); elseif chon = =4 colormap(prism(256)); elseif chon = =5 colormap(cool(256)); elseif chon = =6 colormap(winter(256)); elseif chon = =7 colormap(summer(256)); end mesh(z); function varargout = pushbutton2_Callback(h, eventdata, handles, varargin) z = peaks(40); chon = get(handles.listbox1,'Value'); if chon = =1 colormap(hsv(256)); elseif chon = =2 colormap(hot(256)); elseif chon = =3 colormap(gray(256)); elseif chon = =4 colormap(prism(256)); elseif chon = =5 colormap(cool(256)); elseif chon = =6 colormap(winter(256)); elseif chon = =7 colormap(summer(256)); end surf(z); function varargout = pushbutton3_Callback(h, eventdata, handles, varargin) z = peaks(40); chon = get(handles.listbox1,'Value'); if chon = =1 colormap(hsv(256)); 56 elseif chon = =2 colormap(hot(256)); elseif chon = =3 colormap(gray(256)); elseif chon = = 4 colormap(prism(256)); elseif chon = = 5 colormap(cool(256)); elseif chon = = 6 colormap(winter(256)); elseif chon = = 7 colormap(summer(256)); end contour(z); ) GUI có dùng đồ hoạ: Ta xây dựng một GUI dùng menu. Giao diện của GUI như sau: Menu Draw gồm các menu con Mesh, Contour và Close. GUI được lưu trong file ct1_61.fig và chương trình được lưu trong file ct1_61.m: function varargout = ct1_61(varargin) gui_Singleton = 1; gui_State = struct(ʹgui_Nameʹ, mfilename, ... ʹgui_Singletonʹ, gui_Singleton, ... ʹgui_OpeningFcnʹ, @ct1_61_OpeningFcn, ... ʹgui_OutputFcnʹ, @ct1_61_OutputFcn, ... ʹgui_LayoutFcnʹ, [] , ... 57 ʹ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 handles.output = hObject; function varargout = ct1_61_OutputFcn(hObject, eventdata, handles) varargout{1} = handles.output; function mnumesh_Callback(hObject, eventdata, handles) z = peaks(40); mesh(z); function Untitled_3_Callback(hObject, eventdata, handles) z = peaks(40); contour(z); function mnuclose_Callback(hObject, eventdata, handles) clf close function mnudraw_Callback(hObject, eventdata, handles)
File đính kèm:
- Giáo trình Matlab căn bản - Chương 1_Matlab cơ bản.pdf