12

我开发了一个 MATLAB 函数,我正在寻找一种从另一个 C# 应用程序调用该函数并将一些参数传递给它并在 C# 程序中获取结果的方法。

我听说我可以使用动态数据交换(DDE) 或 COM 对象,但我能做到吗?

4

3 回答 3

21

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

它显示了如何与MATLAB通信的三种方式:

  1. 通讯
  2. MATLAB .NET 构建器
  3. MATLAB 编译器

COM(我没有任何经验)

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

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

优点:不需要在目标计算机上安装 MATLAB

缺点:很贵

MATLAB 编译器将您的 MATLAB 代码编译成 C/C++ 库或 EXE 文件。您可以通过P/Invoke使用它。

优点:不需要在目标计算机上安装 MATLAB

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

于 2011-05-05T21:14:17.257 回答
5

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

于 2011-05-05T21:17:24.440 回答
2

这个网站上有一个很好的例子来设置一切。您可以使用 MATLAB .NET 部署工具。

你需要

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

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

于 2015-08-29T17:00:59.703 回答