简明教程 C程序读取.mat格式的Matlab数据文件

之前需要Matlab保存训练数据,并由C调用,直接用.txt时,读取有些慢,就想用.mat标准格式存取,而且Matlab有自带API
C程序读取.mat,网上有教程,而且Matlab官方也有教程和例子,这里就简明介绍,另外本文的方法不用配置路径,代码放到没安装过Matlab的机器上也可以跑,方法如下:

一、保存mat文件

在Matlab中用save函数保存变量到.mat文件(任何格式的变量均可,matrix,struct,cell都能读)

二、读取mat文件

在C程序中,用对应的函数,打开和读取该文件即可

大功告成!

.
.
.
详细参考,官方文档,MAT-File API和其相关链接,包含了从环境配置,到C的API,足够实现读mat的需求了
http://cn.mathworks.com/help/matlab/read-and-write-matlab-mat-files-in-c-c-and-fortran.html
对应源码在以下目录

matlabroot\extern\examples\eng_mat

三、挣脱依赖

为了让不装Matlab的机器也能跑,饼哥放弃设置引用路径,而将所有依赖项都复制到项目目录下,需要以下这些文件:

libmat.lib
libmx.lib
mat.h
matrix.h
tmwtypes.h

简明教程 C程序读取.mat格式的Matlab数据文件_第1张图片

这些dll是我运行exe缺一个,补一个找的,可谓呕心沥血

Q&A

Q: 版本
A: Matlab2015a

Q: 参考
A: http://cn.mathworks.com/help/matlab/read-and-write-matlab-mat-files-in-c-c-and-fortran.html
这篇中文教程,也比较完整 http://blog.csdn.net/left_la/article/details/8206645

Q: 自己写的读取代码各种出错,而且不知原因所在?
A: 一般是内存报错,说明解析时,变量读取的层级有误,说白了读取的C代码写错了
对照官方示例,一层层耐心剖析方能解决

你可能感兴趣的:(简明教程 C程序读取.mat格式的Matlab数据文件)