从Matlab代码创建独立应用程序

时间:2010-07-07 20:09:02

标签: matlab matlab-deployment matlab-compiler

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

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

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

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

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

感谢。

5 个答案:

答案 0 :(得分:2)

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

就其他语言而言,我会结合matplotlib(matplotlib.sf.net)查看NumPy and SciPy。我现在正在和MATLAB开发人员合作,到目前为止,他对这次经历感到非常满意。

答案 1 :(得分:2)

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

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

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

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

答案 2 :(得分:1)

我已经研究了一下,我担心你唯一的选择是使用MCR,或者将你的代码转换成另一种语言。有意义的是MathWorks希望您只使用他们的编译器来创建.exe文件。

只有在您熟悉它们的情况下才会考虑另一种语言,并且/或者您有足够的时间来完成您想要完成的任务。此外,如果您在Matlab中使用的是未编写的函数,那么您也必须编写这些函数,这可能非常困难/不可能。

如果以上都不是问题,那么您应该使用哪种语言取决于您。您不仅限于C和Python。我认为,Matlab与其他常用语言非常相似,至少在语法方面如此。您将不得不以任何一种方式学习,所以我建议您使用您熟悉的语言,或者选择一种易于查找帮助的语言。 C#和Java是两种比较“着名”的语言。

答案 3 :(得分:1)

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

答案 4 :(得分: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并定义各种辅助函数等。使用Windows控制台或独立控件。然后单击构建。它将为您创建exe文件。您也可以根据需要编译为DLL等。

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

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

此致

伊万