MATLAB与C#之间的双向通信

时间:2014-10-14 07:45:38

标签: c# matlab

我有第三方MATLAB工具箱,它对数据集执行一些计算。我正在用C#设计一个基于Windows窗体的应用程序,以便将它与MATLAB Toolbox集成。以下是主要要求 -

  1. Windows Form即C#应用程序可以从MATLAB
  2. 调用
  3. 如果uses在Windows窗体中执行任何操作,Form应该能够调用该方法并将参数传递给MATLAB Toolbox。 Form也应该能够获得MATLAB返回的数据。
  4. 此外,如果用户在MATLAB中修改数据/参数,则应反映在Windows窗体中。
  5. 从Google搜索中,我通过使用COM方法从MATLAB调用C#应用程序获得了大量结果。我正在寻找MATLAB和C#之间的双向通信。请注意,沟通应尽可能快。

1 个答案:

答案 0 :(得分:1)

我试图做一些与此相关的事情,你可以看到我在this question找到的解决方案。最终,如果您计划在两个程序之间进行任何有意义的交互,那么您将不得不使用COM。我已经研究了UIAutomation,但不幸的是Matlab暴露了你无法使用的任何内容。

单独解决您的问题:

  1. 使用shell转义来调用你的C#应用​​程序应该非常简单。您的应用应支持命令行参数,或使用某种互操作将任何内容传递给您应用的正在运行的实例(参见3)。
  2. 这也是可行的。请参阅链接的问题,了解如何与C#中正在运行的Matlab实例互操作。
  3. 这将是困难的部分。您必须在应用程序中编写自己的COM服务器,并在Matlab中创建COM客户端以与您的应用程序互操作。这不会是自动的,因为您的用户必须键入某种命令才能从Matlab启动互操作。我能想到让这种方法自动化的唯一方法就是让你的应用程序在固定的时间间隔内使用COM轮询Matlab的工作空间,并弄清楚是否有任何改变(既不简单也不高效)。
  4. 结论?这通常是太多的工作需要打扰,而你只是编写一个Matlab GUI会好得多。如果您需要.NET框架中的任何功能,您只需使用Matlab's .NET interface