有人使用过MATLAB工具生成C/C++代码吗?生成的代码是否适合生产使用?

8

我们有一些研究人员在MATLAB中进行大量工作。我们经常希望将他们的代码作为更大工作流程的一部分,需要将算法放入C/C++或Python中。我看到MathWorks宣传了一个创建本地C或C++代码的工具。那么这个工具生成的代码质量如何呢?它是否支持工具箱?我仍然认为它是一个早期的原型工具,但想知道代码质量如何。你有什么想法吗?


2
作为任何其他自动代码生成器一样,它并不是非常好,但我想它可以成为一个很好的起点。 - BЈовић
嗯,我曾在一家制造无人驾驶车辆的公司工作,据我记得他们用它来生成飞行控制。然而,我不确定代码是否当时已经用于车辆上,或者仅用于模拟器中。我的直觉是,对于足够复杂的算法,特别是那些正在积极开发的算法,人类犯错的可能性比代码生成器要大得多。至于是否适合生产使用的问题,我认为应该在制造该工具的公司进行询问。 - shelleybutterfly
3
有两种不同的工具,第一种自上一个版本(R2011a)以来就可用,并且可以从 MATLAB 代码生成 C/C++。下面的答案确实提到了从 Simulink 进行代码生成。 - Mikhail Poda
@VJo,如果它只是起点,使用代码生成器就没有意义,因为你会失去与原始的MATLAB/Simulink模型的连接。 - Nzbuu
@shelley Matlab代码也是由人编写的,因此也容易出错。 @Nzbuu 是的。我没有考虑过这一点。 - BЈовић
@VJo 当然可以,但是减少人为因素的原因有很多。1. 模型的创建方式更不容易出现人为错误,例如MatLab。2. 在进行MatLab->代码转换时,会引入许多新的人为错误机会。3. 与任何商业库代码一样,代码生成器经过其用户(可能是数千小时的测试)的密集测试,因此导致代码生成错误的错误概率降低了。代码生成显著降低了模型->代码错误的发生率,对于每个设计迭代,这些节省都会成倍增加。 - shelleybutterfly
2个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
3

我过去曾经与MathWorks合作,这方面的工具箱很昂贵,但是支持非常出色。我们对为特定DSP生成的代码进行了基准测试,其速度比手动编写的代码快10%,并且生成时间只需一小部分时间。MathWorks在过去几年中大力投资这些工具链,正在变得非常出色。一些工具箱得到支持,请查看在线文档。


感谢您的回复。我将让MATLAB程序员查看在线文档,以查看是否支持图像处理和统计工具箱。我们可以快速转移到Python,但并不能获得最佳性能。这对我们一些计算机视觉工作来说是足够的,但有些需要C++的原始强大性能。我们目前正在手动移植代码,这是一个昂贵的过程! - Rich Sadowsky
另一种可能性是使用高级C++矩阵库/工具包,例如Armadillo,它具有许多类似于Matlab的函数 - mtall

1

嵌入式编码器生成的代码在我看来非常好,是工业界广泛使用的产品,特别是在汽车应用领域。它通常被设计用于从Simulink生成实时应用程序的代码。请查看网站上的用户故事:http://www.mathworks.co.uk/products/embedded-coder/?s_cid=global_nav

对于工具箱的支持取决于您的要求。如果您需要的只是使用标准库的东西,那么支持是有限的,但如果这对您不重要,那么您可能会更成功。

但是,需要注意的是:它很昂贵。


感谢您的评论。我们目前拥有MATLAB软件包、图像处理工具箱和统计工具箱。我们使用不同的计算机视觉技术进行快速原型设计和实验,然后将代码手动移植到C++中。这种手动编码过程非常耗费人力成本。我正在考虑三个方面:输出C++代码的质量(是否具有类似于MATLAB本地代码的生产质量性能),它是否支持这两个工具箱,以及与我们手动移植到C++或Python所花费的人力成本相比,真正的TCO(总成本)是多少。 - Rich Sadowsky

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,