要求:mat中文件应该是单一的矩阵或者向量,如果是多个矩阵存到mat中,使用matlab把原始文件load后分别存成多个单一矩阵的mat文件。
-
下载jar包
使用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包到工程:在当前的project中新建lib文件夹,将下载的jar包复制进来,使用eclipse的在package explorer下右键->properties->java build path->libraries->add external JARs->添加jar->apply->ok
创建File对象,指向所要读取的mat文件。
File file = new File("mat file address"); //使用包和其中的类:import java.io.File
将mat中数据读入到一个矩阵类中:
Mathix data = ImportMatrixMAT.fromFile(file); //使用包和其中的类:import org.ujmp.jmatio.ImportMatrixMAT;
对得到的矩阵进行操作。
具体代码如下:
public static void main(String[] args) throws IOException {
File file1 = new File("src/test/sampleData.mat");
Matrix sampleData=ImportMatrixMAT.fromFile(file1);
File file2 = new File("src/test/dataBase.mat");
Matrix dataBase=ImportMatrixMAT.fromFile(file2);
int dataBaseNumber =(int)dataBase.getColumnCount(); //矩阵的列数
double[]spaceAngle = new double[dataBaseNumber];
......
}
- UJMP 矩阵库的基本用法见: