300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > matlab 如何被c 调用函数调用函数调用 c 调用 matlab engine 自定义函数

matlab 如何被c 调用函数调用函数调用 c 调用 matlab engine 自定义函数

时间:2020-12-09 18:39:26

相关推荐

matlab 如何被c 调用函数调用函数调用 c 调用 matlab engine 自定义函数

设置:

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

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

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

2. Property

Configuration Properties/Linker

General: Additional Library Directories: "C:/Program Files/MATLAB/Ra/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;

"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;

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