MATLAB GUI设计(基础)

一、目的和要求

1、熟悉和掌握MATLAB GUI的基本控件的使用及属性设置。

2、熟悉和掌握通过GUIDE创建MATLAB GUI的方法。

3、熟悉和掌握MATLAB GUI的菜单、对话框及文件管理框的设计。

4、熟悉和掌握MATLAB GUI的M文件编写。

5、了解通过程序创建MATLAB GUI的方法。

二、内容和步骤

MATLAB提供了可视化的图形界面开发环境,方便地实现用户界面的设计。

1、设计一个能够根据用户选择,显示正弦波、矩形波、锯齿波的GUI界面。

(1)设计界面。通过MATLAB菜单栏,依次选择Flie→New→GUI,打开GUIDE Quick Star界面,选择Blank GUI创建一个空白界面。

(2)设置控件属性,如下图所示。

控件名称

String属性

Tag属性

静态文本

显示函数

坐标轴

(默认)

(默认)

按钮

正弦函数、矩形函数、锯齿函数

fun1、fun2、fun3

 

(3)编写回调函数。选中“正弦函数”按钮,单击右键选择“查看回调”→Callback,进入M文件中回调函数的编辑,系统会自动生成一个空的fun1_Callback函数,该步骤表示当鼠标单击该按钮时,在坐标轴控件中会显示正弦函数,编写代码如下:

同理,对“矩形函数”按钮和“锯齿函数”按钮的Callback函数编写如下代码:

单击.fig文件工具栏中的运行按钮即可运行GUI界面,当单击要显示的函数按钮时,窗口中就会显示相应的函数,如下图所示。

2设计一个简单实用的图像处理程序。功能如下:

(1)图像的读取和保存。

(2)设计图形用户界面,让用户对图像进行色彩图像到灰度图像的转换,并显示原图和灰度图像。

(3)设计图形用户界面,让用户能够根据需要来检测边缘检测算子,即选择边缘检测的方法。

(4)设计图形用户界面,让用户能够自行设定检测的阈值和方向。

(5)显示边缘检测后的图像,并与原图和灰度图像进行对比。

(6)其他功能。

根据上述分析完成如下步骤,界面设计如下图所示。

(1)设计界面。

控件名称

控件数量

功能描述

静态文本

5

用于标注相应控件的提示

坐标轴

3

用于显示原始图像、灰度图像和边缘检测后的图像

按钮

1

用于将原始图像转换为灰度图像

文本编辑框

1

用于输入数据

列表框

1

用于选择检测的方向

(2)设置控件属性。为了编辑和维护的方便,为控件设置新的String和Tag属性,如下图所示。

控件名称

String属性

Tag属性

静态文本

原图、灰度图像、检测图像、设定阈值、检测方向

(默认)

坐标轴

(默认)

original_image、gray_image、test_image

按钮

灰度转换

rgbtogray

文本编辑框

(默认)

thresh_value

列表框

horizontal、vertical、both

direction

           

(3)创建菜单,设计效果如下图所示。

一级菜单名称

子菜单项名称

文件

打开、保存、退出

检测方法

Sobel、Prewitt、Roberts、Canny

帮助

(4)编写代码。打开M文件,在对应函数位置添加如下程序,其他代码不变。

该段程序是菜单栏中子菜单“打开”选项的代码,主要用于选择打开并显示该图像。

该段程序是菜单栏中子菜单“保存”选项的代码,主要用于保存处理后的图像。

执行程序后,单击菜单栏中的文件,打开图片xxx.jpg,在原图位置会显示彩色图像,单击“灰度转换”按钮,在灰度图像位置会显示转换后的弧度图像,在“设定阈值”框输入0.1,选择“检测方向”为both,再在“检测方向”菜单中选择Canny,即可在“检测图像”的位置显示边缘检测后的图像,最后在“文件”菜单中选择“保存”,即可保存最终分割后的边缘检测图,如下图所示。


3、通过程序创建GUI

除通过GUI向导创建GUI外,还可以通过程序创建GUI,Matlab提供了一些函数用于创建GUI,这些函数可以辅助用户创建GUI。

建立数制转换对话框。在左边输入一个十进制整数和2~16之间的数,单击“转换”按钮能在右边得到十进制数所对应的2~16进制字符串,单击“退出”按钮退出对话框。

程序如下:

程序调用了trdec.m函数文件,该函数的作用是将任意十进制整数转换为2~16进制字符串。trdec.m函数文件如下:

建立“图形演示系统”菜单。菜单条中含有3个菜单项:Plot、Option和Quit。Plot中有Sine Wave和Cosine Wave两个子菜单项,分别控制在本图形窗口画出正弦和余弦曲线。Option菜单项的内容为:Grid on和Grid off控制给坐标轴加网格线,Box on和Box off控制给坐标轴加边框,而且这4项只有在画有曲线时才是可选的。Figure Color控制图形窗口背景颜色。Quit控制是否退出系统。

程序如下:

所建立的图形演示对话框如右图所示:

4、自我练习

设计一个简易计算器。

  • 设计页面

  • 设置控件属性

  • 编写代码

“0~9”和“+、-、*、/、及小数点”的代码都是一样的,只需要将textString中的符号进行相应改变就行。

“=”

“Back”及删除一位数字。

“C”即归零

  • 执行程序

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/62066.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RabbitMQ简单应用

概念 RabbitMQ 是一种流行的开源消息代理(Message Broker)软件,它实现了高级消息队列协议(AMQP - Advanced Message Queuing Protocol)。RabbitMQ 通过高效的消息传递机制,主要应用于分布式系统中解耦应用…

【es6】原生js在页面上画矩形及删除的实现方法

画一个矩形,可以选中高亮,删除自己效果的实现,后期会丰富下细节,拖动及拖动调整矩形大小 实现效果 代码实现 class Draw {constructor() {this.x 0this.y 0this.disX 0this.disY 0this.startX 0this.startY 0this.mouseDo…

【前端】JavaScript中的隐式声明及其不良影响分析

博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: 前端 文章目录 💯前言💯什么是隐式声明?💯隐式声明的常见情景1. 赋值给未声明的变量2. 非严格模式下的隐式声明3. 函数中的变量漏掉声明4. for 循环中的隐式声明5. 使用…

windows基础之病毒编写

声明! 学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关&#…

家校通小程序实战教程02口令管理

目录 1 创建数据源2 搭建后台功能3 生成口令4 调用API总结 我们的小程序上线之后,必然面临家长要加入的问题。微搭有登录验证的功能,但是手机验证的机制是,如果你未注册就给你自动注册一个账号,如果以注册了收到验证码就可以登录系…

Elasticsearch中的节点(比如共20个),其中的10个选了一个master,另外10个选了另一个master,怎么办?

大家好,我是锋哥。今天分享关于【Elasticsearch中的节点(比如共20个),其中的10个选了一个master,另外10个选了另一个master,怎么办?】面试题。希望对大家有帮助; Elasticsearch中的节…

阿里发布 EchoMimicV2 :从数字脸扩展到数字人 可以通过图片+音频生成半身动画视频

EchoMimicV2 是由阿里蚂蚁集团推出的开源数字人项目,旨在生成高质量的数字人半身动画视频。以下是该项目的简介: 主要功能: 音频驱动的动画生成:EchoMimicV2 能够使用音频剪辑驱动人物的面部表情和身体动作,实现音频与…

【NLP高频面题 - 分布式训练】ZeRO1、ZeRO2、ZeRO3分别做了哪些优化?

【NLP高频面题 - 分布式训练】ZeRO1、ZeRO2、ZeRO3分别做了哪些优化? 重要性:★★ NLP Github 项目: NLP 项目实践:fasterai/nlp-project-practice 介绍:该仓库围绕着 NLP 任务模型的设计、训练、优化、部署和应用&am…

C#基础控制台程序

11.有一个54的矩阵,要求编程序求出其中值最大的那个元素的值,以及其所在的行号和列号。 12.从键盘输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。 13.输入一个数,判断它是奇数还是偶数,如果…

三六零[601360]行情数据接口

1、三六零:实时行情 Restful API # 测试接口:可以复制到浏览器打开 https://tsanghi.com/api/fin/stock/XSHG/realtime?tokendemo&ticker601360获取股票实时行情(开、高、低、收、量)。 请求方式:GET。 Python示例…

eclipse-git项目提示NO-HEAD

1、出现该问题的过程 本人在用eclipse拉取git代码,刚拉取完,可能还没来得及跟本地的分支合并,电脑就卡动了。无奈只能重启电脑,打开eclipse,maven项目后面就出现了xxx NO-HEAD的提示。 2、问题解决 根据错误提示&am…

Cross-Site Scripting(XSS)攻击

简介 XSS(跨站脚本攻击)是一种常见的 Web 安全漏洞,攻击者通过在目标网站的输入框中注入恶意脚本,当其他用户(如管理员)查看包含恶意脚本的页面时,脚本会在他们的浏览器中执行。XSS 攻击可以分…

uniapp中使用uni-forms实现表单管理,验证表单

前言 uni-forms 是一个用于表单管理的组件。它提供了一种简化和统一的方式来处理表单数据,包括表单验证、字段绑定和提交逻辑等。使用 uni-forms可以方便地创建各种类型的表单,支持数据双向绑定,可以与其他组件及API进行良好的集成。开发者可…

android 11添加切换分屏功能

引言 自Android 7开始官方就支持分屏显示,但没有切换分屏的功能,即交换上下屏幕。直到Android 13开始才支持切换分屏,操作方式是:分屏模式下双击中间分割线就会交换上下屏位置。本文的目的就是在Android 11上实现切换分屏的功能。 下图是Android13切换分屏演示 切换分屏…

springboot项目使用maven打包,第三方jar问题

springboot项目使用maven package打包为可执行jar后,第三方jar会被打包进去吗? 答案是肯定的。做了实验如下: 第三方jar的项目结构及jar包结构如下:(该第三方jar采用的是maven工程,打包为普通jar&#xf…

13 —— 开发环境调错-source map

问题:代码被压缩后,无法正确定位源代码的位置(行数和列数) source map:准确追踪error和warning在原始代码的位置 —— webpack.config.js配置devtool选项 module.exports { devtool: inline-source-map }; inline-s…

数据结构(ArrayList顺序表)

一、引言 1.什么是顺序表 定义: 顺序表是一种基于阵列实现的线性表结构,用连续的存储空间保存表中的数据元素,并按顺序排列。 底层依赖阵列,支持随机访问。元素之间没有额外的连接信息,如指针或链表节点。通过动态扩容…

HTTPS的单向认证和双向认证是什么?有什么区别?

目录标题 单向认证流程双向认证流程区别 单向认证流程 HTTPS单向认证‌是指只有服务器向客户端证明其身份。在这种认证方式中,服务器会向客户端发送一个由可信证书颁发机构(CA)签发的SSL证书,客户端会验证这个证书以确保服务器的…

Python语法基础(一)

🌈个人主页:羽晨同学 💫个人格言:“成为自己未来的主人~” 关键字参数和不定长参数 关键字参数主要体现在函数的调用上 使用关键字参数的好处是,可以不按照形参的参数传参 比如说,我们定义一个函数 def c1(nam…

音视频技术扫盲之预测编码的基本原理探究

预测编码是一种数据压缩技术,广泛应用于图像、视频和音频编码等领域。其基本原理是利用数据的相关性,通过对当前数据的预测和实际值与预测值之间的差值进行编码,从而实现数据压缩的目的。 一、预测编码的基本概念 预测编码主要包括预测器和…