c 调用 matlab engine 自定义函数

设置:

1. Tools/Projects and Solutions/VC ++ Directories

    Inlcude files: C:/Program Files/MATLAB/R2009a/extern/include

    Library files: C:/Program Files/MATLAB/R2009a/extern/lib

2. Property

    Configuration Properties/Linker

    General: Additional Library Directories: "C:/Program Files/MATLAB/R2009a/extern/lib/win32/microsoft"

    Input: Additional Dependencies: libmx.lib libmat.lib libeng.lib

 

 

   

#include

"stdafx.h"

#include

#include

#include

#include

 

fun_XY.m file

 

function Z = fun_XY(X,Y)

Z = X*Y;

 

<stdio.h>
<stdlib.h>
<conio.h> "engine.h"

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

int

 

 

main( int argc, char

**argv)

{

 

 

double

X[3][2] = {{1,4},{2,5},{3,6}};

 

 

double

Y[2][2] = {{1,2},{3,4}};

 

 

int

succeedNotFlag = 1;

Engine *ep;

 

 

if

(!(ep = engOpen(NULL)))

{

exit(1);

}

engSetVisible(ep,1);

mxArray *xx = mxCreateDoubleMatrix(3,2,mxREAL);

mxArray *yy = mxCreateDoubleMatrix(2,2,mxREAL);

memcpy(mxGetPr(xx),X,6*

 

sizeof ( double

));

memcpy(mxGetPr(yy),Y,4*

 

sizeof ( double

));

engPutVariable(ep,

 

"X"

,xx);

engPutVariable(ep,

 

"Y"

,yy);

 

 

int

rows = mxGetM(xx);

 

 

int

cols = mxGetN(xx);

 

 

succeedNotFlag = engEvalString(ep,"cd D://progX//CM//mt");

 

 

//succeedNotFlag = engEvalString(ep,"path(path,'D:/progX/CM/mt')"); //will not go to the right routine.

succeedNotFlag = engEvalString(ep,

 

"path(path,'D://progX//CM//mt')" );

will go to the right routine.

succeedNotFlag = engEvalString(ep,

 

"Z = fun_XY_lan(X,Y);"

);

mxArray *z_ptr = NULL;

z_ptr = engGetVariable(ep,

 

"Z"

);

 

 

double *z_c = new double

[6];

z_c = (

 

double

*) mxGetData(z_ptr);

mxDestroyArray(xx);

mxDestroyArray(yy);

 

 

delete

[]z_c;

engClose(ep);

 

 

return

0;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值