从C#调用MATLAB函数
我开发了一个MATLAB函数,我正在寻找一种方法从另一个C#应用程序调用该函数并将一些参数传递给它并在C#程序中获得结果。
我听说我可以使用动态数据交换 (DDE)或COM对象,但我能做到吗?
MATLAB Central中有很好的例子。
它显示了如何与MATLAB进行通信的三种方法:
- COM
- MATLAB .NET Bulider
- MATLAB编译器
COM (我没有任何经验)
缺点:需要在目标计算机上安装MATLAB。
MATLAB .NET构建器将您的MATLAB代码编译为.NET程序集,您可以直接使用它。
优点:不需要在目标计算机上安装MATLAB
缺点:它很贵
MATLAB编译器将您的MATLAB代码编译为C / C ++库或EXE文件。 您可以通过P / Invoke使用它。
优点:不需要在目标计算机上安装MATLAB
缺点:它很昂贵,很多P / Invoke。
还有第三种选择: 代表 。 启动MATLAB – >加载.NET程序集 – >使用委托句柄执行.NET函数到MATLAB函数。
在这个网站上有一个很好的例子来设置一切。 您可以使用MATLAB .NET部署工具。
你需要
- 安装MCR(Matlab编译器运行时)。
- 使用Matlab Deploy Tool将Matlab函数部署到.NET程序集。 这将创建一个.dll文件。
- 在.NET项目中添加.dll引用。
- 添加对MATLAB.NET的引用。
这种方法的优点是目标机器不需要安装MATLAB,但在不利方面,执行非常昂贵。