日期:2014-05-20  浏览次数:21338 次

c#调用MATLAB com组件Undefined function 'armax' for input arguments of type 'iddata'
有问题请教:
自己写了一个matlab预测函数,如下所示:
% 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];m=armax(Data,orders) % 能正确输出

用Matlab的deploytool工具中.net Component将上述.m文件打包生成.dll文件,在C#中调用,代码如下:

double[] dData = new double[20] { 1, 2, 3, 4, 5, 6, 7, 8, 3, 2, 4, 6, 7, 4, 3, 3, 2, 3, 4, 4 };
MWNumericArray mwnData = dData;
int p = 1, q = 1;
int[] orders = new int[2] { p, q };
MWNumericArray mwnOrders = orders;
TestArmax.TestArmaxclass ta = new TestArmax.TestArmaxclass();
MWArray mwaResult = ta.TestArmax(mwnData, mwnOrders);

出现下述错误:
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函数或方法”。

请高手指点一二
------解决方案--------------------
知道的高手,请回复呀