MATLAB实战 | APP设计

本文涉及的产品
无影云电脑个人版,1个月黄金款+200核时
资源编排,不限时长
无影云电脑企业版,4核8GB 120小时 1个月
简介: 生成一个用于观察视点仰角和坐标轴着色方式对三维图形显示效果影响的App,界面如图1所示。界面右上部的列表框用于选择绘图数据、切换按钮组用于选择绘图方法,中间的旋钮用于设置视点方位角和仰角,右下部的分档旋钮用于设置坐标轴着色方式、跷板开关用于显示网格线。

image.png

01、应用实战

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

image.png


■ 图1 App运行界面


操作步骤如下。

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

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

image.png


■ 图2 App界面设计

操作步骤如下。

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

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

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

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

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

  1. 编写代码,实现组件功能
    (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
  1. 运行App

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

  1. 打包App

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

image.png


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


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

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

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

image.png


■ 图4 App“安装”对话框

目录
相关文章
|
6月前
|
移动开发 JavaScript 前端开发
【前后端实战项目】带你从入门到实战全面掌握 uni-app
【前后端实战项目】带你从入门到实战全面掌握 uni-app
|
30天前
|
JavaScript 小程序 开发者
uni-app开发实战:利用Vue混入(mixin)实现微信小程序全局分享功能,一键发送给朋友、分享到朋友圈、复制链接
uni-app开发实战:利用Vue混入(mixin)实现微信小程序全局分享功能,一键发送给朋友、分享到朋友圈、复制链接
312 0
|
3月前
|
消息中间件 Java
【实战揭秘】如何运用Java发布-订阅模式,打造高效响应式天气预报App?
【8月更文挑战第30天】发布-订阅模式是一种消息通信模型,发送者将消息发布到公共队列,接收者自行订阅并处理。此模式降低了对象间的耦合度,使系统更灵活、可扩展。例如,在天气预报应用中,`WeatherEventPublisher` 类作为发布者收集天气数据并通知订阅者(如 `TemperatureDisplay` 和 `HumidityDisplay`),实现组件间的解耦和动态更新。这种方式适用于事件驱动的应用,提高了系统的扩展性和可维护性。
67 2
|
5月前
|
开发框架 移动开发 JavaScript
SpringCloud微服务实战——搭建企业级开发框架(四十七):【移动开发】整合uni-app搭建移动端快速开发框架-添加Axios并实现登录功能
在uni-app中,使用axios实现网络请求和登录功能涉及以下几个关键步骤: 1. **安装axios和axios-auth-refresh**: 在项目的`package.json`中添加axios和axios-auth-refresh依赖,可以通过HBuilderX的终端窗口运行`yarn add axios axios-auth-refresh`命令来安装。 2. **配置自定义常量**: 创建`project.config.js`文件,配置全局常量,如API基础URL、TenantId、APP_CLIENT_ID和APP_CLIENT_SECRET等。
217 60
|
4月前
|
监控 Android开发 开发者
Android经典面试题之实战经验分享:如何简单实现App的前后台监听判断
本文介绍在Android中判断应用前后台状态的两种方法:`ActivityLifecycleCallbacks`和`ProcessLifecycleOwner`。前者提供精细控制,适用于需针对每个Activity处理的场景;后者简化前后台检测,适用于多数应用。两者各有优劣:`ActivityLifecycleCallbacks`更精确但复杂度高;`ProcessLifecycleOwner`更简便但可能在极端场景下略有差异。根据应用需求选择合适方法。
39 2
|
4月前
|
前端开发
uniapp 实战 -- app 的自动升级更新(含生成 app 发布页)
uniapp 实战 -- app 的自动升级更新(含生成 app 发布页)
1263 1
|
6月前
|
开发框架 移动开发 JavaScript
SpringCloud微服务实战——搭建企业级开发框架(四十六):【移动开发】整合uni-app搭建移动端快速开发框架-环境搭建
正如优秀的软件设计一样,uni-app把一些移动端常用的功能做成了独立的服务或者插件,我们在使用的时候只需要选择使用即可。但是在使用这些服务或者插件时一定要区分其提供的各种服务和插件的使用场景,例如其提供的【uni-starter快速开发项目模版】几乎集成了移动端所需的所有基础功能,使用非常方便,但是其许可协议只允许对接其uniCloud的JS开发服务端,不允许对接自己的php、java等其他后台系统。
306 61
|
6月前
|
机器学习/深度学习 编解码 监控
探索MATLAB在计算机视觉与深度学习领域的实战应用
探索MATLAB在计算机视觉与深度学习领域的实战应用
82 7
|
6月前
|
网络协议 算法 Android开发
安卓逆向 -- 实战某峰窝APP(动态分析)
安卓逆向 -- 实战某峰窝APP(动态分析)
112 4
|
6月前
|
算法 Java Android开发
安卓逆向 -- 实战某峰窝APP(静态分析)
安卓逆向 -- 实战某峰窝APP(静态分析)
62 0