许可优化
产品
解决方案
服务支持
关于
软件库
当前位置:服务支持 >  软件文章 >  Matlab APP制作入门全攻略

Matlab APP制作入门全攻略

阅读数 37
点赞 0
article_banner

新手笔记,如有错漏,恳请指正。(这篇笔记太难写了,全是步骤,大家凑合看吧。。)

要展示写好的函数或概念,有三种方式:直接给用户函数代码、实时编辑器制作简易APP、APP Designer 制作完善APP。从便捷性看,这三种方式,对用户的友好程度是递增的,对程序猿的友好度是递减的。

制作完善APP重点是要理清APP怎样与用户交互(通过回调 实现)。

Matlab 官方摘要

设计

编写回调

共享

示例一:迷宫制作APP的整体流程

这部分主要讲流程思路,知识细节见最后一节“基础知识点”或第一节“官方摘要”部分。

背景:已有迷宫创建函数Maze,功能是根据两个输入(迷宫大小、算法选择),提供两个可视输出(迷宫的图片、解法的图片)。这两个可视输出其实含有六个输出(迷宫图及迷宫x坐标、迷宫y坐标,解法图及解法x坐标、y坐标)。

构建一个简单的APP界面

回调

1.为“New Maze”按钮添加回调。

2.改写Matlab给出的maze函数,使其成为“New Maze”按钮的回调。(参考本文“基础知识点”-“将图显示在指定坐标区”)

原始maze函数:

[wall,wx,wy] = amaze(); 
plot(wall,"XData",wx,"YData",wy,"NodeLabel",[])  

改写后的maze函数:

[wall,wx,wy] = amaze();
plot(app.UIAxes,wall,"XData",wx,"YData",wy,"NodeLabel",[])
title(app.UIAxes,"Maze")
axis(app.UIAxes,"equal")

此时,点击按钮,可以显示迷宫了。

示例二:将用户在界面上给定的参数输入到函数中

添加微调器 及限值修改

使用户输入指定范围的整数。

微调器回调

迷宫网格密度由Grid Size微调器输入。

这里补充一个背景信息。官网给出的amaze函数参数如下: amaze(n,branching,detail,shortest)。网格尺寸是amaze的第一个参数n。

function NewMaze(app, event)
            gridsize = app.GridSizeSpinner.Value;
            [wall,wx,wy] = amaze(gridsize);
            plot(app.UIAxes,wall,"XData",wx,"YData",wy,"NodeLabel",[])
            axis(app.UIAxes,"equal")
 end

微调器的重命名及组件替换

多按钮组组件

多按钮组组件的添加和设置方式和微调器换汤不换药。多按钮组对应amaze函数的第二个参数branching,图示和更新的代码如下:

gridsize = app.GridSizeSpinner.Value;
branchmode = app.BranchingModeButtonGroup.SelectedObject.Text;%注意一下按钮文本的获取方式
[wall,wx,wy] = amaze(gridsize,branchmode);
plot(app.UIAxes,wall,"XData",wx,"YData",wy,"NodeLabel",[])
axis(app.UIAxes,"equal")

添加复选框 组件

和之前步骤类似

 function DisplaysolutionCheckBoxValueChanged(app, event)             
value = app.DisplaysolutionCheckBox.Value;    
end

示例三:设置复选框勾选与否时的不同状态

将函数的结果变量保存至新建的属性中

函数中的输出和输入用于沟通工作区和函数区的变量,如果变量暂不输出,那么使用app.这个操作让变量保存到属性中。

1新建属性;

2修改变量名称;

3将函数的输出给到属性中的新建变量。

应用存储的数据

1.添加if,设置当复选框勾选与否时的不同状态。详见注释。

function DisplaysolutionCheckBoxValueChanged(app, event)%在复选框回调函数中添加
            value = app.DisplaysolutionCheckBox.Value;%自动生成的语句,用于获取复选框的选中状态
 if value%这句也可以用if value == true,意思是当复选框被勾选的时候
                app.solplot.Visible=true%解图可见
                title(app.UIAxes,"length = " + app.slen)%改标题
 else%否则
                  app.solplot.Visible=false%解图不可见
                title(app.UIAxes,"Maze")%改标题
 end
 end

2.每次执行NewMaze函数时执行复选框的回调。

callbackfcnname(app,[]),复选框的回调函数中不使用事件信息,因此您可以使用任何内容作为第二个输入。当不使用事件信息时,通常需要使用空方括号 ([])。

      function NewMaze(app, event)
            gridsize = app.GridSizeSpinner.Value;
            bmode = app.BranchingModeButtonGroup.SelectedObject.Text;
            
            [wall,wx,wy,sol,sx,sy] = amaze(gridsize,bmode);
            app.slen = numedges(sol);
            plot(app.UIAxes,wall,"XData",wx,"YData",wy,"NodeLabel",[])
            axis(app.UIAxes,"equal")
            
            hold(app.UIAxes,"on")
            app.solplot = plot(app.UIAxes,sol,"XData",sx,"YData",sy,"NodeLabel",[]);
            hold(app.UIAxes,"off")      
            
            app.solplot.Visible = false;
            DisplaysolutionCheckBoxValueChanged(app,[])
        end

设置复选框在新建Maze后才可用

1.Enable禁用

2.在NewMaze中设置启用

示例四:设置重置按钮

添加重置按钮,功能为恢复到APP刚启动时的状态,包括:坐标区清空、标题改为Maze、复选框不可见、重置网格大小和分支模式。

cla(app.UIAxes)
title(app.UIAxes,"Maze")
app.DisplaysolutionCheckBox.Enable = false;
app.GridSizeSpinner.Value=5;
app.BranchingModeButtonGroup.SelectedObject=app.firstButton;

示例五:增加美观度,APP布局自适应大小

添加网格布局

拖动网格布局到APP界面上,此时所有组件现在都位于app.GridLayout上,而不是app.UIFigure上。还调整了各个组件的位置,使它们在网格上对齐,从而让 App 更美观。

调整大小配置方式

避免APP拉伸时按钮变形。



基础知识点

熟悉界面

更改标题的三种方式

方式一:双击标题
方式二:选中坐标区左键,在右边的属性栏更改

方式三:代码区更改:title(app.UIAxes,"Maze")

坐标轴编辑

删掉刻度线
补上两条框线

回调

APP中进行某操作对应的函数。每个回调都有两个参数:app和event。

app可以调用APP中所有事的信息,event存储了导致回调的事件的信息。

将图显示在指定坐标区

app中,需要指定坐标区,以将图像显示在坐标区。

为组件添加回调

函数内回调其他函数

callbackfcnname(app,[]),复选框的回调函数中不使用事件信息,因此您可以使用任何内容作为第二个输入。当不使用事件信息时,通常需要使用空方括号 ([])。

使用户输入指定范围的整数

微调器

组件替换

右键,替换为

按钮上文本的获取方式

branchmode = app.BranchingModeButtonGroup.SelectedObject.Text

保存函数运行结果变量

①新建属性;

②修改变量名称;

③将函数的输出给到属性中的新建变量。

清空图标区

cla(app.UIAxes)

设置属性可用性(启用复选框)

app.DisplaysolutionCheckBox.Enable = "on";

或app.DisplaysolutionCheckBox.Enable = true;

提高美观度

网格布局-配置大小。

App 构建入门之旅 | 自定进度在线课程 - MATLAB & Simulink


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

武汉格发信息技术有限公司,格发许可优化管理系统可以帮你评估贵公司软件许可的真实需求,再低成本合规性管理软件许可,帮助贵司提高软件投资回报率,为软件采购、使用提供科学决策依据。支持的软件有: CAD,CAE,PDM,PLM,Catia,Ugnx, AutoCAD, Pro/E, Solidworks ,Hyperworks, Protel,CAXA,OpenWorks LandMark,MATLAB,Enovia,Winchill,TeamCenter,MathCAD,Ansys, Abaqus,ls-dyna, Fluent, MSC,Bentley,License,UG,ug,catia,Dassault Systèmes,AutoDesk,Altair,autocad,PTC,SolidWorks,Ansys,Siemens PLM Software,Paradigm,Mathworks,Borland,AVEVA,ESRI,hP,Solibri,Progman,Leica,Cadence,IBM,SIMULIA,Citrix,Sybase,Schlumberger,MSC Products...

相关文章
QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空