当前位置:编程学习 > Matlab >>

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,不用解释吧?
答案:我好想在哪见过说mxArray的赋值不要用,matlab库里面都提供相应函数的,你用下面的语句试试
第一句换成:mxArray * traindata;
memcpy句换成:mlfAssign(&traindata, mlfDoubleMatrix(5,4,data1,NULL));
我都是用matlab6.5跟vc6.0的,因为你没说清楚matlab版本,不知道上面的行不行,你查下网上应该有对应版本该用哪个函数

上一个:可以仅仅用modelsim进行verilog编程仿真出正弦波吗?查了很多资料,好像有用quarturs或者matlab联合使用的
下一个:matlab编程请教,请大家看看我的问题

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,