1)首先使用jmatio(v0.2)從.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方法
2)ujmp的矩陣可視化功能很棒,將二維數組matrix轉化為ujmp下的Matrix只需要一行代碼:
import org.ujmp.core.Matrix; Matrix X=Matrix.Factory.importFromArray(matrix);//將二維數組轉化為矩陣 X.showGUI();
3)相對於jama、ujmp,jblas的矩陣運算速度是很快的,可以將ujmp下的Matrix轉化為jblas下的矩陣變量:
float[][] array=X.toFloatArray();//ujmp下的Matrix轉化為二維數組 FloatMatrix jblasMatrix=new Float(array);
當然,也可以將jblas下的Matrix轉化為ujmp下的matrix,中間接口就是二維數組。
4)
jmatio v0.2的文檔:http://www.mathworks.com/matlabcentral/mlc-downloads/downloads/submissions/10759/versions/1/previews/doc/overview-summary.html。
jblas的官網和文檔:
文檔:http://jblas.org/javadoc/index.html
ujmp官網:https://ujmp.org/
Jama:
http://math.nist.gov/javanumerics/jama/doc/
5)最后附上java各科學計算庫的評測,其實java矩陣計算的性能不太好。
http://lessthanoptimal.github.io/Java-Matrix-Benchmark/runtime/2013_10_Corei7v2600/