MATLAB打包APP后运行,app内部界面切换出错问题及解决方案

matlab app运行时界面切换出错问题及解决方案

matlab app的编写

目前,使用matlab编写基于matlab环境的app有两种方式,一种是传统的GUI功能,还有一种是The MathWorks公司在MATLAB R2016a推出的AppDesigner功能,后者使用面向对象的语法,比前者更加简洁方便。guide编写所得文件为.m文件与.fig文件,appdesigner编写所得文件为mlapp文件。

app界面编写完成后打包

下图为GUI文件打包界面:
MATLAB打包APP后运行,app内部界面切换出错问题及解决方案
下图为AppDesigner文件打包界面:
MATLAB打包APP后运行,app内部界面切换出错问题及解决方案

打包安装后运行app,界面切换时出错

MATLAB打包APP后运行,app内部界面切换出错问题及解决方案

错误提示如下

MATLAB打包APP后运行,app内部界面切换出错问题及解决方案
分析原因:出错提示没有定义rayleigh,无法找到它,也就是无法调用我打包进去的rayleigh文件,从而没有办法切换界面,但是由我上述打包流程可知,该文件确实已经打包进了APP。

问题补充

该问题是在打包完设计的APP程序后,安装运行才发生的。也就是说,当我设计完软件的各个界面,然后仿真时,并没有报错,程序的各项运行也很正常。

问题解决

为解决这个问题,经过我的多种尝试,最终发现问题来自于AppDesigner设计中的delete(app)这句话,对应的是GUI设计中的close all这句话。
这两句话在平时的仿真中没有任何问题,delete(app)就是关闭当前的app界面的意思,close all就是关闭所有界面的意思。
但是,当把所有程序、界面打包成一个app时,这两句话就会造成歧义,系统会判定要关闭当前的软件,这也就导致了软件内部的文件无法调用的问题。
于是,我对这两句代码进行了删除与修改,最终解决了APP切换界面出错的问题。

总结

这是我****写得第一篇博客,起因为我在编写制作软件的过程中,遇到了问题,但是网上却无法找到解决方案。
我想应该是appdesigner为matlab近些年才推出的功能,网络上缺乏相关教程。
所以我编写了这篇文章,希望能给以后用matlab编写app的同学一些启发,并提供一个可以解决该问题的方案。
我记得以前上嵌入式创新课时,杨刚老师说:“现在网络这么发达,你们可以很轻易地从网络上学到很多知识,那我希望同学们思考一下,你们能不能也发布一些东西,供他人学习借鉴呢?”
大家共勉吧!