for(j=0;j printf(\ printf(\ } printf(\} 该C++程序运算结果如下图所示 (4) 当用命令2生成的DLL 函数时,在工程文件Test.cpp中添加以下代码: #include \ // 输入输出头文件 #include \ // mwArray类型声明 #include \ // DLL头文件 void display(const double* data, const int r, const int c, const char* name); int main() { // 初始化程序 if( !mclInitializeApplication(NULL,0) ) { fprintf(stderr, \ exit(1); } // 初始化库 if (!libsum_prodInitialize()) { fprintf(stderr,\ exit(1); } // 声明DLL函数输入输出mwArray对象 mwArray X(2,3,mxDOUBLE_CLASS); mwArray Y(2,3,mxDOUBLE_CLASS); mwArray SUM,PROD; 9 double x[] = {1,2,3,4,5,6}; double y[] = {7,8,9,10,11,12}; double *sum,*prod; sum = new double[6]; prod = new double[6]; // 给输入mwArray对象赋值 X.SetData(x,6); Y.SetData(y,6); // 调用DLL函数 sum_prod(2,SUM,PROD,X,Y); // 取出输出数据 SUM.GetData(sum,6); PROD.GetData(prod,6); // 显示mwArray对象 // std::cout << \ // std::cout << \ display(sum,2,3,\ display(prod,2,3,\ delete sum; delete prod; // 关闭库和程序 libsum_prodTerminate(); mclTerminateApplication(); return 0; } // 显示矩阵函数 void display(const double* data, const int r, const int c, const char* name) { int i,j; printf(\ for(i=0;i 10 for(j=0;j printf(\ printf(\ } printf(\} 该C++程序运算结果如下图所示 特别说明: 在C\\C++环境中二维数组是“行向量”,如果将下面定义的变量x看成二维数组的话 double x[] = {1,2,3,4,5,6}; 那么x应该是2?3的矩阵,即 x = [1,2,3; 4,5,6]; 但是,如果将数组首地址x初始化mxArray和mwArray类时,数组x在mxArray和mwArray类中是按“列向量”的形式排列的,即 X = [1,3,5; 2,4,6]; 同理,这里 Y = [7,9,11; 8,10,12]; 因此才能得到上图的结果 11
相关推荐: