当前位置: 首页 > news >正文

Matlab GUI设计基础范例(可以一步一步跟着做)

我们要做一个GUI界面,可以选择peaks、membrane和sinc三种三维图数据,选择画出surf、mesh和contour三种图像。

打开GUI

每个版本打开方式可能都不一样,但有一个是相同的,就是在命令行输入guide回车。

绘制控件

大概就绘制成这样,在左边的工具栏拖动出来就行。选中多个控件,点击上面的串串,还可以进行对齐和等间距分布。

设置控件属性

对着控件双击即可,普通按钮的string属性设置为Surf/Mesh/Contour,Tag属性设置为surf_pushbutton/mesh_pushbutton/contour_pushbutton。有兴趣可以改点大小颜色什么的。

下拉菜单的String会特殊一点,得写几行。

M文件编写

我一开始以为要自己另外新建一个M文件,然后发现其实只需要把刚才的界面保存一下就好了,界面会保存为一个.fig文件,然后自动生成一个.m文件,里面有每个控件对应的处理函数。名字很容易找,surf_pushbutton_Callback就是surf的普通按钮的回调函数,在下面写上自己想写的内容就行。

untitled_OpeningFcn是整个GUI打开时候执行的函数

% --- Executes just before untitled is made visible.
function untitled_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
% varargin   command line arguments to untitled (see VARARGIN)
handles.peaks=peaks(35);
handles.membrane=membrane;
[x,y]=meshgrid(-8:0.5:8);
r=sqrt(x.^2+y.^2)+eps;
sinc=sin(r)./r;
handles.sinc=sinc;%创建结构体,保存3组数据
handles.current_data=handles.peaks;%默认绘制peaks图像
surf(handles.current_data);%绘制图形
% Choose default command line output for untitled
handles.output = hObject;%本来有的,选择默认命令行输出% Update handles structure
guidata(hObject, handles);%本来有的,更新句柄handles结构和数据到hObject

在surf_pushbutton_Callback里面增加绘制图像命令,另外两个普通按钮也一样。

% --- Executes on button press in surf_pushbutton.
function surf_pushbutton_Callback(hObject, eventdata, handles)
% hObject    handle to surf_pushbutton (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
surf(handles.current_data);%使用当前数据绘制surf图像

popupmenu1_Callback是下拉菜单的回调函数

% --- Executes on selection change in popupmenu1.
function popupmenu1_Callback(hObject, eventdata, handles)
% hObject    handle to popupmenu1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
val=get(hObject,'Value');
str=get(hObject,'String');
switch str{val}%判断选择了哪一组数据,将当前内容更新为对应的数据
case 'peaks'handles.current_data = handles.peaks;
case 'membrane'handles.current_data = handles.membrane;  
case 'sinc'handles.current_data = handles.sinc;  
end
guidata(hObject,handles)%更新句柄handles结构和内容到hObject
% Hints: contents = cellstr(get(hObject,'String')) returns popupmenu1 contents as cell array
%        contents{get(hObject,'Value')} returns selected item from popupmenu1

做到这里,项目有了个大致的模样。

http://www.lryc.cn/news/281590.html

相关文章:

  • @Transactional(rollbackFor = {Exception.class})与 @Transactional区别
  • 数据结构——二叉树(先序、中序、后序及层次四种遍历(C语言版))超详细~ (✧∇✧) Q_Q
  • 如何快速打造属于自己的接口自动化测试框架
  • 人工智能在数据安全中的应用场景
  • 2024.1.16每日一题
  • python入门,数据容器的通用操作(len,max,min,sorted)
  • 运筹说 第67期 | 动态规划模型的建立与求解
  • 大模型压缩与优化的技术原理与创新方法
  • ConcurrentSkipListMap 深度解析
  • Vue学习笔记6--配置代理
  • 嵌入式培训机构四个月实训课程笔记(完整版)-C++和QT编程第三天-C++类和对象高级应用(物联技术666)
  • SAP中采购文档价格条件可以删除吗?
  • Baumer工业相机堡盟工业相机如何通过NEOAPI SDK设置硬件触发模式(C++)
  • 嵌入式培训机构四个月实训课程笔记(完整版)-Linux网络编程第二天-tcp编程练习(物联技术666)
  • 【IC前端虚拟项目】MVU子模块DS文档编写与注意事项
  • Postgresql 12.2 + PostGIS 3.0.1 安装部署
  • MAC iterm 显示git分支名
  • 智慧公厕:利用物联网、云计算和人工智能实现智能化管理与控制
  • 【漏洞复现】Apache Tomcat AJP文件包含漏洞(CVE-2020-1938)
  • [渗透测试学习] Hospital - HackTheBox
  • C技能树-学习笔记(1-2)C语言概述和数据类型
  • 设计模式入门
  • EasyExcel下载EXCEL文件,后台通过流形式输出到前端浏览器下载方式输出
  • Pandas实战100例 | 案例 56: 创建多重索引
  • 解决“nacos默认secret.key配置不当权限绕过漏洞“
  • 一款好用的开源思维导图软件 docker部署教程
  • Jenkins之pipeline
  • 创意交融:集成自定义报表和仪表盘设计器,实现图标替换
  • Mybatis 40_resultMap基础和@Results注解
  • 【蓝桥杯选拔赛真题31】C++数位求和 第十三届蓝桥杯青少年创意编程大赛C++编程选拔赛真题解析