JAVA 調用matlab

來源:互聯網
上載者:User

在此感謝分享:http://blog.csdn.net/wannshan/article/details/5907877

前段時間摸索了java調用matlab東西,不說學的有多深,也算有結果了,達到目的了。也即用java程式可以調用matlab中函數了。

    按順序說吧,最開始肯定是下個matlab看看。下哪一個呢。開始下一個7.0覺得很新了。後來才覺得不是,現在都有7.8了。同時網上還流傳著另外一種版本號碼資訊,即2006版、 2006a版、2008b版,後來從網上找資料才知道,原來,matlab是一年兩版的,叫a版和b 版。比如MATLAB 7.2 (Release 2006a),我下的是m7.8即2009a版。網上有對應關係,有興趣可以找一下。

    先說明一下,我用java調用matlab用的是matlab人提供的,MABLAB BUILDER JA工具,還要告訴你,這工具2006b版以前是沒有的,我想以前java可能通過JNI通過c來調用matlab的。所以你下載時要注意版本了。還有一點要說明下,如果你用的是AMD的處理器,不是intel的處理器,安裝matlab後,可能不能運行,具體表現是,一開啟就關閉了。我公司機器用就是AMD的處理器,解決辦法其實也很簡單,就是給你的機器建立立一個系統變數,變數名是BLAS_VERSION,變數值是D://MATLAB7//bin//win32//atlas_Athlon.dll(你的matlab安裝地址)。

   然後,就是我們學著用MABLAB BUILDER JA了,開始不知道看matlab協助,只是從網上看別人寫的東西,關於這樣的文章基本上出自一個娘胎,我不明白的地方,都一樣的沒有。後來看到了matlab協助文檔了,確實興奮了一把,那才是最正宗的。下面我就試著按照它的說明一步一步說一下。

    先來,介紹一下MATLAB Builder JA吧,它是 MATLAB Compiler的擴充產品,用它你可以把你的m-code檔案封裝起來,並打包到一個多個class檔案中,這樣的你的java程式就能用matlab了,其實是這樣的,m-codeiv當然就是你想調用的matlab程式了。

   要說明一點,如果你只是在安裝matlab的機器上,用java調用運行由MATLAB Builder JA產生的jar包,當然可以。

   如果你要在沒有安裝matlab的機器上用java調用這些jar包,怎麼辦?也是可以的,不過,不過你要先在機器上安裝matlab提供的MATLAB Compiler Runtime (MCR),它的安裝檔案在C:/Program Files/MATLAB/R2009a/toolbox/compiler/deploy/win32下(你的安裝目錄下)檔案名稱MCRInstaller.exe。

   準備工作:

   java環境,JAVA_HOME設定正確。還有一點你jdk版本要是1.6以上的,1.5可能有錯。

   關鍵區段來了,在這部分你可以,通過一個例子,看到一個M-code function轉變成為java可調用組件。

   這個例子的名字叫,magic square,這個例子讓你學會如何,建立一個叫magicsquare 的java組件,它主要包括一個 magic class,和一個jar檔案,還有其它上些發布組件用到的檔案。magic .class是最關鍵的,就是它封裝了, MATLAB 的函數 makesqr, makesqr函數是計算魔方數組用的,後面我們就是java程式,調用這個函數。

    MATLAB Builder JA,可以通過在matlab命令,deploytool 調出,在這之間,為了驗證matlab已能得到你的java環境了,你可以用,getenv JAVA_HOME來驗證一下,能返回你的JAVA_HOME就是正確的了。

    這個例子的,m代碼和java代碼,matlab都幫我們寫好了。你現在需要做的就是把它的代碼拷貝你的工作空間中,它是例子在

    matlabroot /toolbox/javabuilder/Examples/MagicSquareExample .

   matlabroot就是matlab的安裝目錄。

    拷貝MagicSquareExample這個檔案夾到你工作空間, for example, D:/javabuilder_examples

    記得不要有空格。把MagicSquareExample子目錄改名為 magic_square,現在的檔案結構應該是D:/javabuilder_examples/magic_square .沒錯的話。然後把matlab工作空間轉到D:/javabuilder_ examples/magic_square。 最後,要用m-code function我們要先測試它,開啟makesqr.m檔案,然後在matlab命令列中,輸入 makesqr(5),看看結果是不是

17 24  1  8 15
deploytool 調出 MATLAB Builder JA,它應該是如下這個樣子,

 
然後你選擇MATLAB BUILDER JA,建立一個工作,點擊Browse按鈕把你的工作放在
D:/javabuilder_examples/magic_square.輸入magicsquare 作為工程名稱。預設工程名字也是
D:/javabuilder_examples/magic_square目錄下的包名。
MATLAB Builder JA 分配classes存放的檔案夾名是按工程名稱來設定的,所以在本工作中,Magicsquare 就是作為,calsses存放目錄
名稱了,我們要手動改它名字為,class,直接右擊就可以改了。(這也是我以前看別人文章的,老找不到他們所謂的class檔案夾的原因,也沒人說這個問題)
工作建好以後,你可以setting你的工程,matlab的指南上說,讓我們把Generate Verbose Output 選項選上,這樣就能看到出錯資訊,實際上它預設是選擇的。
然後,把m檔案添加到工程中,在matalb中找到makesqr.m 檔案把它,用滑鼠拖到工程的magic檔案夾下。然後儲存工程。
下面就是構建工程,點擊面板上方

 按鈕,等待一會,matlab就會你的工程目錄下,建立src 和distrib兩個檔案夾。 src目錄中包括有,產生的java檔案,magic.class。distrib目錄中包括有java封存檔案,magicsquare.jar。

23  5  7 14 16
 4  6 13 20 22
10 12 19 21  3
11 18 25  2  9
下面就是把m-code函數建立成一個java組件。用剛才說的,

接下來,就是驗證你用matlab builder ja產生的java組件是不是能用的時候了。

先在你的java ide中建立一個java工程,然後把剛才產生的magicsquare.jar,還有,matlabroot/toolbox/javabuilder/jar/javabuilder.jar加入你的java工程構建路徑中去。

然後你把D:/javabuilder_examples/magic_square/MagicDemoJavaApp下的getmagic.java測試檔案拷貝到你java工程下,然後直接運行它。具體是怎麼調用的,你看一測試代碼就知道了,很easy.

就可以測試了。它是提示你輸入一個數。如輸入5,斷行符號得到

Magic square of order 5
17 24  1  8 15
23  5  7 14 16
 4  6 13 20 22
10 12 19 21  3
11 18 25  2  9

就正確了。

 

 

最後補充一點,我在公司機器上運行這個例子時,能出結果,但出結果前,老是報


這個錯,但在我家,自己的機器上就沒有這個錯誤,要說明一點的是,我家自己機器上用的INTEL的cpu,公司用的是AMD的,其它沒什麼區別。也不知是什麼原因。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.