第2部分实战练习(自己做的)
21c调用matlab函数
matlab版本2009b,c版本vs2008211matlab函数编译成dll文件
(1)首先编写一个函数的m文件,如MatrixOpera表示两个矩阵相加和相减。
fu
ctio
addRltmi
usRltMatrixOperaab矩阵相加相减m1
1sizeam2
2sizebifm1m2
1
2
display矩阵大小不相同error参数错误e
daddRltabmi
usRltabe
d两个输入参数,两个输出参数,并且都是矩阵形式(2)在matlab命令窗口输入deploytool,弹出如下窗口
或者点击matlab的主菜单desktop→deploytool获得如下面图所示的窗口,然后在file→
ew→deployme
tproject中点击。获得上图窗口,修改工程名称和文件后缀名(必须是,NetAssembly格式)
f修改
f(3)新建了一个叫matPrj的工程(它相当于c中的命名空间
amespace);然后给它增加class或类(它就是c中的类),点addclass比如myMathClass;之后再给它添加方法(它就是函数了),点addfiles,如下图所示。本实例中给它添加了MatrixOpera等函数。
class方法
(4)完了之后就可以编译了。编译出来后需要一两分钟的时间。编译
(5)找到该工程存放的文件夹,从里面拷出matPrjdll文件。同时还要从GProgramFilesMATLABR2009btoolboxdot
etbuilderbi
wi
32v20拷贝出MWArraydll和Ma
agedCPPAPI
etmodule。第二个文件必须要哦,否则可能会出错。
f212c添加matlab的dll引用(1)打开vs2008,新建一个窗体应用程序。
f(2)将刚才拷贝到的那3个文件一起放在vs工程(CallMatlabDllApp)的debug文件夹下面。然后右键下图中的引用,选择添加引用,弹出一个窗口,选择其中的浏览页面,分别添加matPrjdll文件和MWArraydll文件。
右键,点添加引用
已经添加了的引用
f(3)最后在前面,代码的前面添加下面的命名空间即可。
usi
gMathWorksMATLABNETArrays在MWArraydll,最常用的usi
gMathWorksMATLABNETUtility在MWArraydll,最常用的usi
gmatPrj这个就是我们自己定义的,里面有matlab函数
如果matlab函数复杂,还需要用到其他的空间,则视情况而定,自己凭经验添加。
已经添加了的引用
至此,已经可以利用c调用我们用matlab编写的函数了。213函数调用
函数调用前必须注意:(1)将c的参数输入到matlab函数时,要将参数转化为matlab的参数形式,通常是MWArray类型。(2)matlab返回的参数,也要转化为c用的类型,比如数组或者数值类型。
下面是关于(1)和(2)的介绍,从别人那拷过来的,具体可参考httpappshibaiducomsharedetailr