此系列包含两个内容。
以此系列第一篇文章中的函数为例:
GroupSelectiveAssembly中的所有输入参数均为1X1的double类型(可为矩阵,可为其他类型),输出为nXn的double矩阵。
#include
void main()
{
GroupSelectiveAssemblyInitialize();
...
}
// Input Parameter
double *dTup1;
dTup1=new double[1];
dTup1[0]=4.001;
double *dTdown1;
dTdown1=new double[1];
dTdown1[0]=3.993;
double *dTup2;
dTup2=new double[1];
dTup2[0]=4.000;
double *dTdown2;
dTdown2=new double[1];
dTdown2[0]=3.996;
double *dinterval1;
dinterval1=new double[1];
dinterval1[0]=0.002;
double *dinterval2;
dinterval2=new double[1];
dinterval2[0]=0.002;
double *dTup;
dTup=new double[1];
dTup[0]=0.002;
double *dTdown;
dTdown=new double[1];
dTdown[0]=-0.001;
// Output Parameter
double *drecommendation_all;
drecommendation_all=new double[10000];
mwArray Tup(1,1,mxDOUBLE_CLASS);
mwArray Tup1(1,1,mxDOUBLE_CLASS);
mwArray Tup2(1,1,mxDOUBLE_CLASS);
mwArray Tdown(1,1,mxDOUBLE_CLASS);
mwArray Tdown1(1,1,mxDOUBLE_CLASS);
mwArray Tdown2(1,1,mxDOUBLE_CLASS);
mwArray interval1(1,1,mxDOUBLE_CLASS);
mwArray interval2(1,1,mxDOUBLE_CLASS);
mwArray recommendation_all(1,1,mxDOUBLE_CLASS);
mwArray的第一个参数为行数,第二个参数为列数,第三个参数是类型,详见Matlab帮助。
Tup.SetData(dTup,1);
Tup1.SetData(dTup1,1);
Tup2.SetData(dTup2,1);
Tdown.SetData(dTdown,1);
Tdown1.SetData(dTdown1,1);
Tdown2.SetData(dTdown2,1);
interval1.SetData(dinterval1,1);
interval2.SetData(dinterval2,1);
使用SetData函数进行参数间的传递,第一个为传递的C++数据类型,第二个为参数个数(行数X列数)。
GroupSelectiveAssembly(1, recommendation_all, Tup1, Tdown1,Tup2, Tdown2,interval1,interval2, Tup, Tdown);
GroupSelectiveAssembly第一个参数为输出参数个数(这里只传出一个recommendation_all),第二个为输出参数,第三个开始为输入参数。
recommendation_all.GetData(drecommendation_all,recommendation_all.NumberOfElements());
使用GetData函数获得输出参数,第一个参数为double类型的输出参数,第二个为输出的元素个数,使用NumberOfElements获得。