1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > c matlab 引擎调用 【MATLAB与C的混合编程】之【C程序调用Matlab计算引擎】(1)

c matlab 引擎调用 【MATLAB与C的混合编程】之【C程序调用Matlab计算引擎】(1)

时间:2018-12-31 03:40:10

相关推荐

c  matlab 引擎调用 【MATLAB与C的混合编程】之【C程序调用Matlab计算引擎】(1)

先贴本人调试通过的代码:

#pragma comment(lib, "libmx.lib")

//#pragma comment(lib, "libmat.lib")//注销了也没关系

#pragma comment(lib, "libeng.lib")

#include

#include "engine.h"

#include

using namespace std;

int main()

{

const int N = 50;

double x[N],y[N];

int j = 1;

for (int i=0; i

{

x[i] = (i+1);

y[i] = sin(x[i]) + j * log(x[i]); //产生-之间的随机数赋给xx[i];

j*= -1;

}

Engine *ep; //定义Matlab引擎指针。

if (!(ep=engOpen(NULL))) //测试是否启动Matlab引擎成功。

{

cout <

exit(1);//可以思考下

}

//定义mxArray,为1行,N列的实数数组。

mxArray *xx = mxCreateDoubleMatrix(1,N, mxREAL);

mxArray *yy = mxCreateDoubleMatrix(1,N, mxREAL); //同上。

memcpy(mxGetPr(xx), x, N*sizeof(double)); //将数组x复制到mxarray数组xx中。

memcpy(mxGetPr(yy), y, N*sizeof(double)); //将数组x复制到mxarray数组yy中。

engPutVariable(ep, "xx",xx); //将mxArray数组xx写入到Matlab工作空间,命名为xx。

engPutVariable(ep, "yy",yy); //将mxArray数组yy写入到Matlab工作空间,命名为yy。

//【特色】向Matlab引擎发送画图命令。plot为Matlab的画图函数,参见Matlab相关文档。

engEvalString(ep, "plot(xx, yy); ");

mxDestroyArray(xx); //销毁mxArray数组xx和yy。(注:Matlab工作空间中的xx、yy变量在这里没有销毁)

mxDestroyArray(yy);

cout <

cin.get();

engClose(ep); //关闭Matlab引擎。

}

------------------------------------------------------------------------------------------

结果贴图:

Matlab中内存变量:

xx =

Columns 1 through 22

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22

Columns 23 through 44

23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44

Columns 45 through 50

45 46 47 48 49 50

yy =

Columns 1 through 13

0.8415 0.2162 1.2397 -2.1431 0.6505 -2.0712 2.6029 -1.0901 2.6093 -2.8466 1.3979 -3.0215 2.9851

Columns 14 through 26

-1.6484 3.3583 -3.0605 1.8718 -3.6414 3.0943 -2.0828 3.8812 -3.0999 2.2893 -4.0836 3.0865 -2.4955

Columns 27 through 39

4.2522 -3.0613 2.7037 -4.3892 3.0299 -2.9143 4.4964 -2.9973 3.1272 -4.5753 2.9674 -3.3412 4.6274

Columns 40 through 50

-2.9438 3.5549 -4.6542 2.9294 -3.7665 4.6576 -2.9269 3.9737 -4.6395 2.9381 -4.1744

===========================================================================================

注意事项:

1)本程序只需要建立win32控制台空项目

2)调用的是Matlab计算引擎,故需要有Matlab环境

3)VS中需要在“包含文件”中加入D:\Program Files\MATLAB\Rb\extern\include(以后本人的Matlab与C混合编程例子中将不再给出此注意点)

4)VS中需要在“库文件”中加入D:\Program Files\MATLAB\Rb\extern\lib\win32\microsoft(以后本人的Matlab与C混合编程例子中将不再给出此注意点)

5)系统变量中加入三个路径:D:\Program Files\MATLAB\Rb\runtime\win32;D:\Program Files\MATLAB\Rb\bin\win32;D:\Program Files\MATLAB\Rb\extern\lib\win32\microsoft;注销后重进系统,以使路径生效

6)应该不会再有问题。【如果还有其他小问题(Main、Unicode等)网上找可以找到解决办法】

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。