VC和matlab混合编程,将一个多行矩阵载入matlab中,结果和我放进去的不符合啊
程序是这样
mxArray * traindata= mxCreateDoubleMatrix(5, 4, mxREAL);
double *data1=new double [5*4];
data1[0]=2;data1[1]=7;data1[2]=3;data1[3]=3;
data1[4]=3;data1[5]=9;data1[6]=8;data1[7]=12;
data1[8]=8;data1[9]=29;data1[10]=22;data1[11]=12;
data1[12]=2;data1[13]=3;data1[14]=12;data1[15]=13;
data1[16]=3;data1[17]=5;data1[18]=1;data1[19]=2;
memcpy((void *)mxGetPr(traindata),(void *)data1,4*5*sizeof(double)); //将数组x复制到mxarray数组xx中。
engPutVariable(ep, "traindata",traindata); //将mxArray数组xx写入到Matlab工作空间,命名为xx。
mxArray *res=engGetVariable(ep,"traindata");
int m=mxGetM(res);
int n=mxGetN(res);
double *type=new double[20];
memcpy(type,mxGetPr(res),20*sizeof(double));
for( int i=0;i<5;i++)
{
TRACE("%lf,%lf,%lf,%lf \r\n",type[0+i],type[1+i],type[2+i],type[3+i]);
}
结果却是下面这个东西
2.000000,7.000000,3.000000,3.000000
7.000000,3.000000,3.000000,3.000000
3.000000,3.000000,3.000000,9.000000
3.000000,3.000000,9.000000,8.000000
3.000000,9.000000,8.000000,12.000000
求大神指点
补充:在matlab里面traindata数据显示并没有问题,貌似是从matlab里取出数据到vc中出现问题。关于取出数据有没有其他的方法?
追问:
在matlab里面traindata数据显示并没有问题,貌似是从matlab里取出的数据有问题。关于取出数据有没有其他的方法?
你直接用指针操作就行了吧,
double* type=mxGetPr(res);
用完type后将其指向null即可。
我都是这样做的,没用过memcpy。
double* type=mxGetPr(res);
for( int i=0;i<5;i++)
{
TRACE("%lf,%lf,%lf,%lf \r\n",type[0+i],type[1+i],type[2+i],type[3+i]);
}
大神,我改了之后还是这个下面结果啊,数据取不出相当痛苦啊。还是说我TRACE有问题?
2.000000,7.000000,3.000000,3.000000
7.000000,3.000000,3.000000,3.000000
3.000000,3.000000,3.000000,9.000000
3.000000,3.000000,9.000000,8.000000
3.000000,9.000000,8.000000,12.000000
晕死啊,又仔细看了一遍你的程序,前面的都没问题,你小子最后输出的部分写错了,最不应该出错的地方,之前没好好看。
for( int i=0;i<5;i++)
{
TRACE("%lf,%lf,%lf,%lf \r\n",type[0+i*4],type[1+i*4],type[2+i*4],type[3+i*4]);
}
每个i要乘以4,不用解释吧?