硬件和射频工程师

 找回密码
 立即注册
查看: 326|回复: 3

请作fdtd的大侠来帮帮忙

[复制链接]
发表于 2014-12-4 09:39:07 | 显示全部楼层 |阅读模式
易迪拓培训微波射频和天线设计培训
这是二维的fdtd程序中的一部分,pml边界,点源加在区域中间,将数据数出来,是j=Ny/2时的ez值:
ofstream outfile("ez.dat"); //定义文件流对象,打开磁盘文件“ez.dat"
  if(!outfile)
    {
            cerr<<"open erroe!"<<endl;
    exit(1);
        }
        for (i = 0; i < Nx; i++)
            {  
      outfile <<ez[i][Ny/2]<<ends;
            }
    outfile.close();
然后,用matlab画图,图像是正确的,但是用调用matlab引擎,直接画图,居然不一样,程序见下,图也想贴上来,但是图片怎么贴呢?
  
for (i = 0; i < Nx; i++)
            {  
            hh[i][1] = ez[i][Ny/2];
            }
     
  /*/调用matlab*/
  Engine *ep;
      mxArray *E = NULL;
        //char buffer[300];//定义缓冲区
      /*打开Matlab引擎,建立与本地Matlab的连接*/
    if(! (ep = engOpen(NULL)))
        {
            MessageBox ((HWND)NULL, (LPSTR)"can not strart matlabv engine",
                (LPSTR) "Engwindemo.c", MB_OK);
        exit(-1);
        }  
  /*利用mx函数库创建矩阵,传递参数。*/
  E=mxCreateDoubleMatrix(Nx,1,mxREAL);
        //mxSetClassName(E,"E");//把E所指的结构体起名为E
  memcpy((char*)mxGetPr(E),(char*)hh,Nx*sizeof(float));
  /*通过上面创建的Matlab Engine连接句柄将参数传递给Server端*/
  engPutVariable(ep,"E",E);
  //engOutputBuffer(ep,buffer,300);
  /*调用Matlab内建的函数和指令*/
  engEvalString(ep,"plot(E);");
        mxDestroyArray(E);
回复

使用道具 举报

发表于 2014-12-4 10:50:00 | 显示全部楼层
易迪拓培训微波射频和天线设计培训
:hi  
^_^,楼主也不嫌麻烦,这样做效率很低。
MATLAB绘图m文件中包含有WAIT语句没有