⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test.cpp

📁 matlab source code very useful to science study
💻 CPP
字号:

#include "iostream.h"
#include "engine.h"
#include "string.h"
void main()
{ int i,j;
  //定义matlab引擎指针及变量
  Engine *ep;
  mxArray *T,*F;
 //定义矩阵数组
  double data[3][3]={{11.2,20.5,12.3},{10.8,10.79,10.88},{12.16,9.8,11.5}};
  double fdata[3][3];
  cout<<"原矩阵为:"<<endl;
for( i=0;i<3;i++)
{ for( j=0;j<3;j++)
	 { cout<<data[i][j]<<" ";}
     cout<<endl;
} 
  //产生引擎变量
  ep=engOpen(NULL);
  if(ep==NULL)
  {cout<<"can't open matlab engine";
     exit(EXIT_FAILURE);
  }
  T=mxCreateDoubleMatrix(3,3,mxREAL);
  F=mxCreateDoubleMatrix(3,3,mxREAL);
  if(T==NULL||F==NULL)
  {
    cout<<"can't create mxArray"<<endl;
     exit(EXIT_FAILURE);  
  }

  memcpy((void*)mxGetPr(T),(void*)data,sizeof(data));

 int status=engPutVariable(ep,"T1",T);
//status=engPutVariable(ep,"F",F);
 if(status!=0)
 {
   cout<<"Error using matPutVariable"<<endl;
   
   exit(EXIT_FAILURE);
 }
 //engPutArray(ep,T);
 //engEvalString(ep,"F=[1,3,5,2];");
status= engEvalString(ep,"C=inv(T1)");
if(status!=0)
 {
   cout<<"Error excute matlab  command! "<<endl;
   
   exit(EXIT_FAILURE);
 }
//engEvalString(ep,"T=2+3");
 //engEvalString(ep,"D=0:1023");
 //engEvalString(ep,"plot(D,F)");

 F=engGetVariable(ep,"C");//从matlab ep空间中读入maArray类型的数组
/*double *p=mxGetPr(F);
 if(p==NULL)
 {cout<<"can't get result!"<<endl;
 exit(EXIT_FAILURE);}
memcpy((void*)fdata,(void*)p,sizeof(fdata));
*/
memcpy((void*)fdata,(void*)mxGetPr(F),sizeof(fdata));
 

//*****************************
// int const *p=mxGetDimensions(T);
//cout<<p[0]<<"   "<<p[1];
 //****************************
 mxDestroyArray(T);
 mxDestroyArray(F);
 engClose(ep);
 cout<<"逆矩阵为:"<<endl;
for( i=0;i<3;i++)
{ for( j=0;j<3;j++)
	 { cout<<fdata[i][j]<<" ";}
     cout<<endl;
} // engPutArray(ep,T);
  //mxSetName();//(T,"T");
 // matPutVariable(T,"T");

  
}
/*

	Engine *ep;
  mxArray *T;
  eg=engOpen("\0");
  //创建数组存放数据
 //T=mxCreateDoubleMatrix(1,1024,mxREAL);
  mxSetName(T,"T");
     memcpy((void*)mxGetPr(T),(void*)pSampleData,sizeof(pSampleData));
  //将T写入Matlab工作区,进行FFT变换
  engPutArray(ep,T);
  engEvalString(ep,"F=abs(fft(T)/512);");
  //绘图图形
  engEvalString(ep,"D=0:1023");
  engEvalString(ep,"plot(D,F);");
  mxDestroyArray(T);
  engEvalString(ep,"close;")'
}*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -