Java讀取mat文件


概述

使用ujmp中的jmatio模塊讀取.mat文件到java程序中。

其實,ujmp主要是在模塊core中實現了矩陣運算,其余模塊都是復用了已有的開源庫。模塊jmatio是復用了已有的JMatIo,對這個讀取mat文件到java程序的庫做了一層封裝。從ujmp的官網(https://ujmp.org/)下載ujmp的jar包,但是這一個jar包並不能讀取mat文件(雖然jar包內有jmatio模塊),還需要下載一個JMatIo的jar包(http://pan.baidu.com/s/1nuMMqvB)。將兩個jar包都加入到工程中才可以從mat文件中順利讀取數據到java程序中。

添加jar包到工程

在創建的工程中新建一個lib文件夾,將以上兩個jar包拷貝到此文件夾中,必須要拷貝到項目中。比如,我之前是將兩個jar包放在桌面上,但是當把jar包刪除或移動之后,程序就不能運行了,很簡單的道理。

接下來就是將兩個jar包添加到工程中,以便在程序中使用這兩個包中定義的類。

讀取mat文件的代碼

 1 /**
 2  * Created by hfz on 2015/12/22.
 3  */
 4 import org.ujmp.jmatio.ImportMatrixMAT;
 5 import org.ujmp.core.Matrix;
 6 import java.io.File;
 7 import java.io.IOException;
 8 public class test{
 9     public  static void main(String[] args)throws IOException{
10         //相對路徑的根目錄是當前工程的目錄(C:\Users\hfz\Desktop\test)。另外相對路徑的起始處無“/”
11         ImportMatrixMAT test=new ImportMatrixMAT();
12         File file=new File("data/A.mat");
13         Matrix testMatrix=test.fromFile(file);
14         testMatrix.showGUI();
15         System.out.println("ss");
16     }
17 
18 
19 }

另外一種更簡單的方式

更簡單的方式就是直接使用jmatio庫從.mat文件讀取數據到內存中,並將其轉化為二維數組的形式,代碼如下: 

import com.jmatio.io.MatFileReader;
import com.jmatio.types.MLArray;
import com.jmatio.types.MLDouble;
 MatFileReader read = new MatFileReader("data/totalDataSet.mat");
MLArray mlArray=read.getMLArray("img");//mat存儲的就是img矩陣變量的內容
MLDouble d=(MLDouble)mlArray;
double[][] matrix=(d.getArray());//只有jmatio v0.2版本中才有d.getArray方法

jmatio參考文檔:http://www.mathworks.com/matlabcentral/mlc-downloads/downloads/submissions/10759/versions/1/previews/doc/overview-summary.html

jmatio下載:http://pan.baidu.com/s/1nuMMqvB

參考:

http://www.programcreek.com/java-api-examples/index.php?api=com.jmatio.io.MatFileReader

https://www.kaggle.com/c/decoding-the-human-brain/forums/t/7862/using-jmatio/65560

http://blog.madhukaraphatak.com/matfile-to-rdd/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM