CSharp与Matlab混合编程
C# 与 MAtlab 混合编程
本文最初2014年发表在新浪博客,由于博客关闭计划将其搬移到本网站。
本文说明如何使用matlab和.net进行混合编程。包括:
- 1、使用Matlab2010b&VS2010,vb.net编程(下文A部分)
- 2、使用 Matlab 2017b & VS Community2017,C#混合编程。注意c#程序使用.net4.0编译(下文B部分)
- 3、在.net(C#,vb)中如何处理m文件返回的多个结果
- 4、MWArray结果的下标注意事项
A 部分
版本:Matlab2010b&VS2010
Matlab中需要以m文件Function形式,要有输出
- 1、在Matlab中输入
deploytool
将编写好的函数文件拖入下图中的位置即可,编译的时候选择 .NET DLL
- 2、编译后,在VS中引用
引用MWArray.dll
(在Matlab安装路径)
- 3、引用Matlab生成的dll文件
- 4、用记事本打开Class_VB.cs
在第一步时,你Class名称。在Matlab生成的文件路径下
- 5、引用
上面两幅图,第一幅是Class_VB.cs文件内容,第二幅是在VB.NET 中的引用。
- 6、CPU选择(如果都是x86,可忽略;我Matlab/VS版本为64位的)
- 7、编写代码运行
OK,基本功能实现!
B 部分
版本:Matlab 2017b & VS Community2017
- 1、需要安装 MATLAB Compiler和MATLAB Compiler SDK
- 2、输入deploytool
选Library Compiler
- 3、选.Net Assembly,选Runtime included in package会将matlab的runtime打包。这样我们就可以在其它电脑上运行这个程序了。见下图
- 4、点击 Save,见上图
- 5、点击Package,见上图
- 6、新建C#或VB.Net工程,注意.Net版本要用4.0版。需要引用MWArray.dll,以及上面生成的TcFigData.dll
- 7、编译。Debug的时候选AnyCPU。打包后会自动生成一个cs文件,就是你打包时填写的Class Name对应的cs文件。我这里是tcFig.cs,里面包含函数调用的方法。
C#代码示例:
上图包含m文件的函数结构,以及m文件多个结果返回的处理方法。
输出结果:
其中9331是301*31的cell。
- 8、安装。在其它电脑上先安装matlab runtime,在for_redistribution文件夹里(前提是你打包的时候选了Runtime included in package)
9、运行你编写的.net程序