MATLAB图形用户界面设计案例式教学

2021-12-02 17:55张莉
科学与生活 2021年25期
关键词:案例式教学

摘要:本文主要介绍了MATLAB图形界面设计的案例教学模式,以植物叶面积测量系统的设计为例,详细介绍了如何利用MATLAB建立GUI界面,展现出MATLAB设计用户界面巨大的简洁性和方便性。

关键词:MATLAB 图形界面设计 GUI 案例式教学

MATLAB 是由美国Math Works公司发布的面向科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大的功能集成在一个易于使用的视窗环境中。

图形用户界面(Graphical User Interface,简称 GUI)是指采用图形方式显示的计算机操作环境用户接口。与早期计算机使用的命令行界面相比,图形界面对于用户来说更为简便易用。GUI的广泛使用是当今计算机发展的重大成就之一,它极大的方便了非专业用户的使用,用户可通过窗口、菜单和按键的方式来方便地进行操作,使计算机产生某种动作或变化,如实现计算和绘图等。

建立MATLAB GUI界面有两种途径,第一种是编写脚本文件,第二种是在命令行里直接输入GUIDE创建,新建并保存后,生成.fig和.m文件,在.fig界面中编辑好点击按钮、可编辑文本和静态文本的位置、大小、颜色和字体。

本文以植物叶面积测量系统的设计为例,讲解如何完成一个MATLAB GUI的设计。该植物叶面积测量系统,利用数码相机获取植物叶面的数字图像,以一枚直径为19毫米的一角人民币硬币为参照物。通过图像采集和图像预处理等一系列操作后,获取植物叶面的像素数,根据植物页面和硬币总像素数的对比,利用公式,即可求出植物叶面积。

一、系统界面结构设计。

本阶段主要制定测量系统的界面结构。首先根据课题确定该界面需要的元素的种类和个数;其次确定界面的布局,可以使用GUIDE中内嵌的工具调整图形的尺寸和元件之间的距离;最后根据每个元素要完成的功能,设置各元素的各种属性,如标签tag、元件的颜色、显示的文本等。该植物叶面积测量系统的界面共有5个按钮和3个可编辑文本框,如图1所示。

界面中有三个坐标轴,用来在GUI中显示图形或者图像,设置图像的属性和外观等方面。坐标轴通过axes函数创建,分别设置为axes1,axes2,axes3,可以通过tag来区分和选择相对应的axes坐标轴。

将此图形保存后,会生成两个文件,一个是FIG文件,该文件包含上述步骤创建的实际GUI界面,M文件包含了图形和框架中对每个GUI元素的回调函数。

二、系统回调函数设计。

编辑好界面之后,编写系统自动生成的M文件,编写Callback回调函数。回调函数是对事件响应所执行的代码,比如用户单击鼠标是一个事件,MATLAB程序必须对每一个事件进行响应,用点击按钮时,会触发对应的回调函数,执行相应的操作。比如本系统界面有五个按钮,点击Calculate按钮完成计算功能;点击Clear按钮,将所有的文本框的值都清零。其余三个按钮,分别完成读入图像,图像预处理和计算目标物体像素數的功能。

1、编写Calculate按钮的Callback回调函数。

户点击Calculate按钮时,需要完成计算的功能,这个功能通过在回调函数实现,用户点击Calculate按钮,MATLAB执行其回调函数,完成计算功能。Callback回调函数有三个输入参数hobject、eventdata和 handles,hobject是触发回调的UI组件,eventdata是包含鼠标键盘操作的详细信息的变量,handles是包含UI界面中所有对象的结构体。guidata函数写在一个模块的末尾是用来保存handles和hoject的操作。

function calc_Callback(hobject,eventdata,handles)

specie_current = get(handles. speciepixel,’String’);

foliage_current = get(handles. foliage pixel,’String’);

area = 2.834*(str2double(foliage _current)/str2double(specie _current));

set (handles. foliage area,’ string’,area);

guidata(hobject,handles)

其中get函数获得句柄图像对象的属性,返回对象属性的当前值。此程序是获取调用字符串参照物像素数和叶片像素数,再通过str2double函数将获取到的两个字符串转换为双精度值计算。根据计算公式,计算出的叶面积值通过set函数设置指定文本框显示最终结果。

2、编写第Clear按钮的Callback回调函数。

编辑其回调函数set函数把三个变量置为0。set函数可以改变句柄图像的属性。点击按钮,所有文本框显示为零,如图2所示。

function cler_Callback(hobject,eventdata,handles)

set(handles. specie pixel,’ string’,0);

set(handles. foliage pixel,’ string’,0);

set(handles. foliage area,’ string’,0);

guidata(hobject,handles)

这里的CreateFcn函数是设置三个坐标轴属性初始化,在程序运行初期执行。set函数设置指定坐标轴属性,此程序设置为隐藏GUI中的axes控件,使初始界面更加美观简洁。

function axes1_CreateFcn(hobject,eventdata,handles)

set(hobject,'xTick',[])

set(hobject,'ytick',[])

回调函数编写完成后,系统界面设计完成,运行结果如图2所示。

三、结论

本文以植物叶面积测量系统的设计为例,详细介绍了如何利用MATLAB建立GUI界面,实践证明,MATLAB GUI界面操作简单,交互性强,采用案例式教学能够激发学生的学习热情,增强课堂的互动性,提高教学质量。

参考文献

[1]丁伟 精通MATLAB R2014b [M].清华大学出版社,2015,北京

[2]潘慧等 基于MATLAB图形用户界面的听觉言语康复效果评估系统设计[J]. 听力学及言语疾病杂志. 2019,27(06)

[3]王巧花等 基于MATLAB 的图形用户界面 (GUI) 设计[J].煤矿机械,2005,3: 60-62.

[4]方芬 基于MATLAB的植物叶面积测量[D] 南京大学金陵学院 2021

[5]熊莎莎等 信号与系统结合MATLAB案例式教学 [J]. 电脑知识与技术. 2019,15(05)

作者简介:张莉,1982年1月生,女,汉族,江苏徐州人,硕士,讲师,研究方向:电子通信。

猜你喜欢
案例式教学
紧扣案例特点,开展有效教学
辐射专业《测量学》课程改革方法的探讨
兽医临床诊断学案例式教学模式的探索与体会
职业教育中大学数学案例式教学模式探究
《航空公司运营管理》课程的教学探索与实践
基于团队的案例式教学在数理统计中的应用