欢迎来到天天文库
浏览记录
ID:11606476
大小:592.46 KB
页数:11页
时间:2018-07-12
《c#调用matlab函数(混合编程)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第2部分实战练习(自己做的)2.1c#调用matlab函数matlab版本2009b,c#版本vs2008.2.1.1matlab函数编译成dll文件(1)首先编写一个函数的m文件,如MatrixOpera表示两个矩阵相加和相减。%--------------------------------------------------------function[addRlt,minusRlt]=MatrixOpera(a,b)%矩阵相加,相减[m1,n1]=size(a);[m2,n2]=size(b);ifm1~=m2
2、
3、
4、n1~=n2display('矩阵大小不相同')error('参数错误');endaddRlt=a+b;minusRlt=a-b;end%-----------------------------------------------------------两个输入参数,两个输出参数,并且都是矩阵形式(2)在matlab命令窗口输入deploytool,弹出如下窗口或者点击matlab的主菜单desktop→deploytool获得如下面图所示的窗口,然后在file→new→deploymentproject中点击。获得上图
5、窗口,修改工程名称和文件后缀名(必须是,.NetAssembly格式)修改(3)新建了一个叫matPrj的工程(它相当于c#中的命名空间namespace);然后给它增加class或类(它就是c#中的类),点[addclass]比如myMathClass;之后再给它添加方法(它就是函数了),点[addfiles],如下图所示。本实例中给它添加了MatrixOpera等函数。方法class(4)完了之后就可以编译了。编译出来后需要一两分钟的时间。编译(5)找到该工程存放的文件夹,从里面拷出matPrj.dll文件。同时还要从
6、G:ProgramFilesMATLABR2009btoolboxdotnetbuilderbinwin32v2.0拷贝出MWArray.dll和ManagedCPPAPI.netmodule。第二个文件必须要哦,否则可能会出错。2.1.2c#添加matlab的dll引用(1)打开vs2008,新建一个窗体应用程序。(2)将刚才拷贝到的那3个文件一起放在vs工程(CallMatlabDllApp)的debug文件夹下面。然后右键下图中的引用,选择添加引用,弹出一个窗口,选择其中的浏览页面,分别添加matPr
7、j.dll文件和MWArray.dll文件。已经添加了的引用右键,点添加引用(3)最后在前面,代码的前面添加下面的命名空间即可。usingMathWorks.MATLAB.NET.Arrays;//在MWArray.dll,最常用的usingMathWorks.MATLAB.NET.Utility;//在MWArray.dll,最常用的usingmatPrj;//这个就是我们自己定义的,里面有matlab函数如果matlab函数复杂,还需要用到其他的空间,则视情况而定,自己凭经验添加。已经添加了的引用至此,已经可以利用c#
8、调用我们用matlab编写的函数了。2.1.3函数调用函数调用前必须注意:(1)将c#的参数输入到matlab函数时,要将参数转化为matlab的参数形式,通常是MWArray类型。(2)matlab返回的参数,也要转化为c#用的类型,比如数组或者数值类型。下面是关于(1)和(2)的介绍,从别人那拷过来的,具体可参考http://apps.hi.baidu.com/share/detail/294982直接将值传递给已经初始化的MWArray数组中的成员直接将数据类型赋值给已经初始化的MWNumericArray变量。直接
9、将字符串类赋值给已经初始化的MWCharArray变量。如果是数组类型:直接赋值给MWNumericArray变量;赋值给MWArray变量,则在前面加上类型转换如:(MWNumericArray)进行强制转换。总之,MWArray是总类型,其它的以MW开头,以Array结尾的变量类型都可以直接对它进行赋值或取值。M类型到C++/C#数据类型MWArrayM类型,它是M文件的编译后内部的标准类型,一切C++/C#类型都要最终转换成此类型,方可作为参数调用M语言函数。MWCharArrayM的字符串类型,使用它可以将M中的字
10、符类型转换成C++/C#的字符串类型。MWNumericArrayMWNumericArray是MWArray与C#等语言的转换中间类型。常用的转换函数:① publicArrayToArray(MWArrayComponentcomponent);将M类型转换成C#的Array类型,然后可以直接转换成
此文档下载收益归作者所有