利用C#和Matlab混合编程
-
为什么要进行混合编程
利用双方的优势,便捷地构建用户交互界面+科学计算上强大的性能
实际中是需要将一些科学算法转化到应用软件的项目中去
-
过程 (C#调用Matlab)
-
将M文件转换为c#可调用的 dll文件 (如何生成)
-
在C#中引用 dll 文件 (如何引用)
添加所需的引用 dll
命名空间的的引用
-
编程中c#数据类型的转换(两者之间的函数变量的传递时如何实现的)
C#的参数带入到Matlab函数的的参数中去,将C#的参数类型转换为MWArray类型
如何将Matlab函数返回的类型,转换成C#对应的函数类型
-
-
注意事项
需要额外添加的dll MWArray.dll (在安装目录的toolbox\dotnetbuilder\bin\win64\v2.0文件夹中)
-
脱离Matlab安装的环境下,如何使得程序运行自如
-
安装Matlab提供的 Matlab Compiler Runtime
(目录X:\MATLAB\R201Xx\toolbox\compiler\deploy\win32 \MCRInstaller.exe)
不同Matlab提供的MATLAB Compiler Runtime可能会不同,如果其他电脑上运行自己编写的软件有问题,可能是编译器的版本所导致的
-
-
实例
C#调用Matlab画图
实验环境 : Matlab 2017 Visual Studio 2017
-
M文件
function [s]=myplus(n) s = 0; for i = 1:n s = s + i; end end
-
打包为dll
-
进入library complier
选择目标类型及打包函数,以及是否需要将runtime打包到package中去
-
填写打包函数调用的相关信息如class name 及 method name
-
进行打包,生成dll文件(for_redistribution_files_only里面包含的文件,即为打包好的函数库dll文件)
-
-
C#中调用
-
添加dll (打包的 及 MWArray)
-
添加命名空间
using MathWorks.MATLAB.NET.Arrays; using MathWorks.MATLAB.NET.Utility; using myplus;
编程运行
-
private void button1_Click(object sender, EventArgs e) { { MWArray a = 5; MWArray b; plus pa= new plus(); b = pa.myplus(a); textBox1.Text =b.ToString (); } }
-