2014-03-25 64 views
2

我有一個功能齊全的Android應用程序(Java),缺少一個算法。我在Matlab中編寫了這個算法。Matlab到C到Android

我在本網站的另一部分閱讀,該Matlab有能力將Matlab代碼轉換成C代碼(在一定程度上)。

我的問題:

  1. 是否有可能這個跟我已經運行的Java 代碼集成?
  2. Android NDK是否從C/C++啓動代碼?
  3. 有沒有辦法將我的代碼 的初始化值連接到C中的代碼?

謝謝。

+0

自動將matlab轉換爲c的唯一方法是[this](http://www.mathworks。com/products/matlab-coder /)產品,據我所知。我沒有使用它,但也許你可以嘗試免費試用。 – Isaac

回答

3

附加產品MATLAB Coder允許您將MATLAB語言的一個子集轉換爲C代碼。你需要確保你的MATLAB算法屬於這個子集,或者重新編碼它,以便從中產生C代碼。

支持的子集變化(變大),每一個版本,但有幾個大的限制,目前包括:

  • 無電池陣列 編輯因爲R2015b
  • 沒有對象 - 一些單元陣列支持oriented code 編輯一些OO功能支持自R2012a
  • 沒有匿名或嵌套功能
  • 沒有稀疏矩陣
  • 沒有try \ catch

我沒有經驗在Java中爲Android開發,但我希望,如果你能在一般稱之爲C,你就可以調用C從MATLAB生成的代碼。如果你感興趣的話,我知道MathWorks有一個演示(我恐怕找不到它在網站上,但你可以聯繫他們找到它)生成的C代碼,部署到iPhone與Objective C包裝器,他們可能在內部有一個類似Android的例子,他們願意與你分享。另一方面,另一種將移動應用程序與MATLAB代碼集成的方式可能是使用Builder產品之一(MATLAB Builder for Java或MATLAB Builder for .NET)將您的MATLAB算法部署爲Web服務,並讓你的Android應用程序調用它。根據您的應用程序和MATLAB部分的性質,這可能是也可能不是更好的選擇。

編輯:MathWorks公司正在主持MATLAB Virtual Conference今天在其演講(比爾周,對於MATLAB編碼器產品經理)中的一個將展示如何部署生成的C代碼到iPhone。我猜想這個過程對於Android來說可能是類似的,在演示結束後,你可以向他提問。現在註冊,你可能會趕上他!

+0

實際上,通過MATLAB Classes [支持]的面向對象的幾個方面(http://www.mathworks.com/help/fixedpoint/ug/how-working-with-matlab-classes-is-different-for-code- generation.html)與MATLAB編碼器。 –

+0

@ lilbill39是的,你是對的 - 我一定錯過了它,當它出來。看來,自從R2012a以來,越來越多的OO功能得到了MATLAB編碼器的支持。非常好 - 謝謝你讓我知道。 –