目录
1、前期准备
要编写APP之前首先要配置环境,环境配置好了才能进行后续操作,如果环境没有配置那么必然不可能成功运行。
1.1环境配置
打开matlab之后,在命令行输入mcr。
由于环境没有配置,所以会报错的,找不到Runtime。
根据命令提示,在命令行输入compiler.runtime.download
由于matlab自身下载非常慢所以,要去另一个地方下载(网页),那么此时的操作为在命令行窗口按下CTRL+C,没看错就是这个组合键,这不是复制而是matlab中的命令停止,输入之后会得到以下输出:
将上图中的网站复制并粘贴到网页上即可下载,每个matlab版本对应不同的Runtime版本,这个方法是最简单的下载方法,不必去matlab官网上寻找。
下载完毕之后在matlab中配置:
将下载的压缩包选中,不要压缩,不要压缩,不要压缩。
1.2App获取
获取的这个app为了后续打包服务。
2、编写APP
App的编写相对而言比较简单,但是APP的编写难度会根据想要实现功能的复杂性而上升,主要是调试难度大。
点击matlab中的新建,建立APP。
2.1常用组件功能介绍
常用的组件为:按键、下拉框、文本区域。
2.1.1 按键
按键,功能很简单,就是点一下执行相关任务,这个任务就是回调函数。
右键按键即可添加回调函数。
在回调函数中可以任意编写代码。
2.1.2 下拉框
下拉框也比较常见
唯一需要注意的是下拉框值的形式-字符型。
2.1.3 文本区域
这个文本既可以输入又可以输出,非常有利于人机交互,但是在使用他的时候还需要注意一下,首先这个文本区域本质上是个元胞,而且是个字符元胞,也就是给他赋值的时候需要用字符的形式。
app.TextArea.Value= num2str(plus(value,2));
app.TextArea.Value{1} = '1 2 3 4';
2.1.4 HTML控件
这个控件的使用可以极大的提升app的上限,使用了这个组件等于将网页搬到了app上,你只需要编写HTML+CCS+JS就可以实现相应的功能,控件使用方法:
1.编写网页
2.在app中引用
3.运行
2.1.5 选项卡
此组件可以通过选择来实现切换页面,而且页面切换不影响其他页面的运行,本质上是同一个app,另一种切换页面就是使用两个app进行交互,两种方法都可以使用,但是两个app有两个明显的缺点1、程序代码大2、web中不支持两个app之间相互调用。BTW,使用选项卡不必放在主app中,可以灵活使用position进行位置定位。
2.1.6 编辑字段
编辑字段有两种一个是数据,另一个是文本,而这两个组件本质上就是数据与文本,直接调用app.text.value即可。
2.1.7 表格
表格知道如何将表格填上自己想要填写的数据,表格中有表头与表格,两个可以分开填写,表头填写使用app.UITable.ColumnName直接赋值即可,表格填写就可以使用app.UITable.Data赋值。表格还有一些属性可以使用,比如说排序,编写表头,可以在右下角的“表”中设置。
2.2App函数的编写
2.2.1回调函数
一开始编写App的时候我以为,App只是个界面,用这个界面调用.m文件,实际上App自己就是个matlab,你可以在app里面进行编程。
只需要自己添加函数就可以了,不过所有函数的第一个输入变量必须是”app“,否则报错。
2.2.2初始化函数
初始化函数在app中也是很重要的,但是初始化函数需要注意的就一点,如何添加:右键即可。
2.3对App的理解
App是个界面设计,其本身就可以进行代码编写与.m文件无异,调试也与.m一样,但是他的变量不会在matlab工作区显示,在App中最好不要用clear,因为这会将app本身给清除掉。每个组件都有其存在的意义,赋予其意义的就是回调函数,如果不是自己编写的函数,函数是不会返回值的。调试App时还是用断点调试,此时变量就可以在workspace显示了。
编写app的目的就是能快速的执行代码,或者将代码工具化。
3、打包APP
3.1操作步骤
从APP中打开Application Compiler。
选择 编写的App,(右边)如果exe是给客户的或电脑没有matlab的就选downloaded from web,如果电脑有环境就选included in package。
其他的随便填一下,关键在于log的输出,log不输出后期调试就无法下手。
最后生成package。
生成的文件有三个,第一个是给其他人的,点开之后开始下载,大约3G,第二个是自己用的exe,管理员方式打开即可使用,第三个是测试用,个人任务和第二个文件没有差别。
3.2生成exe踩的坑
在matlab中完成了app的编写,app运行可以完美输出结果,然后很开心的打包输出exe了,点开exe之后,程序运行,但是没有完全运行,就是稍稍动了一下,这个时候就体现出log的重要性了,我在没有log的情况下瞎猜原因,导致浪费了很多时间,最后发现是xlsread函数在app中不支持( 应该是这个原因),将其换成了readtable之后程序顺利运行,顺利运行了一半,之后发现readtable中的读取方式和xlsread有差距,所以又花了很多时间更改了读取和提取数据方式,最后得到了好的结果。
-2024/3/1