MATLAB App Designer过程中的一些经验总结

目录

前言

一、在代码界面运行程序正常但编译打包成exe后无法输出文件

1、问题描述

2、原因分析

3、解决方法

二、在网页部署app时无法使用

1.问题描述

2.原因分析

3、解决方法

总结


前言

        MATLAB APP Designer可以创建专业的 APP,同时并不要求软件开发专业背景。只需通过拖放可视化组件即可实现图形用户界面 (GUI) 设计布局,使用集成的编辑器快速为其行为编程。一般情况下熟悉MATLAB编程语言就能够很好地掌握APP设计工具,但是由于该工具推出时间不长,相应的功能不够完善,部分功能也会存在不能实现的情况。结合之前自己设计的一个App,将自己踩过的坑和一些总结的经验分享出来,供大家参考交流。

        使用的MATLAB版本:MATLAB R2019b(使用版本很重要,不同的版本之间支持的MATLAB函数有很大不同,一般越新的支持的功能越多)

        下图是设计的软件界面,实现的功能是产生仿真数据,并保存到指定的文件夹中去,涉及大量的文件读写操作。


   以下是在做App时遇到的一些问题的总结。

一、在代码界面运行程序正常但编译打包成exe后无法输出文件

        1、问题描述

        这个在我做软件的过程中遇到的最大的问题,在编辑器中运行时能够正常输出数据,但是通过Application Compiler打包生成的exe可执行文件就无法输出文件,关键是exe文件无法显示错误信息,程序一直在执行就无法结束,当时检查了好多遍都找不到原因,后来发现是因为在APP设计工具代码视图中的代码调用了MATLAB的一些工具箱(Toolbox),而在打包时是没有将这类工具箱打包的,导致程序无法找到工具箱中对应的函数,程序就一直运行(界面上的工作状态灯就会一直红着,却没有一个文件保存下来,程序也不会停下来,只能强制退出)。

        2、原因分析

        首先原因就是打包程序生成exe的过程中没有将调用的工具箱一块打包,导致程序无法找到相应的函数,无法执行相应的功能。这里我们就需要了解一下Application Compiler的一些知识。

        下面是MATLAB文档中的介绍。

         Application Compiler最大的特点就是可以将app设计工具设计的程序打包成exe文件,然后可以安装到另一台没有安装MATLAB软件的电脑,但是你需要在另一台电脑上安装MATLAB Runtime,这样才能够运行exe文件。MATLAB Runtime我的理解是类似MATLAB运行的基础环境,这个环境是不包含MATLAB一些专业类的工具箱的,所以我们就要在打包的时候将所用的库一同打包进去。

        3、解决方法

        一般情况下将相应依赖的函数文件加入到打包的文件中就可以解决这个问题,打包界面如下。

         在Files required for your application to run中添加你所用的工具箱或者相应的.m文件,将其一起编译到文件中去,这样应该就可以解决函数调用的问题。

        但是   

        不知道为什么我放进去了不好使,于是我用了最终极的方法,就是将调用的函数直接写进代码视图中的代码中去了(将其作为一个函数来写,这样就不需要额外加调用文件,代价就是代码很长很长,但是能跑就行了,对吧)。这个方法要求你调用的那个函数里不能有别的调用,这样的话你就可以使用这种方法,如果还有调用的话那就再改成函数,直到没有调用为止。

        改成代码的方式为:

 methods (Access = public)
        
        function [输出1,输出2,...] = 函数1名(参数1,参数2,....)
            
        #函数内容

        end
        function [输出1,输出2,...] = 函数2名(参数1,参数2,....)
            
        #函数内容

        end
    end

二、在网页部署app时无法使用

        1.问题描述

        在做这个软件时,我还想将其做成一个web 应用程序共享,将自己的电脑作为一个服务器,使其他用户可以通过网页直接调用这个程序,这样的话其他用户不需要安装MATLAB runtime就能使用这个软件,具体的部署方法网上介绍的都很详细,在这里就不提了。在实际操作中发现界面可以显示,但程序根本无法正常运行。

        2.原因分析

网上找了好多解决方法都没有找到,最后在官方的文档当中找原因,发现了这样一段话:

         MATLAB app designer中仍然存在许多限制,比如uigetfile、uiputfile,在我的程序中大量运用了这两个函数,没办法,这个软件没有办法部署。

        3、解决方法

        暂无。

        我用的是MATLAB R2019b,下表是其相应版本app designer不支持的函数。

         现在App设计工具还是有很大的限制的,这就导致在MATLAB正常的程序可以实现的功能在设计工具中却无法实现,不知道2020以后版本的设计工具支持不支持。如果用的版本低的MATLAB建议升级版本,另外多看看官方文档。


总结

        以上就是我遇到的一些问题,本文仅仅简单介绍了两个,而在实际过程中还有一些大大小小的坑,等以后有机会再写吧。

  • 23
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值