c#如何调用matlab 函数(dll)输出的多参数

有没有人用c#调用matlab的m文件函数,我刚学遇到一个问题:
matlab的m文件函数返回多个参数,例如,[x1,x2]=MatrixOperate(a,b),其中a,b,x1和x2都是

矩阵,在c#中怎么调用获得两个返回值矩阵呢。
参考别人的做法:
MWArray[] mC = myFun.MatrixOpera(mA, mB);
//可是我这里返回来的,不是两个矩阵,而只有一个矩阵
MWNumericArray x1 = (MWNumericArray)mC[1];
MWNumericArray x2 = (MWNumericArray)mC[2];
请问高手如何解决多参数传递的问题。

第1个回答  推荐于2016-07-04
这两天我也遇到了该问题,刚刚解决掉,跟你分享下吧。
//输入这里想传入的2个输入参数,为了支持矩阵好通用,所以得弄成Array
double[] a = { 1, 2, 3, 4, 5, 6 };//输入参数1
double[] b = { 2, 4, 6, 8, 10, 12 };//输入参数2
double[,] c = new double[3, 2];//输出参数1
double[,] d = new double[3, 2];//输出参数2
//这些参数都是矩阵
MWNumericArray ma = new MWNumericArray(3, 2, a);//转换成matlab需求的格式
MWNumericArray mb = new MWNumericArray(3, 2, b);
//输出参数是一个MWArray数组
MWArray[] agrsOut = new MWArray[2];//两个输出参数,一定要写数量
//输出几个输出参数可以是不同类型的,比如第一个元素是矩阵,第二个是数值
//同理,输入参数也是一个MWArray数组
MWArray[] agrsIn = new MWArray[] { ma,mb};
//调用函数,输出参数需要加 ref 关键字
myFun.MatrixOpera(2, ref agrsOut, agrsIn);
//2表示输入参数的个数,输出结构都在argsOut中,类似于c的指针参数输入
//转换得到实际的输出参数
MWNumericArray x1 = agrsOut[0] as MWNumericArray;
MWNumericArray x2 = agrsOut[1] as MWNumericArray;
c = (double[,])x1.ToArray();
d = (double[,])x2.ToArray();
//一定要注意最后c和d的转化,不同类型的转换差异很大厄
//ToArray()对应n*m的数组
//ToScalarDouble()对应单个数值
//ToVetor()对应1维数组
参考:http://zhidao.baidu.com/question/260546430.html
相似回答