董为国:《深入浅出MATLAB7.x混合编程》
二进制文件
Matlab对二进制文件的读写需要使用低级文件命令。和对文本文件的读写一样,使用低级命令处理二进制文件包括3个步骤:打开文件、相应的文件读写,以及关闭文件。打开/关闭文件和文本文件一样,只是要用到不同的参数。只有中间步骤,也就是对文件的读写,需要用到专门适用于二进制文件的命令。
二进制文件的打开/关闭
fopen/fclose
二进制文件的读写
fread
类似于fscanf
fwrite
类似于fprintf
文件读写位置控制:文件被成功打开后,一个内部指针就指向文件开头的前一个字节。随着对文件的读/写命令的执行,这个指针也会在文件中移动,指向文件中不同的位置。
fseek
用来设定文件指针的位置
ftell
用来获得当前文件指针的位置
frewind
用来把文件指针重新复位到文件开头
feof
用来判断是否到达文件末尾
MAT文件
Matlab中读写MAT文件
MAT文件是Matlab使用的一种二进制数据文件。MAT文件不仅保存各变量数据本身,它同时保存变量名以及数据类型等。所以在Matlab中载入某个MAT文件后,可以在当前Matlab工作空间完全再现当初保存该MAT文件时的那些变量。这是MAT文件优于其他文件格式的一个原因。
load
load是Matlab的一个内置函数,其功能是从MAT文件或者文本文件中导入数据。
MAT文件虽然是二进制文件,但是可以在不同计算机平台上使用。save将当前计算机上对于二进制数据的字节存储顺序在MAT文件中保存数据。
save
save也是Matlab的一个内置函数,其功能是把当前的Matlab工作空间中的一个或者多个变量存入外部文件。
save也可以在不同的计算机平台上使用,并且能够根据目标计算机对于二进制数据的字节存储顺序而正确地读取数据。
C++中读写MAT文件
利用Matlab的MAT编程接口函数
matOpen
matClose
matGetDir
matGetFp
matGetVariable
matPutVariable
matGetNextVariable
matDeleteVariable
matPutVariableAsGlobal
matGetVariableInfo
matGetNextVariableInfo
头文件mat.h包含了这些函数的定义,库函数libmat.lib包含了这些函数代码,libmat.lib又依赖于libmx.lib。
普通C++程序中读取MAT文件内容
前面介绍了如何在C/C++程序中利用Matlab提供的接口函数进行MAT文件读写。不过所开发出的程序在运行时需要Matlab提供的动态链接库函数。MathWorks提供了Matlab 6.x版本所对应的动态链接库,但是没有提供Matlab 7.x的动态链接库。