5

我有一些 Matlab 代码和一个 GUI,我想制作一个独立的 .exe,以便它可以在没有安装 Matlab 的计算机上使用。

我知道 Matlab 编译器以及如何使用它,但这会创建一个仅在用户安装了 MATLAB Compiler Run-Time (MCR) 时才有效的 .exe。

我感兴趣的是,是否有任何方法可以创建一个仍然使用 Matlab 代码但不依赖于 MCR 的独立 .exe。我希望它在您单击它时运行而不需要安装任何其他东西。

我知道C可以利用Matlab,有什么办法可以用C来使用代码吗?任何可以的开源 Matlab 替代品怎么样?

作为最后的手段,如果我用另一种语言重写 Matlab 代码,你会推荐哪种语言?我在想 C 或 Python。

谢谢。

4

5 回答 5

2

自从我查看 MATLAB 编译器已经有一段时间了,但如果我没记错的话,它曾经能够生成 C/C++ 代码,而不是全力以赴并生成可执行文件。挂断始终是您的代码使用的工具箱以及编译器是否支持它们。您是否有机会在服务器上安装 MATLAB 应用程序并使用桌面客户​​端电话获取结果?

至于其他语言,我会结合 matplotlib (matplotlib.sf.net)查看NumPy 和 SciPy 。我现在正在与一位 MATLAB 开发人员一起工作,到目前为止,他对这次体验非常满意。

于 2010-07-07T20:37:43.290 回答
2

MCR 是必需的,但有一个技巧:它实际上不必安装,只需在 PATH 上可用。运行 MCR 的东西不需要任何注册表项或安装过程中的任何其他特殊内容。您只需要可读的 MCR 文件和可通过正常查找机制定位的 DLL,其中包括在程序启动时检查 PATH。

例如,我使用“安装”在网络驱动器上的 MCR 运行已编译的 Matlab 应用程序。您在一台机器上运行 MCR 安装程序并将其安装到网络驱动器X:\Matlab\MCR\R2010b-win32而不是通常的C:\Program Files位置。然后让你的程序在调用你的实际 .exe 文件之前通过添加到 PATH 的包装脚本启动X:\Matlab\MCR\R2010b-win32\bin\win32,它会在任何其他看到相同驱动器的机器上运行,即使 MCR 安装程序没有在它们上运行. (最终我们停止了,因为从网络加载 MCR 会影响性能。)

您可以使用此技巧将 MCR 与您的应用程序捆绑在一起。将整个 MCR 安装(安装产生的目录树,而不是安装程序本身)粘贴到应用程序目录树的子目录中,并让应用程序的入口点是 .bat 文件或粘贴该 MCR 目录的其他包装脚本在运行依赖于 MCR 的 .exe 文件之前在 PATH 上。

当然,请咨询您的法律人员,以确保这不会违反您的许可条款。

于 2013-04-25T14:32:28.780 回答
1

我进行了一些研究,恐怕您唯一的选择是使用 MCR,或者将您的代码转换为另一种语言。MathWorks 希望您仅使用他们的编译器来创建 .exe 文件是有道理的。

仅当您已经熟悉另一种语言和/或您有足够的时间来完成您要完成的工作时,才考虑使用另一种语言。此外,如果您在 Matlab 中使用不是您编写的函数,那么您也必须编写这些函数,这可能非常困难/不可能。

如果以上都不是问题,那么您应该使用哪种语言真的取决于您。您不仅限于 C 和 Python。我认为,Matlab 与其他常用语言非常相似,至少在语法方面如此。无论哪种方式,您都必须进行一些学习,因此我建议您要么使用您知道的语言,要么选择一种容易找到帮助的语言。C# 和 Java 是两种比较“著名”的语言。

于 2010-07-07T20:35:50.953 回答
1

MathWorks 最近推出了一款新产品MATLAB Coder。它能够从您的 MATLAB 代码生成 C\C++ 代码(生成源代码而不是可执行文件)。生成的代码是可移植的,不依赖于 MCR,尽管它只支持核心 MATLAB 语言功能的一个子集。

于 2011-09-11T15:04:55.707 回答
0

Matlab“编译器”不是编译器。它将 Matlab m 代码转换为 C++ 代码,然后将其发送到实际的编译器,如 Visual Studio 等中的编译器。它生成的代码并不是真正的人类可读的。

要制作一个独立的应用程序,请安装以下工具箱(以您支付的任何价格):

MATLAB Builder JA、MATLAB Builder NE、MATLAB 编译器

通过将 Matlab 编译器指向驱动器上的实际编译器来设置它(即 mbuild -setup)。

选择编译器:[1] C:\Program Files (x86)\Microsoft Visual Studio 9.0 中的 Microsoft Visual C++ 2008 SP1

然后使用(即类型deploytool)制作main并定义各种辅助函数等。Sect windows console或standalone。然后点击构建。它将为您制作 exe 文件。您还可以根据需要编译为 DLL 等。

较新版本的“编译器”支持编译 eval,所有获得许可的工具箱,它支持导入 java 类,例如,用于 xml 文件解析的 DOM 等。

要在没有安装 Matlab 的计算机上使用生成的 exe 文件,您需要获取 Matlab MCR 并安装它。MCR 必须与您用于制作编译代码的 Matlab 版本完全匹配。

问候,

伊万

于 2013-04-18T14:16:48.073 回答