您的位置:首页 > 编程语言 > MATLAB

MALTAB用mcc生成exe文件后,运行时出现错误提示:未定义arx、aic函数(matlab自带的库函数)

2014-09-22 15:33 1216 查看
1 问题:MALTAB用mcc生成exe文件后,运行时出现错误提示:未定义arx、aic函数(matlab自带的库函数)。

2 描述:

matlab中的预测函数,用到了arx、aic函数,在GUIDE中运行没有问题;MCC编译生成并使用EXE文件的时候,出现错误提示:
Undefined function or method 'armax' for input arguments of type 'iddata'.

%自己的预测函数形如:
function [AIC] = TestArmax(data,orders)
Data = iddata(data');
m = armax(Data,orders);
AIC = aic(m);
% 在Matlab中能正常运行,举例:data = [1,2,3,4,5,6,7,8,3,2,4,6,7,4,3,3,2,3,4,4]; orders = [1,1];m=armax(Data,orders) % 能正确输出


3 个人分析:错误提示是未定义armax函数,而armax函数作为matlab本身库函数,在Matlab中可以直接使用。求问,如何在生成EXE文件的时候,把调用的函数库包含进去???

生成的EXE文件已经和MCR运行环境在一个文件夹下了。MCR的环境变量也已经加到环境变量了。

问题解决了,用了比较笨的方法。MATLAB无法再编译后的运行环境下动态链接自己的库。所以需要把armax、aic函数对应的.m文件中的function函数,也copy到自己的.fig和.m文件中就可以了。

4 解决方法:之前在百度知道上面求助,没有办法。自己琢磨得到了一个笨方法:

MATLAB无法再编译后的运行环境下动态链接自己的库。所以需要把armax、aic函数对应的.m文件中的function函数,也copy到自己的.fig和.m文件中就可以了。


5
扩展:(转)Matlab Compiler 的局限性

Matlab Compiler 的局限性:

不支持的m文件:
1、脚本m文件
2、使用了Object的m文件
3、调用了Matlab的Java接口
4、使用了input、eval操纵的工作空间变量
5、使用了带两个参数的exist函数
6、使用了动态命名的load,save函数
7、使用load,save载入文本文件
如果使用了libmatlb库以外的内置函数,编译也将失败。
条件语句中的persistent和global将不起作用。
下列函数在独立执行文件(Stand-Alone)中不被支持:
(Simulink 函数全部不支持)
add_block       add_line        applescript     assignin callstats close_system 
cputime dbclear dbcont  dbdown  dbquit  dbstack dbstatus        dbstep  dbstop  
dbtype  dbup    delete_block    delete_line     diary   echo    edterrorstat    
errortrap       evalin  fields  fschange        functionscalled get_param       
<
a88d
span style="font-family:'Microsoft YaHei', '微软雅黑', Arial, 'Lucida Grande', Tahoma, sans-serif;font-size:13px;line-height:24.0499992370605px;">hcreate help    home    hregister       inferiorto      inmem   isglobal        
isjava  isruntime       java    javaArray       javaMethod      javaObject      
keyboard        linmod  lookfor macprint        mactools        methods mislocked       
mlock   more    munlock new_system      open_system     pack    pfile   rehash  
runtime set_param       sim     simget  simset  sldebug str2func        superiorto      
system_dependent        trmginput       type    vms     what    which   who     
whos 

动态回调的问题
动态回调将不会被自动生成编译。

以上只是官方文档上的,以下情况可能也不能成功编译。
1、显式引用ans变量的
2、涉及稀疏矩阵的函数
3、调用无源文件的p文件
4、动态执行Simulink文件,就是model(...)
5、操作系统命令
6、似乎对工具箱的支持也不行
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  matlab
相关文章推荐