Java與Matlab混合編程

Java與Matlab混合編程


注意:轉載請說明,來自轉自itboy-木小草尊重原創,尊重技術

環境要求

Matlab至少是2015a及以上版本,之前我用的2014b怎麼都不行,最後在http://www.matlabsky.com/上看到說是2014班沒有破解完全
java我用的1.7,應該沒什麼要求

matlab導jar包

寫好matlab之後,在控制檯打deploytool,選擇導出jar包,起名字,選擇路徑什麼的,都很簡單,然後完成了還要等一會,就能得到jar包了。

使用Matlab的jar包

  1. 在java工程屬性的BuildPath中添加兩個jar包:

    matlabroot\toolbox\javabuilder\jar\javabuilder.jar
    TestDirectory\flying.jar

  2. 編寫函數示例如下

package test; 
/** 
* test for a Matlab Call 
*
*/ 
import com.mathworks.toolbox.javabuilder.*; 
import flying.*; 

public class testMatlabClass { 

    /** 
    * @param args 
    */ 
    public static void main(String[] args) { 
        // TODO Auto-generated method stub 
        try { 
           System.out.println("Begin"); 
           flyingclass flyingDraw=new flyingclass(); 
           System.out.println("Middle"); 
           flyingDraw.mydraw(7,2); 
           System.out.println("Here"); 
        }catch (Exception e){
           System.out.println(e);
        } 
    } 
} 
  1. 如果不能正常運行,可以考慮在 classpath 中,加入 flying.jar 所在的位置。

詳細

  1. 參見 matlab 的幫助文件

  2. http://www.simwe.com/forum/archiver/tid-747229.html

  3. 數據類型相關

Java 的數值型數組,可以直接作爲輸入參數傳遞到 .m 文件上。

如:mydraw(x,y) ,可以畫x=[1 2 3 4] ,y=[3.3 -5 6 10.2]這樣的線圖。Java調用該方法時候,如果傳遞的參數是整型或者實數型數組,則直接可成功。如java中:

int[] a = new int[4]; 
int[] b = new int[4]; 
// 給 a,b 賦值 …
// … 
// 調用 
flyingclass flyingDraw = new flyingclass(); 
flyingDraw.mydraw(a,b); 

注意:a,b 最好所有有索引的位置都有值,否則如果沒有充分賦值曲線可能會最終折回(0,0)點。

Matlab程序(.m文件)的修改

  1. 找到TestDirectory\flying.jar所在的位置(因爲按照上述步驟的話,.m源文件就在該位置附近)。這個位置,從Eclipse的Package Explore可以用看到。

  2. 直接修改欲改動的.m文件

  3. 打開Matlab, 在Command輸入Deploytool, 在新打開的部署面板中,“打開”該m文件所在的工程,如flying.prj。

  4. 選中相應工程下Class 文件夾下的.m文件,點擊工具欄的Build按鈕。

  5. 則相應源文件被重新編譯。如果按照前面步驟添加的jar包,則編譯後新生成的jar包自動替換掉原有的jar。又由於這個jar的位置已經作爲BuildPath告訴了java的相應工程,因此Java端不需要做任何調整即可正確調用到新修改了內容的matlab方法。

    注意:轉載請說明,來自轉自itboy-木小草尊重原創,尊重技術

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章