MATLAB系列08:输入/输入函数
- 8. 输入/输入函数
-
- 8.1 函数textread
- 8.2 关于load和save命令的进一步说明
- 8.3 MATLAB文件过程简介
- 8.4 文件的打开和关闭
-
- 8.4.1 fopen函数
- 8.4.2 fclose函数
- 8.5 二进制 I/O 函数
-
- 8.5.1 fwrite 函数
- 8.5.2 fread函数
- 8.6 格式化 I/O 函数
-
- 8.6.1 fprintf函数
- 8.6.2 格式转换指定符的理解
- 8.6.3 如何使用格式字符串
- 8.6.4 fscanf 函数
- 8.6.5 fgetl函数
- 8.6.6 fgets 函数
- 8.7 格式化和二进制 I/O 函数的比较
- 8.8 文件位置和状态函数
-
- 8.8.1 exist函数
- 8.8.2 函数ferror
- 8.8.3 函数foef
- 8.8.4 函数ftell
- 8.8.5 函数frewind
- 8.8.6 函数fseek
- 8.9 函数uiimport
- 8.10 总结
8. 输入/输入函数
8.1 函数textread
它可以按列读取 ascii 文件中的元素,每一列中可能含有不同的数据类型。这函数读取其他程序生成的数据表时非常地有用。
假设test_input.dat文件如下:
[first, last, blood, gpa, age, answer] =
textread('test_input.dat','%s %s %s %f %d %s')
读取命令和结果:
>> [first, last, blood, gpa, age, answer] =textread('test_input.dat','%s %s %s %f %d %s')
first =
2×1 cell 数组
{
'James'}
{
'Sally'}
last =
2×1 cell 数组
{
'Jones'}
{
'Smith'}
blood =
2×1 cell 数组
{
'O+'}
{
'A+'}
gpa =
3.5100
3.2800
age =
22
23
answer =
2×1 cell 数组
{
'Yes'}
{
'No' }
这个函数可以通过在格式描述符前面加一个星号的方式来跳过某些所选项。例如,下面的语句只从文件只读取 first, last 和 gpa。
>> [first, last, gpa] =textread('test_input.dat','%s %s %*s %f %*d %*s')
first =
2×1 cell 数组
{
'James'}
{
'Sally'}
last =
2×1 cell 数组
{
'Jones'}
{
'Smith'}
gpa =
3.5100
3.2800
函数 textread 要比 load 命令简单有效的多。 load 命令假设输入文件中的所有数据都是同一类型——它不支持在不同的列上有不同的数据。此外,它把所有的数据都存储在一个数据中。相反地,函数 textread 允许每一列都有独立的变量,当和由不同类型的数据组成的列运算时,它更加的方便。
8.2 关于load和save命令的进一步说明
save 命令把 MATLAB 工作区数据存储到硬盘, load 命令把硬盘上的数据拷贝到工作区中。 save 命令即可用特殊的二进制格式 matfile 存储数据,也可用普通的 ascii 码格式存储数据。 save 命令的形式为
save filename [list of variables] [options]
save命令的参数:

load命令参数:

这两个命令的优点:
- 易于使用
- mat文件的平台独立
- mat文件存储数据是高精度的
- mat文件存储了工作区每一个变量的所有信息
8.3 MATLAB文件过程简介
在 MATLAB 中有一种非常灵活的读取/写入文件的方法,不管这个文件是在磁盘还是在磁带上或者是其他的存储介质。这种机制就叫做文件标识(file id)(有时可简写为 fid),当文件被打开,读取,写入或操作时,文件标识是赋值于一个文件的数。文件标识是一个正整数。两种文件标识是公开的——文件标识 1 是标准输出机制,文件标识 2 是标准错误机制(stderr)。其他的文件标识,在文件打开时创立,文件关闭时消逝。
常用控制磁盘文件的输入或输出的函数:

我们可以用 fopen 语句把文件标识传递给磁盘文件或设备,用 fclose 语句把他们从中分开。一旦一个文件用 fopen 语句得到一个文件标识,我们就可以利用 MATLAB 输入输出语句。当我们对这个文件操作完后, fclose 语句关闭并使文件标识无效。当文件打开时,函数 frewind和 fseek 常用于改变当前文件读取和写入的位置。
8.4 文件的打开和关闭
8.4.1 fopen函数
fopen 函数打开一个文件并对返回这个文件的文件标识数。它的基本形式如下:
fid = fopen(filename, permission)
[fid, message] = fopen(filename, permission)
[fid, message] = fopen(filename,permission, format)
其中 filename 是要打开的文件的名字, permission 用于指定打开文件的模式, format 是一个参数字符串,用于指定文件中数据的数字格式。如果文件被成功打开,在这个语句执行之后, fid 将为一个正整数, message 将为一个空字符。如果文件打开失败,在这个语句执行之后, fid 将为-1, message 将为解释错误出现的字符串。
permission 的字符串如表:

对于一些如 PC 一样的平台,它更重要的是区分文本文件和二进制文件。如果文件以文本格式打开,那么一个“t”就应加入到 permission 字符串中(例如“rt”或“rt+”)。如果是以二进制模式找开,那么“b”应加到 permission 字符串中(例如“rb”)。这实际上是不需要的,因为文件默认打开的方式是二进制模式。文本文件和二进制文件在 Unix系统上是没有区别的,所以在这系统上, r 和 b 都不需要。
一些正确应用 fopen 函数的例子:
-
为输入而打开一二进制文件
fid