目录
注:该笔记是学习b站上 MATLAB GUI教学视频而记录的笔记,笔记来源于本人。若有侵权,请联系本人删除,谢谢。若有错误,欢迎在评论区里指出。
一、实例效果
如图所示,菜单栏中有一个绘图的选项,点开以后,可选择绘制正弦曲线或余弦曲线。然后在绘制的图像中,可以选择曲线的颜色和线宽。
二、步骤
1.先创建一个空的GUI。
2.建立需要的菜单栏。
新建一个菜单。
再建两个子菜单。
保存并运行一下,看看效果。
3.创建一个坐标系。
4.进入菜单栏中,编辑菜单的回调函数。
4.1编辑子菜单里的“正弦曲线”的回调函数。
函数代码如下,解释请参考注释:
% --------------------------------------------------------------------
function sinx_Callback(hObject, eventdata, handles)
% hObject handle to sinx (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
x = 0:0.01:2*pi; % 横坐标的范围
y = sin(x); % 正弦函数
axes(handles.axes1); % 将界面中的坐标系置为当前
h = plot(x,y); % 将绘制出来的曲线的句柄给h
handles.h = h; % 将曲线句柄h放到结构体handles中
guidata(hObject,handles); % 将曲线句柄h放到结构体handles后,需要对结构体handles进行更新
4.2编辑子菜单里的“余弦曲线”的回调函数。
函数代码如下,解释请参考注释:
% --------------------------------------------------------------------
function cosx_Callback(hObject, eventdata, handles)
% hObject handle to cosx (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
x = 0:0.01:2*pi; % 横坐标的范围
y = cos(x); % 正弦函数
axes(handles.axes1); % 将界面中的坐标系置为当前
h = plot(x,y); % 将绘制出来的曲线的句柄给h
handles.h = h; % 将曲线句柄h放到结构体handles中
guidata(hObject,handles); % 将曲线句柄h放到结构体handles后,需要对结构体handles进行更新
5.保存,运行程序,查看前面4步的效果。
6.新建一个弹出菜单,用来设置曲线的颜色与线宽。
注:上图标记里的line没保存上,后面有一步我改正了过来,只是后面有几张截图此处没改过来而已。
7.编写弹出菜单里的回调函数。
7.1 编写颜色的回调函数
设置红色的代码:
% --------------------------------------------------------------------
function red_Callback(hObject, eventdata, handles)
% hObject handle to red (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
if isfield(handles, 'h')%if语句的作用:只有绘制曲线后,才能设置颜色
set(handles.h,'color','r');%设置颜色为红色
end
设置绿色的代码:
% --------------------------------------------------------------------
function green_Callback(hObject, eventdata, handles)
% hObject handle to green (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
if isfield(handles, 'h')%if语句的作用:只有绘制曲线后,才能设置颜色
set(handles.h,'color','g');%设置颜色为绿色
end
设置黑色的代码:
% --------------------------------------------------------------------
function black_Callback(hObject, eventdata, handles)
% hObject handle to black (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
if isfield(handles, 'h')%if语句的作用:只有绘制曲线后,才能设置颜色
set(handles.h,'color','k');%设置颜色为黑色
end
7.2 编写线宽的回调函数
设置线宽1的代码:
% --------------------------------------------------------------------
function xiankuan_1_Callback(hObject, eventdata, handles)
% hObject handle to xiankuan_1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
if isfield(handles, 'h')%if语句的作用:只有绘制曲线后,才能设置线宽
set(handles.h,'LineWidth',1);%设置线宽1为1
end
设置线宽2的代码:
% --------------------------------------------------------------------
function xiankuan_2_Callback(hObject, eventdata, handles)
% hObject handle to xiankuan_2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
if isfield(handles, 'h')%if语句的作用:只有绘制曲线后,才能设置线宽
set(handles.h,'LineWidth',2);%设置线宽2为2
end
设置线宽3的代码:
% --------------------------------------------------------------------
function xiankuan_3_Callback(hObject, eventdata, handles)
% hObject handle to xiankuan_3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
if isfield(handles, 'h')%if语句的作用:只有绘制曲线后,才能设置线宽
set(handles.h,'LineWidth',3);%设置线宽3为3
end
8.保存,运行程序,查看程序的效果。