当前位置: 首页 > news >正文

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/

转载于:https://www.cnblogs.com/lz3018/p/5067111.html

相关文章:

  • 费用流
  • 字符串格式化 (%操作符)
  • Memcached简介
  • dialog工具,让脚本迈向图形化
  • 如何学好编程(三)---四步成为编程精英
  • ios项目中引用其他项目复习
  • 检测一下你的专业指数:2015年十大测试工具你认识几个?
  • 1126 求递推序列的第N项(51nod)
  • Char、AnsiChar、WideChar、PChar、PAnsiChar、PWideChar 的用法
  • spring-data-jpa 多数据源
  • 利用partial关键字声明分部类和分部方法
  • linux下搭建LAMP
  • 整洁的测试遵循的规则
  • server配置学习 ---- 关闭防火墙
  • 第一章 C++编程基础
  • 实现windows 窗体的自己画,网上摘抄的,学习了
  • 【391天】每日项目总结系列128(2018.03.03)
  • - C#编程大幅提高OUTLOOK的邮件搜索能力!
  • GraphQL学习过程应该是这样的
  • java第三方包学习之lombok
  • Linux下的乱码问题
  • Python - 闭包Closure
  • vue2.0开发聊天程序(四) 完整体验一次Vue开发(下)
  • 从0到1:PostCSS 插件开发最佳实践
  • 电商搜索引擎的架构设计和性能优化
  • 高程读书笔记 第六章 面向对象程序设计
  • 给自己的博客网站加上酷炫的初音未来音乐游戏?
  • 回顾 Swift 多平台移植进度 #2
  • 基于axios的vue插件,让http请求更简单
  • 基于web的全景—— Pannellum小试
  • 排序算法之--选择排序
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 翻译 | The Principles of OOD 面向对象设计原则
  • 扩展资源服务器解决oauth2 性能瓶颈
  • #!/usr/bin/python与#!/usr/bin/env python的区别
  • #git 撤消对文件的更改
  • (1)Nginx简介和安装教程
  • (11)MATLAB PCA+SVM 人脸识别
  • (3)(3.5) 遥测无线电区域条例
  • (4)事件处理——(6)给.ready()回调函数传递一个参数(Passing an argument to the .ready() callback)...
  • (博弈 sg入门)kiki's game -- hdu -- 2147
  • (转)Android学习系列(31)--App自动化之使用Ant编译项目多渠道打包
  • (转)IIS6 ASP 0251超过响应缓冲区限制错误的解决方法
  • **PHP分步表单提交思路(分页表单提交)
  • ./configure、make、make install 命令
  • .NET Project Open Day(2011.11.13)
  • .net操作Excel出错解决
  • .net的socket示例
  • .NET分布式缓存Memcached从入门到实战
  • .NET开源项目介绍及资源推荐:数据持久层
  • @ 代码随想录算法训练营第8周(C语言)|Day53(动态规划)
  • @cacheable 是否缓存成功_Spring Cache缓存注解
  • @DataRedisTest测试redis从未如此丝滑
  • @JoinTable会自动删除关联表的数据
  • @RequestBody的使用