用C#调用MATLAB函数

15
我开发了一个MATLAB函数,现在想要从另一个C#应用程序中调用该函数,并传递一些参数并在C#程序中获取结果。我听说可以使用动态数据交换(DDE)或COM对象,但是该如何实现呢?

1
你有没有尝试阅读C#文档中关于PInvoke属性的内容?它会让你了解如何从.NET世界调用COM对象。 - kanchirk
你可以将Matlab函数句柄传递给C#委托。请参考我的类似帖子:http://stackoverflow.com/questions/31408624/passing-matlab-methods-as-delegates-to-net-object - CodyF
3个回答

23

MATLAB中心有一个很好的例子。

它展示了与MATLAB交互的三种方式:

  1. COM
  2. MATLAB .NET Bulider
  3. MATLAB编译器

COM(我没有任何经验)

缺点:需要在目标计算机上安装MATLAB。

MATLAB .NET builder将您的MATLAB代码编译为.NET程序集,您可以直接使用它。

优点:无需在目标计算机上安装MATLAB。

缺点:价格昂贵。

MATLAB compiler将您的MATLAB代码编译为C/C++库或EXE文件。 您可以通过P/Invoke进行使用。

优点:无需在目标计算机上安装MATLAB。

缺点:价格昂贵,需要大量使用P/Invoke。


1
你应该指出,对于第二和第三个选项,生成的二进制文件需要在目标机器上安装MCR(MCR是免费提供的)。 - Amro
2
链接已失效 :-( - Wassim AZIRAR
“MATLAB .NET builder” 相对于什么而言是昂贵的? - Gray Programmerz

6

还有第三种选择:委托。启动MATLAB -> 加载.NET程序集 -> 使用委托句柄执行MATLAB函数的.NET函数。


2

这个网站有一个很好的例子,介绍了如何设置 ,您可以使用MATLAB .NET部署工具。

您需要:

  • 安装MCR(Matlab Compiler Runtime)。
  • 使用Matlab Deploy工具将您的Matlab函数部署到.NET程序集中。这将创建一个.dll文件。
  • 在您的.NET项目中添加.dll引用。
  • 添加对MATLAB.NET的引用。

这种方法的优点是目标机器不需要安装MATLAB,但缺点是执行非常昂贵。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接