2016-09-05 25 views
1

我已經介紹了很多StackOverflow問題和Google搜索結果,閱讀了許多討論主題,但是我找不到任何適合我的問題的答案。我有一個.mat格式的稀疏矩陣,其中包含36600個節點(36600x36600鄰接矩陣),用於在Java環境中讀取和操作(如矩陣向量乘法)。我應用了很多在這裏討論的答案,但是我總是得到NullPointerException錯誤,雖然在.mat文件中有數據(有些說這些結果是因爲數據的大小)我已經將下面的代碼應用到我的.mat文件中,該文件返回null和NullPointerException。Java中的閱讀和處理.mat文件(鄰接矩陣)

MatFileReader matfilereader = new MatFileReader("sourceData.mat"); 
MLArray mlArrayRetrieved = matfilereader.getMLArray("data"); 
System.out.println(mlArrayRetrieved); 
System.out.println(mlArrayRetrieved.contentToString()); 

而且我已經嘗試了許多次.MAT文件爲.csv或.xls轉換MATLAB環境和Python環境在Jupyter筆記本電腦,但是,我並沒有在這些時間得到任何結果了。

.mat文件將成爲一個鄰接矩陣,並將成爲Cytoscape項目中特定算法的來源。因此,我必須在Java環境中使用它,並決定使用COLT庫進行矩陣操作。建議和建議會幫助我很多。謝謝閱讀。

+0

什麼是你的數據文件的大小? – JMA

+0

@jafergas它像750KB,稀疏矩陣。 –

回答

0

只是用find得到非零元素的行,列和價值觀,這些保存爲文本,CSV或...:

[row, col, v] = find(my_spares_matrix); 
+0

我已經使用過,它可以工作,但我可以看到許多重複的順序混合。你知道爲什麼嗎?爲了給出詳細信息,該稀疏矩陣的預覽像1,2,3,4 ...一樣是行和列。但是三維輸出就像2,2,2,2,2,1,1,1等。 –

+0

3d列代表某個圖的節點之間的某種關係,但在你的問題域中我真的不知道這是什麼意思。 – rahnema1