看B站up主freexyn的freexyn编程实例视频教程系列36Matlab GUI的学习笔记
文章目录
- 坐标区
- 表
坐标区
任务要求设计一个图像显示界面,根据选定的周期做出相应的sin函数图像
-
使用坐标区、弹出式菜单、普通按钮设计页面,弹出式菜单string设置为1、2、3、4代表4个周期,按钮string为“作图”,保存为test4.fig
-
程序应该写在普通按钮的回调函数中,读取弹出式菜单中的周期数,在坐标区中作图
在.fig界面右击“作图”按钮-查看回调-callback,定位到.m文件的pushbutton1_Callback
function pushbutton1_Callback(hObject, eventdata, handles) %弹出式菜单中的值和value对应,所以直接使用其value value=get(handles.popupmenu1,'value'); %fplot(funx,funy,tinterval)将在指定区间tinterval之间绘制由x=funx(t)和y=funy(t)定义的曲线 fplot(handles.axes1,@sin,[0,2*pi*value]);%@函数名,返回function_handle title('sin') grid on
-
坐标区是没有回调函数的,只是一个显示图像的工具
-
但是坐标区有一个函数ButtonDownFcn(),当点击坐标区会触发这个函数程序的运行,如复制pushbutton1_Callback的代码过来,使得第一次点击坐标区和点击“作图”按钮的效果是一致的,但是第二次第三次点击会看不到绘制出的新图像,因为第一张图像把坐标区覆盖住了
所以坐标区的图像都是使用另外的按钮来触发
function axes1_ButtonDownFcn(hObject, eventdata, handles) %弹出式菜单中的值和value对应,所以直接使用其value value=get(handles.popupmenu1,'value'); %fplot(funx,funy,tinterval)将在指定区间tinterval之间绘制由x=funx(t)和y=funy(t)定义的曲线 fplot(handles.axes1,@sin,[0,2*pi*value]);%@函数名,返回function_handle title('sin') grid on
表
任务要求设计一个信息管理系统,实现数据打开、读取、编辑、存储功能
-
使用表、普通按钮、静态文本框设计如下页面,保存为test5.fig
-
数据处理:准备一个excel表格test5.xlsx,右键表格,点击“表 属性编辑器”,在列页面,插入列,修改列名称
-
定位到“打开”按钮的回调函数callback
function pushbutton1_Callback(hObject, eventdata, handles) %读取文件夹中的excel数据 [~,~,data]=xlsread('test5.xlsx'); set(handles.uitable1,'data',data);
此时excel表格里的首行名字也被复制过来了,要想只有数据被复制过来,则
function pushbutton1_Callback(hObject, eventdata, handles) %读取文件夹中的excel数据 [~,~,data]=xlsread('test5.xlsx'); **data(1,:)=[];%第一行被设置为空,gui中不显示空行** set(handles.uitable1,'data',data);
-
当在运行时可以修改“成绩1”和“成绩2“,点击”保存“按钮,使得excel表格自动同步修改:
-
在运行时可以修改“成绩1”和“成绩2“:右键表-查看回调-CellEditCallback,单元格编辑的回调函数,即当运行时修改单元格内容,会调用这个函数
function uitable1_CellEditCallback(hObject, eventdata, handles) % eventdata是一个保留字段,包含以下信息: % Indices: 被编辑单元的行列位置 % PreviousData: 被编辑单元的原始数据 % EditData: 输入的数据 ind=eventdata.Indices; pr=eventdata.PreviousData; ed=eventdata.EditData; s=['第',num2str(ind(1)),'行第',num2str(ind(2)),'列的数据',num2str(pr),'被更改为:',num2str(ed)]; set(handles.text2,'string',s);
-
点击”保存“按钮,excel表格自动同步修改:右键”保存“按钮-查看回调-Callback
function pushbutton2_Callback(hObject, eventdata, handles) %首先获得表格上的数据 data=get(handles.uitable1,'data'); xlswrite('test5_out',data); helppdlg('保存完成');
-