概述

使用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文件的代码

 /**
* Created by hfz on 2015/12/22.
*/
import org.ujmp.jmatio.ImportMatrixMAT;
import org.ujmp.core.Matrix;
import java.io.File;
import java.io.IOException;
public class test{
public static void main(String[] args)throws IOException{
//相对路径的根目录是当前工程的目录(C:\Users\hfz\Desktop\test)。另外相对路径的起始处无“/”
ImportMatrixMAT test=new ImportMatrixMAT();
File file=new File("data/A.mat");
Matrix testMatrix=test.fromFile(file);
testMatrix.showGUI();
System.out.println("ss");
} }

另外一种更简单的方式

更简单的方式就是直接使用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/

Java读取mat文件的更多相关文章

  1. java分享第十六天( java读取properties文件的几种方法&java配置文件持久化:static块的作用)

     java读取properties文件的几种方法一.项目中经常会需要读取配置文件(properties文件),因此读取方法总结如下: 1.通过java.util.Properties读取Propert ...

  2. Java读取Excel文件的几种方法

    Java读取 Excel 文件的常用开源免费方法有以下几种: 1. JDBC-ODBC Excel Driver 2. jxl.jar 3. jcom.jar 4. poi.jar 简单介绍: 百度文 ...

  3. Java读取txt文件

    package com.loongtao.general.crawler.slave.utils; import java.io.BufferedReader; import java.io.File ...

  4. java 读取XML文件作为配置文件

    首先,贴上自己的实例: XML文件:NewFile.xml(该文件与src目录同级) <?xml version="1.0" encoding="UTF-8&quo ...

  5. java 读取TXT文件的方法

    java读取txt文件内容.可以作如下理解: 首先获得一个文件句柄.File file = new File(); file即为文件句柄.两人之间连通电话网络了.接下来可以开始打电话了. 通过这条线路 ...

  6. 用java读取properties文件--转

    今天为了通过java读取properties文件,google了很长时间,终于找到了.现在特记录之和大家一起分享.     下面直接贴出代码:java类 public class Mytest pub ...

  7. java读取xml文件报“org.xml.sax.SAXParseException: Premature end of file” .

    背景:java读取xml文件,xml文件内容只有“<?xml version="1.0" encoding="UTF-8"?>”一行 java读取该 ...

  8. java读取TXT文件的方法

    java读取txt文件内容.可以作如下理解: 首先获得一个文件句柄.File file = new File(); file即为文件句柄.两人之间连通电话网络了.接下来可以开始打电话了. 通过这条线路 ...

  9. java读取XML文件的四种方式

    java读取XML文件的四种方式 Xml代码 <?xml version="1.0" encoding="GB2312"?> <RESULT& ...

随机推荐

  1. yourphp添加KindEditor编辑器

    <tr> <td align="right">故障描述</td> <script charset="utf-8" sr ...

  2. 一个有趣的模拟光照的shader

    一个有趣的模拟光照的shader(类似法线贴图) http://www.cnblogs.com/flytrace/p/3395911.html -----  可否用于需UI中需要加灯的模型.

  3. 为什么要使用class.forname在DriverManager.getConnection之前

    JDBC在getConnection之前为什么要调用Class.forName 获取一个数据库连接的通用模板如下: String driver = "oracle.jdbc.OracleDr ...

  4. 1.servlet的会话机制cookie

    会话:用户开浏览器访问某个网站,只要不关闭浏览器,不管该用户点击多少个超链接,访问多少资源,直到用户关闭浏览器,整个过程称为一次会话 cookie会话: 1.记录用户上次登录的时间 2.浏览商品的历史 ...

  5. Hadoop快速入门

    目的 这篇文档的目的是帮助你快速完成单机上的Hadoop安装与使用以便你对Hadoop分布式文件系统(HDFS)和Map-Reduce框架有所体会,比如在HDFS上运行示例程序或简单作业等. 先决条件 ...

  6. git如何撤销合并

    撒销一个合并 如果你觉得你合并后的状态是一团乱麻,想把当前的修改都放弃,你可以用下面的命令回到合并之前的状态: $ git reset --hard HEAD 或者你已经把合并后的代码提交,但还是想把 ...

  7. 为什么构造器不能是abstract, static, final, native or synchronized的?

    Unlike methods, a constructor cannot be abstract, static, final, native  or synchronized. 1. A const ...

  8. php5调用web service

    工作中需要用php调用web service接口,对php不熟,上网搜搜,发现关于用php调用web service的文章也不多,不少还是php4里用nusoap这个模块调用的方法,其实php5里已经 ...

  9. 梳理javascript原型整体思路

    相信很多对javascript原型初步了解的人都知道prototype,constructor,__proto__这些名词,也在一定程度上可以使用这些对象.属性.甚至知道在构造函数的原型上定义方法供实 ...

  10. [译]使用6to5,让今天就来写ES6的模块化开发!

    http://es6rocks.com/2014/10/es6-modules-today-with-6to5/?utm_source=javascriptweekly&utm_medium= ...