MATLAB实战 | APP设计

 

01、应用实战

【例1】生成一个用于观察视点仰角和坐标轴着色方式对三维图形显示效果影响的App,界面如图1所示。界面右上部的列表框用于选择绘图数据、切换按钮组用于选择绘图方法,中间的旋钮用于设置视点方位角和仰角,右下部的分档旋钮用于设置坐标轴着色方式、跷板开关用于显示网格线。

■ 图1 App运行界面

操作步骤如下。

1. 打开App设计工具窗口,添加组件

在App设计工具组件库选中“坐标区”组件,将其拖动至编辑区,调整好大小和位置。再添加一个列表框、一个切换按钮组、两个旋钮、一个分挡旋钮和一个跷板开关,然后按图2调整组件的位置和大小。

■ 图2 App界面设计

 

操作步骤如下。

1. 打开App设计工具窗口,添加组件

在App设计工具组件库选中“坐标区”组件,将其拖动至编辑区,调整好大小和位置。再添加一个列表框、一个切换按钮组、两个旋钮、一个分挡旋钮和一个跷板开关,然后按图11-9调整组件的位置和大小。

2. 利用属性面板设置组件对象的属性

在设计视图的编辑区依次选择各个组件对象,在对应的属性面板中按表1设置组件对象的属性。

■ 表1 组件对象的主要属性

3. 编写代码,实现组件功能

(1) 编写自定义函数,包括用于绘制图形的my_plot函数和调整视点的my_view函数。

①  my_plot函数。切换到App设计工具的代码视图,选择功能区的“编辑器”选项卡,单击“插入”命令组中的“添加函数”按钮,这时,在代码中增加了一个私有函数框架,结构如下: 

function results = func(app.
end

也可以在App设计工具的代码浏览器中选择“函数”选项卡,单击“搜索”栏右端的“添加函数”按钮,添加一个私有函数框架。若需要添加公共函数,则单击“添加函数”下拉按钮,从展开的列表中选“公共函数”选项。

将上述函数的名称func更改为my_plot。由于不需要返回值,删去函数头中的“results=”。然后在my_plot函数体中加入以下代码:

%根据在列表框中的选择项目,确定绘图数据
switch app.ListBox.Value
case'Sinc
[x,y] = meshgrid( - 8:0.3:8);
r= sqrt(x.^2 +y.^2);
z= sin(r)./r;
case'Peaks!
[x,Y,z]= peaks;
Spherecase
[x,Y,z]= sphere;
end
%根据在切换按钮组中按下的按钮,确定绘图方法
switch app.ButtonGroup.SelectedObject
case app.Button
surf(app.UIAxes,x,y,z)
app.Knob3.Enable ='On';
case app.Button2
mesh(app.UIAxes,x,Y,z)
app.Knob3.Enable ='Off';
case app.Button3
contour3(app.UIAxes,x,Y,z)
app.Knob3.Enable = 'Off';
end

②my_view函数。按同样方式建立用于更新坐标轴视点的my_view函数框架,然后在my_view函数体中加入以下代码:

app.Knob2.Value;
az =app.Knob.Value;
view(app.UIAxes,az,el)

(2) 编写组件对象回调函数。

①  为打开用户界面窗口编写响应代码。在设计视图中的图形窗口空白处右击,从快捷菜单中选择“回调”菜单项下的“添加StartupFcn回调”命令,这时,将切换到代码视图,并且在代码中增加了StartupFcn函数框架,结构如下:

function startupEcn(app
% Code that executes after component creation
...
end

 也可以在代码视图的代码浏览器中选择“回调”选项卡,单击搜索栏右端的“添加回调函数以响应用户交互”按钮,在弹出的“添加回调函数”对话框中选组件、回调,修改回调函数名(默认名称与回调相同),然后单击“确定”按钮来添加StartupFcn函数框架。要在运行中打开用户界面窗口时,使用默认数据和绘图函数绘制图形,则在StartupFcn函数体中加入以下代码:

my_plot(app)

②为列表框和切换按钮组编写响应代码。在设计视图中,右击列表框对象ListBox,从快捷菜单中选择“回调”菜单项下的“添加ValueChangedFcn回调”命令,这时,将切换到代码视图,并且在代码的methods段中增加了ListBoxValueChanged函数框架,如下所示:

% Value changed function: ListBox
function ListBoxValueChanged(app,event)
end

当程序运行时,用户在列表框中选择一个绘图数据源,将调用my_plot函数绘制图形,因此在ListBoxValueChanged函数体中输入以下代码:

my_plot(app)

单击切换按钮组的某个按钮也将重绘图形,因此按同样方式建立按钮组的回调函数ButtonGroupSelectionChanged,并在函数体中输入以下代码:

my_plot(app)

③  为旋钮对象编写响应代码。建立用于设置视点方位角的旋钮对象的回调函数KnobValueChanged和设置视点仰角的旋钮对象的回调函数Knob2ValueChanged,并在两个函数的函数体中输入以下代码:

(dde)MTA Aw

④  为分挡旋钮编写响应代码。分挡旋钮用于设置着色方式,建立该对象的回调函数Knob3ValueChanged,并在函数体中输入以下代码:

shading(app.UIAxes,app.Knob3.Value)

⑤  为跷板开关编写响应代码。

跷板开关用于显示/隐藏网格,建立该对象的回调函数SwitchValueChanged,并在函数体中输入以下代码:

switch app.Switch.Value
case'On'
grid(app.UIAxes,On')
caseOff'
grid(app.UIAxesOff')
end

4. 运行App

单击App设计工具窗口功能区“设计工具”选项卡中的 “运行”按钮,或快速访问工具栏的“运行”按钮,或按F5键,即可运行程序,结果如图1所示。

5. 打包App

App设计成功后,可以将它打包为一个MATLAB应用模块。在设计视图下单击“设计工具”选项卡中“共享”按钮下的MATLAB App选项,弹出如图3所示的对话框。

■ 图3 应用程序打包对话框

在对话框中“描述您的App”区域输入图标名称等信息,在对话框右边“打包为安装文件”区域的“输出文件夹”栏指定打包文件的输出文件夹,然后单击“打包”按钮。

打包完成后,对话框右边出现“打开输出文件夹”链接。单击此链接,可以看到在输出文件夹生成了两个文件: app1.prj和app1.mlappinstall。

在MATLAB桌面的“当前文件夹”中找到文件app1.mlappinstall,双击这个文件,将弹出如图4所示“安装”对话框。

■ 图4 App“安装”对话框

 

 

 

 

 

 

 

 

 

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

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

相关文章

Thrift RPC Java、Go、PHP使用例子

文章目录 1、Thrift RPC介绍1.1、Protocol 支持的数据传输协议1.2、Transport 支持的数据传输方式1.3、Server 支持的服务模型1.4、IDL语法数据类型1.5、开发步骤 2、接口定义文件2.1、创建接口定义文件2.2、生成对应平台语言代码2.2.1、下载生成工具2.2.2、生成各平台语言代码…

基于web宠颐生宠物医院系统设计与实现

基于web宠颐生医院系统开发与实现 摘要:时代飞速发展,网络也飞速发展,互联网许多的行业都可以用互联网实现了,互联网已经成为了人们生活中重要的一部分,或多或少的影响着我们的生活,互联网在给我带了方便的…

Bert-VITS2本地部署遇到的错误

关于Bert-VITS2本地部署遇到的错误 1、在下载python中相关依赖时报错 building ‘hdbscan._hdbscan_tree’ extension error: Microsoft Visual C 14.0 or greater is required. Get it with “Microsoft C Build Tools”: https://visualstudio.microsoft.com/visual-cpp-bu…

【安全-SSH】SSH安全设置

今天发现自己的公有云服务器被攻击了 然后查看了登录日志,如上图 ls -sh /var/log/secure vim /var/log/secure然后增加了安全相关的设置 具体可以从以下方面增加安全性: 修改默认SSH端口公有云修改安全组策略及防火墙端口设置登录失败次数锁定用户及…

RabbitMQ消息模型之Routing-Direct

Routing Direct 在Fanout模式中,一条消息,会被所有订阅的队列都消费。但是在某些场景下,我们希望不同的消息被不同的队列消费。这时就要用到Direct类型的Exchange。 在Direct模型下: 队列与交换机的绑定,不能是任意…

Spring不再支持Java8了

在今天新建模块的时候发现了没有java8的选项了,结果一查发现在11月24日,Spring不再支持8了,这可怎么办呢?我们可以设置来源为阿里云https://start.aliyun.com/ 。 java8没了 设置URL为阿里云的地址

【Vue3】源码解析-虚拟DOM

【Vue3】源码解析 系列文章什么是虚拟DOMVue 3虚拟DOM获取<template>内容生成AST语法树生成render方法字符串得到最终VNode对象 系列文章 【Vue3】源码解析-前置 【Vue3】源码解析-响应式原理 【Vue3】源码解析-虚拟DOM 什么是虚拟DOM 在浏览器中&#xff0c;HTML页面…

5 面试题--redis

伪客户端&#xff1a; 伪客户端的 fd 属性值为 -1&#xff1b;伪客户端处理的命令请求来源于 AOF ⽂件或者 Lua 脚本&#xff0c;⽽不是⽹络&#xff0c;所以这种客户端不需要套接字连接&#xff0c;⾃然也不需要记录套接字描述符。⽬前 Redis 服务器会在两个地⽅ ⽤到伪客户端…

ThermalLabel SDK for .NET 13.0.23.1113 Crack

ThermalLabel SDK for .NET 是一个 .NET 典型类库&#xff0c;它允许用户和开发人员创建非常创新的条码标签并将其发布在 zebra ZPL、EPL、EPSON ESC、POS 以及 Honeywell intermec 指纹中通过在 VB.NET 或 C# 上编写 .NET 纯代码来实现热敏打印机&#xff0c;以实现项目框架的…

Ubuntu Linux玩童年小霸王插卡游戏

1.下载安装模拟器 在Windows平台模拟器非常多&#xff0c;而且效果也很优秀&#xff0c;Linux平台的用户常常很羡慕&#xff0c;却因为系统的缘故&#xff0c;无法使用这样的模拟器&#xff0c;但是随着时代的发展&#xff0c;Linux平台也出现了许多优秀的模拟器&#xff0c;现…

navigator.clipboard is undefined in JavaScript issue [Fixed]

navigator.clipboard 在不安全的网站是无法访问的。 在本地开发使用localhost或127.0.0.1没有这个问题。因为它不是不安全网站。 在现实开发中&#xff0c;可能遇到测试环境为不安全网站。 遇到这个问题&#xff0c;就需要将不安全网站标记为非不安全网站即可。 外网提供了3…

【HTML】VScode不打开浏览器实时预览html

1. 问题描述 预览HTML时&#xff0c;不想打开浏览器&#xff0c;想在VScode中直接实时预览 2. 解决方案 下载Microsoft官方的Live Preview 点击预览按钮即可预览

Unity中Shader优化通用规则

文章目录 前言一、精度优化1、三种精度 fixed / half / float2、位置坐标、物理坐标类使用float3、HDR颜色、方向向量类使用half4、普通纹理、颜色类使用 fixed5、实际上&#xff0c;使用的精度取决于 平台 和 GPU6、现在桌面级GPU都是直接采用 float , Shader中的 fixed / hal…

J2EE征程——第一个纯servletCURD

第一个纯servletCURD 前言在此之前 一&#xff0c;概述二、CURD1介绍2查询并列表显示准备实体类country编写 CountryListServlet配置web.xml为web应用导入mysql-jdbc的jar包 3增加准备增加的页面addc.html编写 CAddServlet配置web.xml测试 4删除修改CountryListServlet&#xf…

RabbitMQ消息模型之Routing-Topic

Routing Topic Topic类型的Exchange与Direct相比&#xff0c;都是可以根据RoutingKey把消息路由到不同的队列。只不过Topic类型Exchange可以让队列在绑定Routing key的时候使用通配符&#xff01;这种模型Routingkey一般都是由一个或多个单词组成&#xff0c;多个单词之间以”…

ESP32-Web-Server编程- WebSocket 编程

ESP32-Web-Server编程- WebSocket 编程 概述 在前述 ESP32-Web-Server 实战编程-通过网页控制设备的 GPIO 中&#xff0c;我们创建了一个基于 HTTP 协议的 ESP32 Web 服务器&#xff0c;每当浏览器向 Web 服务器发送请求&#xff0c;我们将 HTML/CSS 文件提供给浏览器。 使用…

智能手表上的音频(四):语音通话

上篇讲了智能手表上音频文件播放。本篇开始讲语音通话。同音频播放一样有两种case&#xff1a;内置codec和BT。先看这两种case下audio data path&#xff0c;分别如下图&#xff1a; 内置codec下的语音通话audio data path 蓝牙下的语音通话audio data path 从上面两张图可以看…

纯js实现录屏并保存视频到本地的尝试

前言&#xff1a;先了解下&#xff1a;navigator.mediaDevices&#xff0c;mediaDevices 是 Navigator 只读属性&#xff0c;返回一个 MediaDevices 对象&#xff0c;该对象可提供对相机和麦克风等媒体输入设备的连接访问&#xff0c;也包括屏幕共享。 const media navigator…

【刷题】DFS

DFS 递归&#xff1a; 1.判断是否失败终止 2.判断是否成功终止&#xff0c;如果成功的&#xff0c;记录一个成果 3.遍历各种选择&#xff0c;在这部分可以进行剪枝 4.在每种情况下进行DFS&#xff0c;并进行回退。 199. 二叉树的右视图 给定一个二叉树的 根节点 root&#x…

深度学习之十二(图像翻译AI算法--UNIT(Unified Neural Translation))

概念 UNIT(Unified Neural Translation)是一种用于图像翻译的 AI 模型。它是一种基于生成对抗网络(GAN)的框架,用于将图像从一个域转换到另一个域。在图像翻译中,这意味着将一个风格或内容的图像转换为另一个风格或内容的图像,而不改变图像的内容或语义。 UNIT 的核心…