2015-04-20 64 views
1

到目前爲止我的代碼(基於this entry),但它不工作:如何在Java中加載/打開/讀取matlab文件* .mat?

MatFileReader matfilereader = new MatFileReader("C:\\data\\Freebase\\initEmbed.mat"); 
System.out.println(matfilereader.getData().get(0) + "name: "+matfilereader.getMLArray("words").getSize()); 
System.out.println("new "+matfilereader.getMLArray("words")); 
MLArray words = matfilereader.getMLArray("words"); 
System.out.println(words.contentToString().substring(0, 100)); 
MLChar j = (MLChar) matfilereader.getMLArray("words"); 

我的輸出:

[1x91898 cell array]name: 91898 
new [1x91898 cell array] 
words = 
    [1x9 char array] [1x3 char array] [1x1 char array] [1x1 char array] [1x2 char array] 

Exception in thread "main" java.lang.ClassCastException: com.jmatio.types.MLCell cannot be cast to com.jmatio.types.MLChar 
    at NTN.Run_NTN.main(Run_NTN.java:91) 

如何這個MATLAB文件的話加載到Java數組?

回答

1

我對matLab一無所知,但異常似乎很清楚。您正在將MLCell投射到MLChar。 「getMLArray」必須返回MLCell。我將強制轉換爲MLCell第一

MLCell mlCell = (MLCell) matfilereader.getMLArray("words"); 

然後用任何方法都可以在該類型得到MLChar