C#和MATLAB混合编程
C#语言的可视化性能较好,而MATLAB的计算能力强大,如果将两者结合则可以充分利用各自的优势。在这里,用一个例子给大家展示C#与MATLAB混合编程的实现步骤。
-
准备工作
-
安装Visual Studio,本文中所用版本为2010
-
安装MATLAB,本文中所用版本为2013
安装过程大家可以上网查阅,在这里就不再过多的赘述。
二、配置工作
在安装完所需要的软件之后,还要进行一些相应的配置:
1、查看MATLAB是否配置完全。
在MATLAB的Command Window窗口中输入mbuild –setup查看编辑器,如果没有,需要将编辑器设置为vs。
2、安装MCRinstaller.exe
这个文件的位置位于你的MATLAB安装目录下的toolbox\compiler\deploy\win32文件夹中,安装过程很简单,默认安装就行。
3、注册dll
接下来要对mwcomutil.dll文件进行注册。这个文件位于安装目录下的bin\win32文件夹中(这个文件夹内容比较多,要耐心找一下)。注册过程需要用到“命令提示符”,搜索cmd,并以管理员身份运行,首先要切换到mwcomutil.dll文件所在位置,然后通过regsvr32 mwcomutil.dll进行注册。
4、配置环境变量
依次打开计算机->属性->高级系统设置->高级->环境变量,在Path中查看是否存在MATLAB安装路径下的runtime\win32,若没有,则进行添加。添加方法是先输入一个分号;,然后输入这个地址。(此外,在配置过程中发现可能没有这步也能够正常运行)
-
MATLAB编程
在完成了所有的配置工作之后,就可以进行MATLAB编程了。
首先新建一个.m文件,在本文中创建了一个简单的Test1.m文件,用于测试,该文件没有入口参数,只有一个返回值。代码如下:
function Re=Test()
a=1;
b=2;
Re=a+b;
然后要生成.dll动态连接文件。
在MATLAB界面中,点击APP中的MATLAB Compiler(如下图)
接着会弹出如下界面,在Name中输入这个工程的名字,Location中输入工程存放的位置,在Type中选择.NET Assembly,然后点击OK。
然后在屏幕右侧会发生如下的变化,首先要添加一个类,点击Add classes。
输入类的名字,在这里要注意,这个类的名字最好与C#程序中的所有命名无关,否则可能会发生一些命名冲突。
输入过类名之后,要为这个类中添加文件。点击Add files,选择刚刚保存的Test1.m文件。
然后点击Build,构建.dll文件。
在刚才建立的工程文件夹路径中找到src文件夹,找到以工程命名的1.dll文件,将其复制到C#工程项目路径的\WindowsFormsApplication1\bin\Debug文件夹中,与此同时,还要将MWArry.dll文件也复制过去,这个文件的路径因该为MATLAB安装路径的\v81\toolbox\dotnetbuilder\bin\win32\v2.0中。
-
C#与MATLAB混合编程
在C#项目中右键点击引用,添加引用,并找到刚刚复制过去的两个.dll文件。
在引用命名空间的地方添加这两个文件,代码如下:
using MathWorks.MATLAB.NET.Arrays;
using Untitled1;//工程的名字
并在需要调用MATLAB文件的地方进行如下编程:1、利用已经构建的类实例化;2、新建一个MWArray类型的变量用于获取.m文件的返回值;3、将变量转化为string类型,代码如下:
test a=new test();//实例化
MWArray result1 = a.Test1();//构建MWArray类型变量
result1.ToString();
至此,C#与MATLAB混合编程就已经结束了。在这里,需要注意如下几个问题:
-
接口的返回值需要特别注意;
-
MATLAB中的函数如果太复杂可能会出错;
-
若需要figure作图,则需要单开一个Winform窗体来显示;