2012-03-16 74 views
6

我想讀取一個在Matlab中產生的矩陣成一個二維數組在Java中。 到目前爲止,我一直在使用jmatio來從java寫入.mat文件(成功),但現在無法設法繞過。 我已經成功地導入到矩陣使用此代碼MLArray對象:從Matlab讀取數據到Java

matfilereader = new MatFileReader("filename.mat"); 
MLArray j = matfilereader.getMLArray("dataname"); 

但比得到它的字符串表示我更不知道如何訪問數據本身之外。我發現沒有這樣的例子或文件庫本身,我實際上寫了一個函數來解析裝入字符串到一個double [] []數組,但這只是如果矩陣小於1000個項目...

將是任何經驗或技巧, 感謝感謝,

阿米爾

+0

您是否嘗試過使用MLDouble子類,而不是MLArray?你有沒有在MATLAB中檢查過mat文件是否保存正確? – yuk 2012-03-16 05:13:08

+0

你是怎麼用MLDouble代替MLArray的? MatfileReader只是以MLArrays的形式返回變量的API。關於文件 - 是的,iv'e嘗試了幾個,他們都沒問題。 – Amir 2012-03-16 17:36:25

+0

我的意思是把MLArray施放到MLDouble。你可以試試'MLDouble j =(MLDouble)matfilereader.getMLArray(「dataname」);'? – yuk 2012-03-16 17:57:22

回答

0

我不熟悉的工具,但它是很老。嘗試保存到舊版本的*.mat文件並查看您的結果是否改變。即,當您保存r * .mat文件時,添加'-v7.0''-v6'標誌。

示例代碼:

save filename var1 var2 -v7.0 

save filename var1 var2 -v6 
+0

Iv'e現在嘗試過,結果相同。但這不是我得到的錯誤或與文件有關的問題,問題是使用哪個代碼將MLArray獲取到java變量中? – Amir 2012-03-16 17:38:29

2

matfilereader.getMLArray具有幾個子類來訪問不同類型的數據在MLArray對象。

爲代表的雙陣列可以施放MLArray到MLDouble:

MLDouble j = (MLDouble)matfilereader.getMLArray("dataname");