VS2013调用MATLAB 2014计算引擎

1)  给计算机添加系统变量Path: C:\ProgramFiles\MATLAB\R2014b\bin\win64,添加完成之后重新启动计算机。(一定要重新启动很重要)

2)  新建一个C++工程,添加X64属性(很重要,应为MATLAB是64位的)

3)  属性管理器 -> 右键 -> 属性 ->配置属性 ->VC++目录 ->包含目录

添加:C:\ProgramFiles\MATLAB\R2014b\extern\include

库目录添加:C:\Program Files\MATLAB\R2014b\extern\lib\win64

                    C:\ProgramFiles\MATLAB\R2014b\extern\lib\win64\microsoft

连接器->输入:添加:libmx.lib、libmex.lib、libeng.lib 

4)  特别注意:在MATLAB中调用出来的命令窗口中不知显示任何信息,例如:engEvalString(ep,"randn;"),只会在后台运行,不会将结果在命令窗口中显示。 

MATLAB语法一定要符合规范,特别注意C语言中语句出现空格可以不影响语句的执行,MATLAB语句中不能够出现空格,必须要规范。 

另外注意MATLAB中运行的所有数据全部都是矩阵。 

5)  测试程序如下:

例0:小试牛刀,在C++中调用MATLAB绘图


例1:使用engPutVariable函数向MATLAB引擎发送数据


例2:使用engGetVariable函数从MATLAB引擎中获取数据:

特别注意:获取数据的指针按照每一列读取(不是按照行进行读取的)


例3:向MATLAB引擎传入数据,然后从MATLAB引擎中获取3数据的计算结果:

特别注意:传入的数据在MATLAB数据矩阵中都是按照列的方式排列的(读取数据也是按照列的方式,而不是按照行)


重点下列代码: 

double t[]={1,2,3,4,5,6,7,8,9,10};  //定义一个一维数组

mxArray *T=mxCreateDoubleMatrix ( 2, 5,mxREAL);  //创建一个25列的矩阵

memcpy ( (void*) mxGetPr ( T ) ,( void *)t ,sizeof( t ));  //给矩阵赋值 

然而,在矩阵中,结果是这样的:T矩阵

1

3

5

7

9

2

4

6

8

10

按照列进行赋值。 

同样,下面的代码: 

engEvalString (ep ,”D=T.*^2;”);  //执行MATLAB指令

MxArray *Result =engGetVariable( ep ,”D”);   //从引擎获取矩阵

double *p =mxGetPr ( Result); //P指针指向矩阵的第一个元素 

P指针的指向顺序为:

1  p

9  p+2

25  p+4

49  p+6

81  p+8

4  p+1

16  p+3

36  p+5

64  p+7

100  p+9

若想输出t[5]的计算结果,则为以下代码:

cout << *(p+5)<<endl;


  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值