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;i10
for(j=0;jprintf(\ 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