【问题标题】:Interoperating between Matlab and C#Matlab和C#之间的互操作
【发布时间】:2023-03-02 23:10:02
【问题描述】:

在网上浏览了一下,C# 和 Matlab 之间似乎可以互操作。我想知道是否有人在这方面取得了成功,以及他们为此做了什么。如果可能的话,在不使用 COM 的情况下以某种方式将其拉下来。感谢您的宝贵时间。

【问题讨论】:

    标签: c# .net matlab interop matlab-deployment


    【解决方案1】:

    是的,很有可能。虽然我最终使用了 C 接口并使用混合模式 DLL 调用它(并让 C# 调用它......但那是因为我还与其他一些 C 代码交互)。这很简单。在要运行程序的计算机上,您需要安装 Matlab Runtime MCRInstaller.exe。

    编辑:删除断开的链接

    【讨论】:

      【解决方案2】:

      如果你愿意花钱,这可能就是你需要的:

      http://www.mathworks.com/products/netbuilder/

      它可以为 Matlab 代码生成包装器,允许从 .NET 和 COM 调用它。

      【讨论】:

      • 看起来可行,但我是一个小气小气的学生。
      • 但要小心。没有一个称职的说唱歌手愿意在歌曲中间被这样或那样称呼。
      【解决方案3】:

      从 MATLAB 的 R2009a 版本开始,可以从 MATLAB 访问 .NET 对象:

      http://www.mathworks.com/help/techdoc/matlab_external/brpb5k6.html

      在旧版本的 MATLAB 中,可以使用 CCW 从 MATLAB 访问 .NET 对象:

      http://www.mathworks.com/support/solutions/data/1-5U8HND.html?solution=1-5U8HND

      以及来自 .NET 的 MATLAB 引擎:

      http://www.mathworks.com/access/helpdesk/help/techdoc/index.html?/access/helpdesk/help/techdoc/matlab_external/f135590.html#f135616

      您还可以使用 MATLAB Builder NE 将 m 代码包装到 .NET 程序集中。

      http://www.mathworks.com/products/netbuilder/

      【讨论】:

      • 在所有选项中,这既是我尝试的最后一件事,也是我最终做的事情。从 Mathworks 的角度来看,它是最受支持和记录最多的场景。请记住,32 位或 64 位版本的 Matlab 只能分别托管 32 位或 64 位进程内 COM 服务器。
      • 第一个链接坏了。
      【解决方案4】:

      是的,我设法做到了,而且几乎没有痛苦。

      您必须为 .NET 编译您的 MATLAB 代码(如以前的答案中所述),运行 MCR 安装程序,在您的 .NET 项目中引用 MWArray.dll 和已编译的代码 dll,然后就可以了。

      唯一的烦恼是接口强制你的转换(有时是多个转换!)(在转换运算符中使用显式)

      【讨论】:

        【解决方案5】:

        在 R2009a 预发行版中,您可以从 MATLAB 调用 .net 程序集。

        【讨论】:

          【解决方案6】:

          我不确定这对您有多大影响,但请尝试查看 matlab 可执行文件或MEX 基本上,用 C 或 FORTRAN 编写程序真的很容易,包括一些库和函数,然后您就可以使用matlab 中的 C 或 FORTRAN 函数

          【讨论】:

            【解决方案7】:

            Matlab 有一个免费和开源的 .NET 包装器,它非常简单: http://www.codeproject.com/KB/dotnet/matlabeng.aspx

            我用这个。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2017-10-26
              • 2014-05-04
              • 1970-01-01
              • 2010-10-24
              • 1970-01-01
              • 2019-08-03
              • 2011-03-16
              相关资源
              最近更新 更多