Win*_*der 43 matlab matlab-deployment matlab-compiler matlab-coder
这两者有什么区别?
据我所知,MATLAB编译器将MATLAB代码包装成.exe文件,这样它就可以在不安装MATLAB的情况下使用,只需要MCR.除此之外,MATLAB Builder NE还可用于生成.Net程序集,与.Net框架而不是.exe文件一起使用,但它们仍然需要MCR.
现在我不明白MATLAB Coder用的是什么?它生成C/C++代码.但MATLAB代码是否真的转换为C/C++,还是仅仅像MATLAB编译器那样打包?是否还需要MCR才能运行?
我知道这不是一个编程问题.但我搜索了互联网,但仍然没有找到明确的答案.这些是非常昂贵的产品,所以我想知道我正在进入什么.
Sam*_*rts 63
MATLAB编译器对您的MATLAB代码(仍为MATLAB .m代码)进行加密和存档,并将其打包为精简可执行文件(.exe或.dll)包装器.这将与MATLAB编译器运行时(MCR)一起提供给最终用户.如果您愿意,MCR也可以打包在可执行文件中.
MCR可以自由重新发布,您可以将其视为基本上没有前端桌面的MATLAB副本.
当用户运行可执行文件时,它会解压缩并解密MATLAB代码,并针对MCR而不是MATLAB运行它.因此,通过此方法提供的应用程序应与在MATLAB中完全相同(包括相同的速度).
MATLAB Coder将MATLAB语言的子集转换为C代码.然后可以以多种不同的方式使用它,包括作为mex文件返回MATLAB,使用C编译器编译以从另一个应用程序调用,或者传送到嵌入式设备.由于它是C代码而不是MATLAB代码,因此它通常(尽管不总是)运行速度比原始MATLAB代码快得多.C代码不需要MCR.支持的MATLAB语言子集非常广泛,但在提交到此工作流程之前,您需要考虑一些值得注意的限制.生成的代码是C代码,但如果您需要使用C++编译器而不是C编译器,它可以生成C++包装器.
MATLAB编译器适用于您希望简单且(公平地)直接共享您与没有MATLAB副本的人一起编写的MATLAB应用程序的用例.由于部署的.m代码是加密的,因此它也可用于共享MATLAB代码,同时保护知识产权.
MATLAB Coder还有其他用例,例如想要通过转换为mex文件来加速MATLAB代码,或者需要为其他应用程序或嵌入式设备生成C代码.
如果您有更详细的问题,我建议您只需调用MathWorks并询问它们.
编辑:以上信息适用于MATLAB R2014b及以下版本.从MATLAB R2015a开始,MATLAB Compiler的功能与MATLAB Builder产品的功能重新混合,还有一个新产品MATLAB Compiler SDK.
从R2015a开始,MATLAB编译器以与上述相同的方式工作(即加密,存档和包,但不生成C),但现在将打包为.exe和Excel加载项(.xla).在R2015a之前,此功能曾出现在产品MATLAB Builder EX for Excel中.
从R2015a开始,MATLAB编译器不再生成.dll组件.此功能已移至新产品MATLAB Compiler SDK,该产品还包括生成.NET程序集和Java类的功能.在R2015a之前,此功能过去曾出现在产品MATLAB Builder NE for .NET和MATLAB Builder JA for Java中.
换一种说法:
在R2014b及以下,我们有:
MATLAB编译器:生成.exe和.dll组件
用于.NET的MATLAB Builder NE:生成.NET程序集
MATLAB Builder JA for Java:生成Java类
用于Microsoft Excel的MATLAB Builder EX:生成Excel加载项.
在R2015a,我们有:
MATLAB编译器:生成.exe和Excel加载项
MATLAB编译器SDK:生成.dll,.NET程序集和Java类.
MATLAB Coder的范围和用例在这些版本中没有变化(尽管有新功能).
编辑:从R2015b开始,MATLAB Compiler SDK也生成Python包.
有关区分MATLAB编码器和MATLAB编译器C/C++的更多信息,请参见此处.