小弟最近初涉C++与Matlab混合编程,遇到难题。烦请各位高手指点,不吝赐教,感恩不尽。现已能够将标准图rice.png的信息取至mxArray。但是,将mxArray的数据如何放入C++可以直接操作的double型数组却遇到了巨大问题,难以解决。现在不知道是不是思路是错的。代码如下:#include "iostream.h"
#include "string.h"
#include "stdio.h"
#include "math.h"
#include "time.h"#include "engine.h"
#include "matrix.h"void main(void)
{
Engine * ep=NULL;
if(!(ep=engOpen(NULL)))
exit(1);
engEvalString(ep,"Matlab_Image=imread('rice.png')");
engEvalString(ep,"imshow(Matlab_Image);");
char * Matlab_Image_String="Matlab_Image";
mxArray * mx_Image=engGetVariable(ep,Matlab_Image_String);//将数据从Matlab空间中取出
int Row=mxGetM(mx_Image),Column=mxGetN(mx_Image),DimensionNumber=mxGetNumberOfDimensions(mx_Image);
cout<<"Row = "<<Row<<"\t\t"<<"Column = "<<Column<<"\t\t"<<"DimensionNumber = "<<DimensionNumber<<endl;

double ** Cpp_Image=NULL;
Cpp_Image=new double * [Row];
for(int i=0;i<Row;i++)
Cpp_Image[i]=new double [Column];//---------------------------------------------------------------------------------------------------------
memcpy((void *)Cpp_Image[0],(void *)mxGetPr(mx_Image),sizeof(Cpp_Image));     //这一句无法实现意图
//---------------------------------------------------------------------------------------------------------
for(i=0;i<Row;i++)
{
for(int j=0;j<Column;j++)
cout<<Cpp_Image[i][j]<<" ";
cout<<endl;
}
for(i=0;i<Row;i++)
{
delete [] Cpp_Image[i];
Cpp_Image[i]=NULL;
}
delete [] Cpp_Image;
Cpp_Image[i]=NULL; mxDestroyArray(mx_Image);//释放数组内存
getchar(); engClose(ep); //关闭Matlab引擎。
}