dlmwrite函数用于向文档中写入数据,其功能强于csvwrite函数。dlmwrite函数的调用格式为:
● dlmwrite('filename', M),将矩阵M的数据写入文件filename中,以逗号分隔。
● dlmwrite('filename', M, 'D'),将矩阵M的数据写入文件filename中,采用指定的分隔符分隔数据,如果需要tab键,可以用“\\t”指定。
● dlmwrite('filename', M, 'D', R, C),指定写入数据的起始位置。 ● dlmwrite('filename', M, attribute1, value1, attribute2, value2, ...),指定任意数目的参数,可以指定的参数见下表。 ● dlmwrite('filename', M, '-append'),如果filename指定的文件存在,在文件后面写入数据,不指定时则覆盖原文件。 ● dlmwrite('filename', M, '-append', attribute-value list),叙写文件,并指定参数。
● dlmwrite 函数的可用参数如表13-2所示。 表13-2 dlmwrite函数的可用参数 参 数 名 功 能 delimiter 用于指定分隔符 newline
用于指定换行符,可以选择“pc”或者“unix”
roffset
行偏差,指定文件第一行的位置,roffset 的基数为 0 coffset
列偏差,指定文件第一列的位置,coffset 的基数为 0 precision
指定精确度,可以指定精确维数,或者采用 c 语言的格式,如“.5f”
3. textread,textscan
当文件的格式已知时,可以利用textread函数和textscan函数读入。这里只介绍这两个函数应用的实例。 例13-5 通过%读入文件,按照原有格式读取。 文件的内容为:
Sally Level1 12.34 45 Yes 在命令窗口中输入:
>>
[names,
types,
x,
y,
answer]
=
textread('D:\\mat.txt','%s %s %f %d %s', 1) 得到结果为: names = 'Sally' types = 'Level1'
x = 12.3400 y = 45 answer = 'Yes'
例13-6 函数csvread和csvwrite的应用 Sally Level1 12.34 45 1.23e10 inf NaN Yes Joe Level2 23.54 60 9e19 -inf 0.001 No Bill Level3 34.90 12 2e5 10 100 No >> fid = fopen('D:\\mat.txt');
>> C = textscan(fid, '%s %s ó2 ? %u %f %f %s'); >> fclose(fid); 13.3 低级文件I/O
本节介绍一些基本的文件操作,这些操作如表13-3所示。 表13-3 MATLAB的基本文件操作 函 数 功 能 fclose 关闭打开的文件
feof
判断是否为文件结尾 ferror
文件输入输出中的错误查找 fgetl
读入一行,忽略换行符 fgets
读入一行,直到换行符 fopen
打开文件,或者获取打开文件的信息 fprintf
格式化输入数据到文件 fread
从文件中读取二进制数据 frewind
将文件的位置指针移至文件开头位置 fscanf 格式化读入 fseek
设置文件位置指针 ftell 文件位置指针
fwrite 向文件中写入数据
下面重点介绍函数fprintf。该函数的调用格式如下: count = fprintf(fid, format, A, ...),该语句将矩阵A及后面其他参数中数字的实部以 format 指定的格式写入到fid指定的文件中,返回写入数据的字节数。
上面语句中,参数format由%开头,共可由4个部分组成,分别如下:
● 标记(flag),为可选部分。 ● 宽度和精度指示,为可选部分。 ● 类型标志符,为可选部分。 ● 转换字符,为必需部分。 1. 标记
标记用于控制输出的对齐方式,可以选择的内容如表13-4所示。
表13-4 标记的可选内容 函 数 功 能 示 例 负号(-)
在参数左侧进行判别