{        Engine * ep;           //定义一个引擎指针
if(!(ep=engOpen(NULL)))       //打开本机上的Matlab引擎
{
    return;
}

         CString filename="C:\\Data.dat";
         m_Filedata.Open(filename,CFile::modeRead);
m_Filedata.Seek(0,CFile::begin);
m_Filedata.Read(WaveBuffer,2048*2);   //Read是字节型,WaveBuffer接受文件的缓冲区
m_Filedata.Close();                   //Data中取出的2048个字已经传给WaveBuffer
mxArray * filedata=NULL;
filedata=mxCreateDoubleMatrix(1,2048,mxREAL);
         memcpy((float* )mxGetPr(filedata),(float* )WaveBuffer,2*sizeof(WaveBuffer));
engPutVariable(ep,"filedata",filedata);
engEvalString(ep,"N=1:1:2048;");
engEvalString(ep,"plot(N,filedata,'k');");
engEvalString(ep,"axis([0,2000,-5000,5000]);");
engEvalString(ep,"xlabel('时间 t/us');");
engEvalString(ep,"ylabel('幅值 A/mv');");
engEvalString(ep,"title('(示波器图像显示在PC上)->调整图像');");
engEvalString(ep,"grid on;");
mxDestroyArray(filedata);
engClose(ep);               //关闭Matlab引擎
}
代码如上:将Data.dat数据用Matlab处理。读文件数据应该没有问题,怀疑是memcpy没有把数据传给数组,结果Matlab工作区中的数据与实际Data数据不一致。