将自己的matlab预测函数写成.m文件如下所示:
% matlab中的.m文件
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];用deploytool工具中.net Component将上述.m文件打包生成.dll文件,在C#中调用出现下述错误:
MWMCR::EvaluateFunction error: Undefined function or method 'armax' for input arguments of type 'iddata'.Error in =>TestArmax.m at 4.个人分析:错误提示是未定义armax函数,而armax函数作为matlab本身库函数,在Matlab中可以直接使用,如果将Matlab库文件中的armax.m也添加到.dll中时,由于armax函数中本身也调用了其他的库函数,运行C#时会在armax.m文件中报类似错误,“未定义XX函数或方法”。实际上Matlab中很多函数都与其他库函数关联,如此一个一个.m文件的查找并添加到.dll中,实在是繁杂而又蛮干。个人感觉应该能在C#中添加一个Matlab库函数集合的引用之类的文件,但在网上又找不到相关的信息。希望各位能指点一二,感激不尽!