概述
#include
#include
#include "engine.h"
using namespace std;
void main()
{
Engine *ep; //定义Matlab引擎指针。
if (!(ep=engOpen(NULL))) //测试是否启动Matlab引擎成功。
{
cout <
exit(1);
}
//下面是将c++格式数据转换为matlab格式可用数据
double data[4]={1.0,2.0,3.0,4.0};
mxArray *Y=mxCreateDoubleMatrix(1,4,mxREAL);
memcpy(mxGetPr(Y),data,sizeof(data));
engPutVariable(ep,"Y",Y);
engEvalString(ep,"plot(Y,'o')"); //显示数据
mxDestroyArray(Y);
engEvalString(ep,"figure"); //开一个新的显示窗口
//
//下面是从matlab格式数据转换为c++格式可用数据
// mxArray *filename=NULL;
// const char *name="D:/Program Files/MATLAB/R2010b/bin/win32/lena.jpg";
// filename=mxCreateString(name);
// engPutVariable(ep,"filename",filename);
engEvalString(ep,"X=imread('G:/爱壁纸/1.jpg');"); //在engine中读取一张图片,这个需要自己修改图片的位置,否则程序出错
engEvalString(ep,"imshow(X)"); //显示图片
mxArray *X=engGetVariable(ep,"X"); //从engine获得真正的数组X
int ndims=mxGetNumberOfDimensions(X); //获得这个数组的维数
cout<
int *dims=new int[ndims];
memcpy(dims,mxGetDimensions(X),ndims*sizeof(int)); //获得数组每一维的大小
for (int i=0;i
{
cout<
}
cout<
/*
double *p=(double*)mxGetData(X); //指向数组X的指针以便能访问数组元素,图像数据量太大,这里就不显示了
for (int i=0;i
{
for (int j=0;j
{
cout<
}
cout<
}
*/
delete[] dims;
mxDestroyArray(X);
cout <
cin.get();
engClose(ep); //关闭Matlab引擎。
}
最后
以上就是成就缘分为你收集整理的c语言matlab混编max函数,Matlab与C++混编 – engin.h的全部内容,希望文章能够帮你解决c语言matlab混编max函数,Matlab与C++混编 – engin.h所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复