C#调用MATLAB库文件

分类: 翰林堂 |
1、在Matlab里写一个带两个数组参数并输出两个数组值的函数([addRlt,minusRlt]=MatrixAddMin(a,b)),该函数调用两个函数分别为addRlt=Addfun(a,b),minusRlt=Minfun(a,b),其中一个在函数MatrixAddMin文件内,另一个为单独函数文件。
http://s2/bmiddle/001jcKoHzy7mYrsI2d331&690
http://s15/bmiddle/001jcKoHzy7mYruMnZs3e&690
2、将上面两个函数文件打包成C#的函数库。
选择MATLAB软件菜单中APP菜单,下拉找到应用程序部署 library compiler,点击并进行设置。由于针对C#进行部署,在TYPE格式里选中.NET Assembly,在EXPORTED FUNCTIONS中点击添加matlab编写的函数,将MatrixAddMin函数和Minfun函数选中打开进行添加。命名namespace为matlablib(自己给命名空间取名字);选择从以安装的程序中打包,会自生成一个安装包,移植到未安装Matlab软件的电脑上时,就需要安装生成的这个安装包。然后点击Package进行打包生成C#能调用的库文件。
http://s8/bmiddle/001jcKoHzy7mYrCI5aD47&690
http://s16/bmiddle/001jcKoHzy7mYrHabuv8f&690
3、C#中调用Matlab生成的库函数dll文件
3.1将matlab工程文件下的MatlabLib.dll库文件和matlab安装目录C:\ProgramFiles\MATLAB\R2017a\toolbox\dotnetbuilder\bin\win64\v4.0 下的MWArray.dll拷贝到VS工程下\bin\debug文件夹下(\CsharpCallMatllblib\bin\x64\Debug)。
http://s4/bmiddle/001jcKoHzy7mYrIDhfB33&690
VS新建工程时,解决方案配置选择Debug,解决方案平台需要编辑x64平台:
http://s9/bmiddle/001jcKoHzy7mYrJZTXqc8&690
3.2 在VS中添加引用
在VS解决方案中右击引用进行添加MatlabLib.dll 和MWArray.dll库文件。
http://s3/bmiddle/001jcKoHzy7mYrKUOyue2&690
http://s1/bmiddle/001jcKoHzy7mYrVLXMc50&690
3.3 将引用的库文件在.cs文件中添加命名空间
http://s9/bmiddle/001jcKoHzy7mYrXt0aAf8&690
3.4
先在C#中声明两个数组并初始化,声明两个输出接收的数组。
利用MWNumericArray类将C#中的二维数组转换成中间类型,
声明一个中间类型的数组用于接收输出,MWArray[] agrsout = new MWArray[2]; //声明输出参数是两个MWArray元素类型,一定要写输出的个数。
调用Matlablib.dll中的函数,test.MatrixAddMin(2, ref agrsout, agrsin);需要输入三个参数,第一个参数2表明为输出矩阵的个数,输出矩阵前必须加ref标识,第三个参数为输入。
将输出的中间类型转换为C#的数组,
MWNumericArray net_c =
agrsout[0] as MWNumericArray;
MWNumericArray net_d =
agrsout[1] as MWNumericArray;
http://s5/bmiddle/001jcKoHzy7mYrYJCba44&690