C#和MATLAB混合编程



C#MATLAB混合编程

C#语言的可视化性能较好,而MATLAB的计算能力强大,如果将两者结合则可以充分利用各自的优势。在这里,用一个例子给大家展示C#MATLAB混合编程的实现步骤。

  1. 准备工作

  1. 安装Visual Studio,本文中所用版本为2010

  2. 安装MATLAB,本文中所用版本为2013

安装过程大家可以上网查阅,在这里就不再过多的赘述。

二、配置工作

在安装完所需要的软件之后,还要进行一些相应的配置:

1、查看MATLAB是否配置完全。

MATLABCommand 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,若没有,则进行添加。添加方法是先输入一个分号;,然后输入这个地址。(此外,在配置过程中发现可能没有这步也能够正常运行)

  1. 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中。

  1. 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混合编程就已经结束了。在这里,需要注意如下几个问题:

  1. 接口的返回值需要特别注意;

  2. MATLAB中的函数如果太复杂可能会出错;

  3. 若需要figure作图,则需要单开一个Winform窗体来显示;

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值