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

