Matlab转C再到Android

3
我有一个完全功能的Android应用程序(Java),但缺少一个算法。我在Matlab中编写了这个算法。
我在这个网站的另一个部分上读到,Matlab有能力将Matlab代码转换为C代码(在一定程度上)。
我的问题是:
1. 是否可能将其与我已经运行的Java代码集成? 2. Android NDK是否适用于从C / C ++开始编写代码? 3. 是否有任何方法可以将我的代码中的初始化值连接到C中的代码?
谢谢。

据我所知,将Matlab自动转换为C的唯一方法是使用此产品。虽然我没有使用过它,但您可以尝试免费试用版。 - Isaac
1个回答

3

插件产品MATLAB Coder可以将 MATLAB 语言的子集转换为 C 代码。您需要确保您的 MATLAB 算法在此子集内,或对其进行重新编码,以便从中生成 C 代码。

支持的子集每个版本都会更改(变得更大),但目前存在一些重要限制,包括:

  • 没有单元数组 编辑 自 R2015b 起支持某些单元数组功能
  • 没有面向对象的代码 编辑 自 R2012a 起支持某些面向对象的功能
  • 没有匿名或嵌套函数
  • 没有稀疏矩阵
  • 没有try \ catch

我没有在Java中开发Android的经验,但我认为如果您能够通用地调用C代码,那么您应该能够调用从MATLAB生成的C代码。如果您对此感兴趣,我知道MathWorks有一个演示(很遗憾我找不到它在网站上的位置,但您可以联系他们来获取)生成部署到带有Objective C包装器的iPhone的C代码,并且他们可能内部有类似于Android的示例,愿意与您分享。

另外,还有一种将移动应用程序与MATLAB代码集成的方法可能是使用Builder产品之一(MATLAB Builder for Java或MATLAB Builder for .NET)将您的MATLAB算法部署为Web服务,并让您的Android应用程序调用该服务。根据您的应用程序和MATLAB部分的性质,这可能是一个更好的选项或不是一个更好的选项。

编辑: MathWorks将在今天举办MATLAB虚拟会议,其中一位演讲者(MATLAB Coder产品经理Bill Chou)将演示如何将生成的C代码部署到iPhone。我猜这个过程可能类似于Android,演示结束后您可以向他提问。现在就去注册,也许还来得及!


实际上,MATLAB类通过MATLAB Coder支持多个面向对象方面。这里有更详细的信息。 - Ryan Livingston
@lilbill39 是的,你说得对 - 我可能在发布时忽略了那个。从R2012a开始,MATLAB Coder似乎支持了越来越多的面向对象功能。非常好 - 谢谢你告诉我。 - Sam Roberts

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